Skip to content

Cron check reference

The full request/response schema is in the auto-generated API Reference. This page is the human-readable cheat sheet for POST /cron/job and PUT /cron/job/{cron_job_id}.

FieldTypeDefaultDescription
friendly_namestringnoneDisplay name shown in the dashboard. 1 to 99 characters.
check_interval_secondsintrequiredExpected interval between pings. Must be at least 60 and a multiple of 60.
group_notification_idsuuid[]noneNotification groups to fire on state change. Maximum 10, no duplicates, must belong to your account.
tagsstring[]noneFree-form tags. Used for grouping and maintenance-window matching.
stateenumactiveUpdate only. active or paused. Paused checks stop evaluating and alerting.
FieldTypeDescription
iduuidCron check ID. Part of the ping URL.
account_iduuidOwning account. Part of the ping URL.
current_statusenumsuccess or failed.
last_received_atrfc3339 | nullMost recent ping received.
last_checked_atrfc3339 | nullMost recent lateness evaluation.
last_status_change_atrfc3339 | nullWhen current_status last transitioned.
created_atrfc3339When the check was created.
group_notificationsobject[] | nullFull notification-group objects resolved from group_notification_ids.
service_iduuid | nullService this check belongs to.
POST https://ping.siteqwality.com/{account_id}/{cron_job_id}
  • No API key. The URL itself is the credential; treat it like a secret.
  • Only the path is validated (both segments must be valid UUIDs belonging to an existing check). The HTTP method is not checked; POST is the convention.
  • Each received ping is recorded with:
FieldDescription
idUnique receipt ID.
cron_job_idThe check that was pinged.
created_atServer-side receive timestamp.
receiving_addressCaller IP, from X-Forwarded-For.
receiving_headersThe full request-header map. Useful for identifying which host or runner pinged.

Receipts are queryable via GET /cron/job/{job_id}/recent.

Each cron check is evaluated on its own schedule, at the same cadence as check_interval_seconds. At each evaluation the check fails when the newest ping is older than check_interval_seconds, and also when no ping has ever been received. Because evaluation runs at the same cadence as the expected pings, a missed ping is detected between one and two intervals after the last successful ping, depending on how the two schedules line up. The next received ping flips the status back to success at the following evaluation.

GET /cron/job/{job_id}/events returns failure windows:

FieldDescription
idEvent ID.
cron_job_idThe check.
created_atWhen the event row was written.
started_atWhen the failure window opened.
ended_atWhen it closed, null while still failing.
ended_by_cron_job_received_idThe receipt that ended the failure, when it was ended by a ping.
MethodPathPurpose
POST/cron/jobCreate.
GET/cron/job/{cron_job_id}Fetch one check.
PUT/cron/job/{cron_job_id}Update (partial).
DELETE/cron/job/{cron_job_id}Delete.
GET/cron/jobsList.
GET/cron/job/{job_id}/recentRecent ping receipts.
GET/cron/job/{job_id}/eventsStatus-transition events.
GET/cron/job/{job_id}/uptime_percentageUptime percentage and incident count for a date range.