Get started
Documentation

Quick start

Create a check in the dashboard to get a unique ping URL. Then it's a single line in your code.

crontab

*/5 * * * * my-job && curl -fsS -m 10 https://ping.cronalive.com/<uuid> > /dev/null

systemd

[Service]
ExecStartPost=/usr/bin/curl -fsS -m 10 https://ping.cronalive.com/<uuid>
# or with the exit status (0 = success):
ExecStopPost=/usr/bin/curl -fsS https://ping.cronalive.com/<uuid>/$EXIT_STATUS

Laravel

composer require cronalive/laravel

// routes/console.php
$schedule->command('backup:run')
    ->daily()
    ->pingCronalive('<uuid>');

// or auto-provision a check by slug — no dashboard needed:
$schedule->command('etl:run')->hourly()->pingCronaliveSlug('etl-run');

Python

pip install cronalive

@cronalive.monitor('<uuid>')
def nightly_job(): ...

# or the CLI wrapper:
cronalive run --id <uuid> -- /usr/local/bin/backup.sh

Node

npm i cronalive

import { monitored } from 'cronalive';
await monitored('<uuid>', () => runJob());

Ping signals

A POST body (up to 100 KB) is stored in the ping log.

Slug addressing & auto-provisioning

Ping by name instead of UUID: https://ping.cronalive.com/<ping-key>/<slug>. The first ping with ?create=1 creates the check itself — handy in deploy scripts. The new check's schedule comes from query parameters:

# simple period: period 60–31536000 s, grace 0–2592000 s
curl "https://ping.cronalive.com/<ping-key>/etl-run?create=1&period=3600&grace=300"

# or a cron expression with a timezone (tz defaults to UTC)
curl "https://ping.cronalive.com/<ping-key>/backup?create=1&cron=30+3+*+*+*&tz=Europe/Moscow"

Ping delivery resilience

There are multiple ping domains; dashboard snippets include a fallback automatically, and SDKs fetch the current list from GET /api/v1/ping-domains.

REST API

Full reference — API Reference (openapi.yaml). Authenticate with a project key: read-write (ca_rw_…) for management, read-only (ca_ro_…) for reads. Issue keys in the dashboard under Projects → API keys; a key is shown once, only its hash is stored.

curl -H "Authorization: Bearer ca_ro_..." \
  https://app.cronalive.com/api/v1/checks