Cron-Ping

API · V1

Schedule your jobs through the API

Cron Ping calls a public URL on your chosen schedule. Your application performs the task and returns an HTTP response. The dashboard and API share the same jobs and results.

1. Create an API key

Open API keys. Choose a workspace and read or write permissions. A key is displayed once and can be revoked. Keep it server-side; do not embed it in public browser code.

Authorization: Bearer cp_VOTRE_CLE

2. Schedule a job

Save this example as job.json, then send it with curl.

{
  "name": "Synchroniser les commandes",
  "url": "https://votre-site.fr/api/sync",
  "method": "POST",
  "headers": {
    "Content-Type": "application/json"
  },
  "body": "{\"source\":\"cron\"}",
  "scheduleType": "cron",
  "cronExpr": "0 9 * * 1-5",
  "timezone": "Europe/Paris",
  "timeoutSeconds": 10,
  "retries": 0
}
curl -X POST 'https://cron-ping.com/api/v1/jobs' -H "Authorization: Bearer $CRON_PING_API_KEY" -H 'Content-Type: application/json' --data @job.json

HTTP 201 returns job.id and nextRunAt. Interval schedules use scheduleType: period and periodSeconds, for example 3600. Jobs start active; paused: true creates a paused job.

3. Read jobs and results

curl 'https://cron-ping.com/api/v1/jobs?limit=50' -H "Authorization: Bearer $CRON_PING_API_KEY"
curl 'https://cron-ping.com/api/v1/jobs/JOB_ID' -H "Authorization: Bearer $CRON_PING_API_KEY"
curl 'https://cron-ping.com/api/v1/jobs/JOB_ID/runs?limit=50' -H "Authorization: Bearer $CRON_PING_API_KEY"
curl 'https://cron-ping.com/api/v1/jobs/JOB_ID/runs/RUN_ID' -H "Authorization: Bearer $CRON_PING_API_KEY"

Lists return nextCursor: pass it as ?cursor=… for the next page. Results include status, httpStatus, durationMs, attempts, responseBody, truncated, error and timestamps. Header values and internal request snapshots are never returned.

4. Run now

curl -X POST 'https://cron-ping.com/api/v1/jobs/JOB_ID/run' -H "Authorization: Bearer $CRON_PING_API_KEY" -H 'Idempotency-Key: sync-commandes-2026-09-28'

HTTP 202 returns run.id and resultUrl. Poll resultUrl for the final result. Idempotency-Key prevents requeueing the same call while its result is retained. One manual run per job per minute, including when paused. Manual runs do not shift the schedule.

5. Update, pause, delete

curl -X PATCH 'https://cron-ping.com/api/v1/jobs/JOB_ID' -H "Authorization: Bearer $CRON_PING_API_KEY" -H 'Content-Type: application/json' --data '{"cronExpr":"0 8 * * *"}'
curl -X PATCH 'https://cron-ping.com/api/v1/jobs/JOB_ID' -H "Authorization: Bearer $CRON_PING_API_KEY" -H 'Content-Type: application/json' --data '{"action":"pause"}'
curl -X PATCH 'https://cron-ping.com/api/v1/jobs/JOB_ID' -H "Authorization: Bearer $CRON_PING_API_KEY" -H 'Content-Type: application/json' --data '{"action":"resume"}'
curl -X DELETE 'https://cron-ping.com/api/v1/jobs/JOB_ID' -H "Authorization: Bearer $CRON_PING_API_KEY"

PATCH updates supplied fields. headers replaces all headers; {} removes them. Updates and deletion wait for in-flight requests (HTTP 409). Pausing stops future schedules; a request already sent may finish.

Monitoring, alerts and recovery

Any 2xx response is successful. Other codes, connection errors and timeouts are failures. States: queued, running, success, failed, interrupted, missed. First-failure and recovery alerts use your notification channels after retries are exhausted.

Retries default to zero: up to two on transient connection errors, HTTP 429 or 5xx. All attempts share X-Cron-Ping-Run-Id for deduplication in your application. A lost connection does not prove a remote task did not execute. After worker interruption, uncertain outcomes become interrupted without automatic replay. Schedules missed by over one minute become missed without burst catch-up.

Signed execution receipts

New completed HTTP results are signed with Ed25519. Receipts contain dates, status, HTTP code and the stored response preview fingerprint. They attest what Cron Ping observed, not the success of the remote business process. No headers, request body or secret URL is included.

curl 'https://cron-ping.com/api/v1/jobs/JOB_ID/runs/RUN_ID/receipt' -H "Authorization: Bearer $CRON_PING_API_KEY" -o receipt.json
curl 'https://cron-ping.com/api/v1/receipts/key' -o trusted-key.json
curl 'https://cron-ping.com/verify-receipt.mjs' -o verify-receipt.mjs
node verify-receipt.mjs receipt.json trusted-key.json

Pin the public key obtained independently over HTTPS; a receipt-supplied key does not establish trust. Archive this key; after rotation, old receipts require the old trusted key. Editing any field invalidates the signature. Receipts are not qualified electronic signatures or an exactly-once execution guarantee.

Limits

New signups require Pro or Business and a card, with a 14-day trial before the first charge. Plan limits apply during the trial. After expiry, run and edit requests return HTTP 402; history reads and deletion remain available within retention limits.

Scheduled job limits
PlanCombined jobsMinimum intervalTimeoutResults / retention
Pro1001 min30 s10,000 / 90 days
Business1 0001 min60 s100,000 / 365 days

Monitors and scheduled jobs share the quota. 120 API requests per minute per key; 20 active keys per account. Request body: 32 KB. Response preview: 4 KB. Public HTTP(S) URLs on ports 80/443; private and reserved addresses are rejected, including DNS results. Redirects are not followed.

Minute-resolution schedules, IANA time zones and daylight saving changes. Calls may start a few seconds after their due time under load; this is not a real-time scheduler.

Response codes

200 / 201 / 202 · 400 invalid input · 401 invalid key · 402 subscription required · 403 permissions or quota · 404 not found · 409 execution in progress · 413 request too large · 429 rate limit (Retry-After).

OpenAPI · Schedule a job · Heartbeat documentation