POST /ping
Request
POST /pingAuthorization: Bearer <api_key>Content-Type: application/jsonBody fields
| Field | Type | Required | Description |
|---|---|---|---|
event_type | string | yes | ping, stream_event, or custom |
monitor | string | yes | Monitor name (slug, max 255 chars) |
status | string | yes* | Event status — see Event Types & States |
duration | float | no | Execution time in seconds |
exit_code | int | no | Process exit code |
host | string | no | Hostname that ran the job |
message | string | no | Free-form message / log excerpt |
timestamp | int | no | Unix timestamp (defaults to now) |
*For event_type: "ping" the field name is status. Allowed values: run, complete, fail, skip.
Example — job lifecycle
// Job started{ "event_type": "ping", "monitor": "db-backup", "status": "run", "host": "server-01"}
// Job finished successfully{ "event_type": "ping", "monitor": "db-backup", "status": "complete", "duration": 47.3, "exit_code": 0}Example — skip (maintenance window)
{ "event_type": "ping", "monitor": "payment-service", "status": "skip"}For quick shell one-liners without a JSON body, use GET /ping — it accepts the same status values and supports ?api_key= URL authentication.
Response
200 OK
{ "status": "success" }400 Bad Request
{ "error": "required field missing: status" }401 Unauthorized
{ "error": "unauthorized" }