Cronbolt

Recurring jobs

Schedule, update, pause, and run HTTP callbacks with five-field cron expressions.

A recurring job creates a run each time its five-field cron schedule is due.

Create a job

Set schedule_type to recurring, then provide url and cron_expression.

curl --fail-with-body -sS -X POST "https://api.cronbolt.com/api/v1/jobs" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $CRONBOLT_API_KEY" \
  -H "Idempotency-Key: weekday-report-v1" \
  -d '{
    "name": "Weekday report",
    "schedule_type": "recurring",
    "cron_expression": "0 9 * * 1-5",
    "timezone": "Asia/Kolkata",
    "method": "POST",
    "url": "https://example.com/webhooks/report",
    "headers": {"Content-Type": "application/json"},
    "body": "{\"source\":\"cronbolt\"}",
    "timeout_seconds": 30,
    "max_retries": 2,
    "retry_backoff_seconds": 30,
    "expected_status_min": 200,
    "expected_status_max": 299,
    "response_contains": "accepted",
    "alert_webhook_url": "https://example.com/webhooks/alerts"
  }'

Cron format

Cronbolt accepts standard five-field cron expressions:

minute hour day-of-month month day-of-week
ExpressionMeaning
*/15 * * * *Every 15 minutes
0 * * * *At the start of every hour
0 9 * * *Every day at 9:00
0 9 * * 1-5Weekdays at 9:00

Use an IANA timezone such as UTC, Asia/Kolkata, or America/New_York.

Preview a schedule

curl --fail-with-body -sS -X POST "https://api.cronbolt.com/api/v1/jobs/preview" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $CRONBOLT_API_KEY" \
  -d '{"cron_expression":"0 9 * * 1-5","timezone":"Asia/Kolkata"}'

The preview returns the next time that matches the expression and timezone.

Update a job

Patch only the fields that should change:

curl --fail-with-body -sS -X PATCH "https://api.cronbolt.com/api/v1/jobs/$JOB_ID" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $CRONBOLT_API_KEY" \
  -d '{"cron_expression":"0 10 * * 1-5","timezone":"Asia/Kolkata"}'

Secrets are write-only. Job responses report whether headers or a body exist, but never return their values.

Pause, resume, or run now

curl --fail-with-body -sS -X POST "https://api.cronbolt.com/api/v1/jobs/$JOB_ID/pause" \
  -H "X-API-Key: $CRONBOLT_API_KEY"

curl --fail-with-body -sS -X POST "https://api.cronbolt.com/api/v1/jobs/$JOB_ID/resume" \
  -H "X-API-Key: $CRONBOLT_API_KEY"

curl --fail-with-body -sS -X POST "https://api.cronbolt.com/api/v1/jobs/$JOB_ID/run-now" \
  -H "X-API-Key: $CRONBOLT_API_KEY" \
  -H "Idempotency-Key: manual-$JOB_ID-v1"

A manual run does not change the recurring schedule.

Reliability defaults

New jobs retry retryable failures twice with exponential backoff starting at 30 seconds. Set max_retries to 0 to disable this. Cronbolt never runs two deliveries for the same job at once. A due recurring occurrence is marked skipped while prior work remains active.

By default, HTTP 200 through 299 means success. Change the expected status range or set response_contains for application-level success. Response bodies are checked in memory and are never stored.

Set alert_webhook_url to receive best-effort, secret-free job.failed and job.recovered events.