Know when a scheduled process stops running.
Your process pings Flowyn after each run. A ping missing for twice the interval is recorded as a miss, and repeated misses open an incident.
test
GETapi.example.com/health
Healthylast 16 checks · interval 60slatest 184 ms
12 consecutive passing checks. Flowyn requests the URL, records status and latency, and does not touch your API.
What it does
Real product states, not a promise.
Your process pings Flowyn after each run. A ping missing for twice the interval is recorded as a miss, and repeated misses open an incident.
- Your process calls POST /v1/monitors/{id}/ping
- No ping within twice the interval is a miss
- Three misses in a row open an incident
- Works for cron jobs, workers, and agents
Input
A heartbeat monitor with an interval
Output
Received and missed heartbeats, with history
Where it fits
Where it fits
01
Nightly cron jobs
02
Queue workers
03
Backup scripts
API example
One durable request.
POST /v1/monitors. Use an idempotency key on create calls. The full request and response contract is in Flowyn Docs.
POSThttps://api.flowyn.dev/v1/monitors201
curl -X POST https://api.flowyn.dev/v1/monitors \
-H "Authorization: Bearer flw_test_••••" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: hb-nightly-backup" \
-d '{
"name": "Nightly backup",
"type": "heartbeat",
"method": "GET",
"url": "",
"interval_seconds": 86400,
"timeout_ms": 1000,
"assertions": []
}'Frequently asked questions
Where is the exact request contract for Heartbeats?
In Flowyn Docs and the OpenAPI document at https://api.flowyn.dev/openapi/v1.yaml. This page shows the request; the docs page lists every field, status value, error, and limit.
Is the operation durable?
Yes. The operation is stored before any work happens and remains a resource with state, attempts, and error context, not an ephemeral request log.
Do failures stay inspectable?
Yes. Every attempt is recorded. Repeated failures with the same fingerprint are also grouped into an Issue.
Build with Heartbeats.
Create a workspace, make your first call in the test environment, and inspect every attempt.
