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.
grace_secondsint0Extra seconds after the interval before a missing ping alerts, 0 to 86400. See how lateness is evaluated.
group_notification_idsuuid[]default groupNotification groups to fire on state change. Maximum 10, no duplicates, must belong to your account. On create, omitting it (or sending null) attaches your account’s default group; [] notifies no one.
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.
  • One optional segment after the ID says what happened:
PathRecordsEffect
/{account_id}/{cron_job_id}pingA successful run.
.../startstartA run began. Not a ping: it does not reset lateness, and it does not update last_received_at.
.../failfailA failed run. The check is evaluated right away and goes down.
.../{exit_code}ping for 0, else failAn exit code from 0 to 255, kept on the receipt.

Any other segment is a 400.

  • 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.
kindping, start or fail.
exit_codeThe exit code sent in the path, if any.
run_msOn a ping or failure that directly follows a start: how long the run took. Returned by GET /cron/job/{job_id}/recent only.

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

An active check that is up goes down when no finished-run ping arrives within check_interval_seconds plus grace_seconds of the newest of its last finished-run ping, its created_at and its last resume. Every check is compared with that deadline once a minute, so the alert follows within about a minute of it. A ping that arrives late but inside the grace counts for that run, and the next deadline is measured from it. A successful ping on a failed check is evaluated right away and brings it back to success. The grace period guide has a worked example.

Changing check_interval_seconds or grace_seconds applies from the last ping at once: the check goes down right away if its last ping is already outside the window, and comes back up if its last ping was a success that fits it. Resuming a paused check starts the wait over from the resume.

Only finished runs count: a start is ignored here. When the newest finished run is a fail, the check fails even though it arrived in time, and the alert says the job reported a failure (with the exit code, if sent) rather than that no ping arrived. A fail on an active check that is up is evaluated at once.

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.