curl https://app.cronalive.com/api/v1/ping-domains
{
"data": [
"https://ping.cronalive.com",
"https://ping.cronalive.ru"
]
} | 200 | OK |
curl https://app.cronalive.com/api/v1/checks \ -H "Authorization: Bearer ca_ro_XXXXXXXXXXXXXXXX"
{
"data": [
{
"id": "e4c9ffb6-9d7e-4c1f-9df6-04642b6ad301",
"kind": "heartbeat",
"name": "nightly backup",
"slug": "nightly-backup",
"description": null,
"tags": [
"backups",
"prod"
],
"schedule": {
"kind": "cron",
"cron": "0 3 * * *",
"tz": "Europe/Moscow"
},
"grace_sec": 1800,
"tz": "Europe/Moscow",
"status": "up",
"last_ping_at": "2026-07-22T03:00:12+00:00",
"last_duration_ms": 5230,
"next_deadline_at": "2026-07-23T00:00:00+00:00",
"ping_urls": [
"https://ping.cronalive.com/e4c9ffb6-9d7e-4c1f-9df6-04642b6ad301",
"https://ping.cronalive.ru/e4c9ffb6-9d7e-4c1f-9df6-04642b6ad301"
],
"created_at": "2026-07-01T10:00:00+00:00"
}
]
} | 200 | OK |
Schema: CheckInput
curl https://app.cronalive.com/api/v1/checks \
-H "Authorization: Bearer ca_rw_XXXXXXXXXXXXXXXX" \
-X POST \
-H "Content-Type: application/json" \
-d '{
"name": "nightly backup",
"kind": "heartbeat",
"slug": "nightly-backup",
"tags": [
"backups",
"prod"
],
"tz": "Europe/Moscow",
"grace_sec": 1800,
"schedule": {
"kind": "cron",
"cron": "0 3 * * *"
}
}' {
"data": {
"id": "e4c9ffb6-9d7e-4c1f-9df6-04642b6ad301",
"kind": "heartbeat",
"name": "nightly backup",
"slug": "nightly-backup",
"description": null,
"tags": [
"backups",
"prod"
],
"schedule": {
"kind": "cron",
"cron": "0 3 * * *",
"tz": "Europe/Moscow"
},
"grace_sec": 1800,
"tz": "Europe/Moscow",
"status": "new",
"last_ping_at": null,
"last_duration_ms": null,
"next_deadline_at": null,
"ping_urls": [
"https://ping.cronalive.com/e4c9ffb6-9d7e-4c1f-9df6-04642b6ad301",
"https://ping.cronalive.ru/e4c9ffb6-9d7e-4c1f-9df6-04642b6ad301"
],
"created_at": "2026-07-22T10:00:00+00:00"
}
} | 201 | Created | |
| 422 | Validation error | example{
"message": "The name field is required.",
"errors": {
"name": [
"The name field is required."
]
}
} |
| Name | In | Type | |
|---|---|---|---|
| uuid | path | string · uuid | required |
curl https://app.cronalive.com/api/v1/checks/e4c9ffb6-9d7e-4c1f-9df6-04642b6ad301 \ -H "Authorization: Bearer ca_ro_XXXXXXXXXXXXXXXX"
{
"data": {
"id": "e4c9ffb6-9d7e-4c1f-9df6-04642b6ad301",
"kind": "heartbeat",
"name": "nightly backup",
"slug": "nightly-backup",
"description": null,
"tags": [
"backups",
"prod"
],
"schedule": {
"kind": "cron",
"cron": "0 3 * * *",
"tz": "Europe/Moscow"
},
"grace_sec": 1800,
"tz": "Europe/Moscow",
"status": "up",
"last_ping_at": "2026-07-22T03:00:12+00:00",
"last_duration_ms": 5230,
"next_deadline_at": "2026-07-23T00:00:00+00:00",
"ping_urls": [
"https://ping.cronalive.com/e4c9ffb6-9d7e-4c1f-9df6-04642b6ad301",
"https://ping.cronalive.ru/e4c9ffb6-9d7e-4c1f-9df6-04642b6ad301"
],
"created_at": "2026-07-01T10:00:00+00:00"
}
} | 200 | OK | |
| 404 | Not found |
| Name | In | Type | |
|---|---|---|---|
| uuid | path | string · uuid | required |
Schema: CheckInput
curl https://app.cronalive.com/api/v1/checks/e4c9ffb6-9d7e-4c1f-9df6-04642b6ad301 \
-H "Authorization: Bearer ca_rw_XXXXXXXXXXXXXXXX" \
-X PATCH \
-H "Content-Type: application/json" \
-d '{
"name": "nightly backup",
"kind": "heartbeat",
"slug": "nightly-backup",
"tags": [
"backups",
"prod"
],
"tz": "Europe/Moscow",
"grace_sec": 1800,
"schedule": {
"kind": "cron",
"cron": "0 3 * * *"
}
}' {
"data": {
"id": "e4c9ffb6-9d7e-4c1f-9df6-04642b6ad301",
"kind": "heartbeat",
"name": "nightly backup",
"slug": "nightly-backup",
"description": null,
"tags": [
"backups",
"prod"
],
"schedule": {
"kind": "cron",
"cron": "0 3 * * *",
"tz": "Europe/Moscow"
},
"grace_sec": 1800,
"tz": "Europe/Moscow",
"status": "up",
"last_ping_at": "2026-07-22T03:00:12+00:00",
"last_duration_ms": 5230,
"next_deadline_at": "2026-07-23T00:00:00+00:00",
"ping_urls": [
"https://ping.cronalive.com/e4c9ffb6-9d7e-4c1f-9df6-04642b6ad301",
"https://ping.cronalive.ru/e4c9ffb6-9d7e-4c1f-9df6-04642b6ad301"
],
"created_at": "2026-07-01T10:00:00+00:00"
}
} | 200 | Updated | |
| 422 | Validation error | example{
"message": "The name field is required.",
"errors": {
"name": [
"The name field is required."
]
}
} |
| Name | In | Type | |
|---|---|---|---|
| uuid | path | string · uuid | required |
curl https://app.cronalive.com/api/v1/checks/e4c9ffb6-9d7e-4c1f-9df6-04642b6ad301 \ -H "Authorization: Bearer ca_rw_XXXXXXXXXXXXXXXX" \ -X DELETE
| 204 | Deleted |
The check flips to `paused`: pings are still recorded, but the status and deadlines are not touched until `resume`.
| Name | In | Type | |
|---|---|---|---|
| uuid | path | string · uuid | required |
curl https://app.cronalive.com/api/v1/checks/e4c9ffb6-9d7e-4c1f-9df6-04642b6ad301/pause \ -H "Authorization: Bearer ca_rw_XXXXXXXXXXXXXXXX" \ -X POST
{
"data": {
"id": "e4c9ffb6-9d7e-4c1f-9df6-04642b6ad301",
"kind": "heartbeat",
"name": "nightly backup",
"slug": "nightly-backup",
"description": null,
"tags": [
"backups",
"prod"
],
"schedule": {
"kind": "cron",
"cron": "0 3 * * *",
"tz": "Europe/Moscow"
},
"grace_sec": 1800,
"tz": "Europe/Moscow",
"status": "paused",
"last_ping_at": "2026-07-22T03:00:12+00:00",
"last_duration_ms": 5230,
"next_deadline_at": null,
"ping_urls": [
"https://ping.cronalive.com/e4c9ffb6-9d7e-4c1f-9df6-04642b6ad301",
"https://ping.cronalive.ru/e4c9ffb6-9d7e-4c1f-9df6-04642b6ad301"
],
"created_at": "2026-07-01T10:00:00+00:00"
}
} | 200 | Paused |
Returns to `up` with a fresh deadline counted from the resume moment (or to `new` if the check has never been pinged).
| Name | In | Type | |
|---|---|---|---|
| uuid | path | string · uuid | required |
curl https://app.cronalive.com/api/v1/checks/e4c9ffb6-9d7e-4c1f-9df6-04642b6ad301/resume \ -H "Authorization: Bearer ca_rw_XXXXXXXXXXXXXXXX" \ -X POST
{
"data": {
"id": "e4c9ffb6-9d7e-4c1f-9df6-04642b6ad301",
"kind": "heartbeat",
"name": "nightly backup",
"slug": "nightly-backup",
"description": null,
"tags": [
"backups",
"prod"
],
"schedule": {
"kind": "cron",
"cron": "0 3 * * *",
"tz": "Europe/Moscow"
},
"grace_sec": 1800,
"tz": "Europe/Moscow",
"status": "up",
"last_ping_at": "2026-07-22T03:00:12+00:00",
"last_duration_ms": 5230,
"next_deadline_at": "2026-07-23T00:00:00+00:00",
"ping_urls": [
"https://ping.cronalive.com/e4c9ffb6-9d7e-4c1f-9df6-04642b6ad301",
"https://ping.cronalive.ru/e4c9ffb6-9d7e-4c1f-9df6-04642b6ad301"
],
"created_at": "2026-07-01T10:00:00+00:00"
}
} | 200 | Resumed |
| Name | In | Type | |
|---|---|---|---|
| uuid | path | string · uuid | required |
| limit | query | integer | default: 25 |
curl https://app.cronalive.com/api/v1/checks/e4c9ffb6-9d7e-4c1f-9df6-04642b6ad301/pings \ -H "Authorization: Bearer ca_ro_XXXXXXXXXXXXXXXX"
{
"data": [
{
"ts": "2026-07-22T03:00:12.482913+00:00",
"type": "success",
"exit_status": 0,
"source_ip": "203.0.113.7",
"method": "GET",
"body_size": 0,
"duration_ms": 5230,
"body": null,
"user_agent": "curl/8.5.0"
}
]
} | 200 | OK |
| Name | In | Type | |
|---|---|---|---|
| uuid | path | string · uuid | required |
| limit | query | integer | default: 25 |
curl https://app.cronalive.com/api/v1/checks/e4c9ffb6-9d7e-4c1f-9df6-04642b6ad301/flips \ -H "Authorization: Bearer ca_ro_XXXXXXXXXXXXXXXX"
{
"data": [
{
"ts": "2026-07-21T00:30:00+00:00",
"old_status": "late",
"new_status": "down",
"reason": "timeout"
}
]
} | 200 | OK |
curl https://app.cronalive.com/api/v1/integrations \ -H "Authorization: Bearer ca_ro_XXXXXXXXXXXXXXXX"
{
"data": [
{
"id": 7,
"kind": "telegram",
"name": "ops chat",
"enabled": true,
"events": [
"down",
"up"
],
"tags": [
"prod"
],
"quiet_hours": {
"from": "23:00",
"to": "08:00",
"tz": "Europe/Moscow"
},
"reminders": [
1,
24
],
"created_at": "2026-07-10T09:00:00+00:00"
}
]
} | 200 | OK |
Schema: IntegrationInput
curl https://app.cronalive.com/api/v1/integrations \
-H "Authorization: Bearer ca_rw_XXXXXXXXXXXXXXXX" \
-X POST \
-H "Content-Type: application/json" \
-d '{
"kind": "telegram",
"name": "ops chat",
"events": [
"down",
"up"
],
"tags": [
"prod"
],
"quiet_hours": {
"from": "23:00",
"to": "08:00",
"tz": "Europe/Moscow"
},
"reminders": [
1,
24
]
}' {
"data": {
"id": 7,
"kind": "telegram",
"name": "ops chat",
"enabled": true,
"events": [
"down",
"up"
],
"tags": [
"prod"
],
"quiet_hours": {
"from": "23:00",
"to": "08:00",
"tz": "Europe/Moscow"
},
"reminders": [
1,
24
],
"created_at": "2026-07-10T09:00:00+00:00"
},
"telegram_deep_link": "https://t.me/CronAliveBot?start=Zx91…"
} | 201 | Created | |
| 422 | Validation error | example{
"message": "The name field is required.",
"errors": {
"name": [
"The name field is required."
]
}
} |
| Name | In | Type | |
|---|---|---|---|
| id | path | integer | required |
Schema: IntegrationInput
curl https://app.cronalive.com/api/v1/integrations/7 \
-H "Authorization: Bearer ca_rw_XXXXXXXXXXXXXXXX" \
-X PATCH \
-H "Content-Type: application/json" \
-d '{
"kind": "telegram",
"name": "ops chat",
"events": [
"down",
"up"
],
"tags": [
"prod"
],
"quiet_hours": {
"from": "23:00",
"to": "08:00",
"tz": "Europe/Moscow"
},
"reminders": [
1,
24
]
}' {
"data": {
"id": 7,
"kind": "telegram",
"name": "ops chat",
"enabled": true,
"events": [
"down",
"up"
],
"tags": [
"prod"
],
"quiet_hours": {
"from": "23:00",
"to": "08:00",
"tz": "Europe/Moscow"
},
"reminders": [
1,
24
],
"created_at": "2026-07-10T09:00:00+00:00"
}
} | 200 | Updated |
| Name | In | Type | |
|---|---|---|---|
| id | path | integer | required |
curl https://app.cronalive.com/api/v1/integrations/7 \ -H "Authorization: Bearer ca_rw_XXXXXXXXXXXXXXXX" \ -X DELETE
| 204 | Deleted |
period | cron | oncalendar (systemd)
{
"type": "object",
"description": "period | cron | oncalendar (systemd)",
"oneOf": [
{
"properties": {
"kind": {
"const": "period"
},
"period_sec": {
"type": "integer",
"minimum": 60,
"maximum": 31536000,
"example": 3600
},
"tz": {
"type": "string",
"example": "UTC"
}
}
},
{
"properties": {
"kind": {
"const": "cron"
},
"cron": {
"type": "string",
"description": "5-field cron expression",
"example": "0 3 * * *"
},
"tz": {
"type": "string",
"example": "Europe/Moscow"
}
}
},
{
"properties": {
"kind": {
"const": "oncalendar"
},
"oncalendar": {
"type": "string",
"description": "systemd OnCalendar expression",
"example": "Mon..Fri 09:00"
},
"tz": {
"type": "string",
"example": "UTC"
}
}
}
],
"example": {
"kind": "cron",
"cron": "0 3 * * *",
"tz": "Europe/Moscow"
}
} {
"kind": "cron",
"cron": "0 3 * * *",
"tz": "Europe/Moscow"
} | Field | Type | |
|---|---|---|
| name | string | required |
| kind | string (heartbeat | http) | default: "heartbeat" |
| slug | string | |
| description | string | |
| tags | array<string> | |
| tz | string | default: "UTC" |
| grace_sec | integer | required |
| schedule | Schedule | required |
| http_config | object | Required when kind=http |
{
"name": "nightly backup",
"kind": "heartbeat",
"slug": "nightly-backup",
"tags": [
"backups",
"prod"
],
"tz": "Europe/Moscow",
"grace_sec": 1800,
"schedule": {
"kind": "cron",
"cron": "0 3 * * *"
}
} | Field | Type | |
|---|---|---|
| id | string · uuid | |
| kind | string (heartbeat | http) | |
| name | string | |
| slug | string | null | |
| description | string | null | |
| tags | array<string> | |
| schedule | Schedule | |
| grace_sec | integer | |
| tz | string | |
| status | string (new | up | late | down | paused) | |
| last_ping_at | string | null · date-time | |
| last_duration_ms | integer | null | |
| next_deadline_at | string | null · date-time | |
| ping_urls | array<string> | |
| created_at | string · date-time |
{
"id": "e4c9ffb6-9d7e-4c1f-9df6-04642b6ad301",
"kind": "heartbeat",
"name": "nightly backup",
"slug": "nightly-backup",
"description": null,
"tags": [
"backups",
"prod"
],
"schedule": {
"kind": "cron",
"cron": "0 3 * * *",
"tz": "Europe/Moscow"
},
"grace_sec": 1800,
"tz": "Europe/Moscow",
"status": "up",
"last_ping_at": "2026-07-22T03:00:12+00:00",
"last_duration_ms": 5230,
"next_deadline_at": "2026-07-23T00:00:00+00:00",
"ping_urls": [
"https://ping.cronalive.com/e4c9ffb6-9d7e-4c1f-9df6-04642b6ad301",
"https://ping.cronalive.ru/e4c9ffb6-9d7e-4c1f-9df6-04642b6ad301"
],
"created_at": "2026-07-01T10:00:00+00:00"
} | Field | Type | |
|---|---|---|
| ts | string · date-time | |
| type | string (success | start | fail | exit | log) | |
| exit_status | integer | null | |
| source_ip | string | null | |
| method | string | |
| body_size | integer | |
| duration_ms | integer | null | |
| body | string | null | Decrypted POST body (truncated to 2 KB) |
| user_agent | string | null |
{
"ts": "2026-07-22T03:00:12.482913+00:00",
"type": "success",
"exit_status": 0,
"source_ip": "203.0.113.7",
"method": "GET",
"body_size": 0,
"duration_ms": 5230,
"body": null,
"user_agent": "curl/8.5.0"
} | Field | Type | |
|---|---|---|
| ts | string · date-time | |
| old_status | string (new | up | late | down | paused) | |
| new_status | string (new | up | late | down | paused) | |
| reason | string (timeout | fail | exit | ping | manual | resumed | quota) |
{
"ts": "2026-07-21T00:30:00+00:00",
"old_status": "late",
"new_status": "down",
"reason": "timeout"
} | Field | Type | |
|---|---|---|
| kind | string (telegram | email | webhook | slack | discord | mattermost | sms | pagerduty) | required |
| name | string | required |
| events | array<string> | required |
| tags | array<string> | Only checks with these tags; null = all |
| enabled | boolean | default: true |
| quiet_hours | object | |
| reminders | array<integer> | Repeat reminders while down, hours |
| config | object | Channel-specific (not required for telegram — it is linked via the deep link): email → {email}, webhook → {url, secret?, body_template?, content_type?} (body_template supports {{event}}, {{check_id}}, {{check_name}}, {{status}}, {{previous_status}}, {{reason}}, {{ts}}, {{tags}}, {{subject}}, {{message}}; values are JSON-escaped when content_type is application/json), slack/discord/mattermost → {webhook_url}, sms → {phone}, pagerduty → {routing_key} |
{
"kind": "telegram",
"name": "ops chat",
"events": [
"down",
"up"
],
"tags": [
"prod"
],
"quiet_hours": {
"from": "23:00",
"to": "08:00",
"tz": "Europe/Moscow"
},
"reminders": [
1,
24
]
} Channel secrets (config) are never returned by the API
| Field | Type | |
|---|---|---|
| id | integer | |
| kind | string (telegram | email | webhook | slack | discord | mattermost | sms | pagerduty) | |
| name | string | |
| enabled | boolean | |
| events | array<string> | |
| tags | array | null<string> | |
| quiet_hours | object | null | |
| reminders | array | null<integer> | |
| created_at | string · date-time |
{
"id": 7,
"kind": "telegram",
"name": "ops chat",
"enabled": true,
"events": [
"down",
"up"
],
"tags": [
"prod"
],
"quiet_hours": {
"from": "23:00",
"to": "08:00",
"tz": "Europe/Moscow"
},
"reminders": [
1,
24
],
"created_at": "2026-07-10T09:00:00+00:00"
}