Skip to content

Cron Jobs

Run HTTP requests on a cron schedule.

{
"name": "Daily Sync",
"slug": "daily-sync",
"schedule": "0 2 * * *",
"timezone": "America/New_York",
"endpoint_url": "https://api.example.com/sync",
"http_method": "POST",
"headers": {"Authorization": "Bearer xyz"},
"body": "{\"full_sync\": true}",
"timeout_seconds": 30,
"retry_count": 3,
"retry_delay_seconds": 60,
"enabled": true
}

Standard cron expressions:

Terminal window
0 * * * * # Every hour
0 2 * * * # Daily at 2am
*/15 * * * * # Every 15 minutes
0 9 * * 1 # Mondays at 9am

Timezone-aware. Specify timezone per job (default: UTC).

Background scheduler checks every 30 seconds for due jobs.

On failure:

  1. Wait retry_delay_seconds
  2. Retry up to retry_count times
  3. Mark as failed if still failing

Run tracking:

  • HTTP status
  • Response body
  • Error message (if any)
  • Duration (milliseconds)
  • Status: running, success, failed, timed_out, retrying
POST /api/v1/projects/{slug}/environments/{env}/cron/{jobSlug}/trigger

Runs job immediately, bypassing schedule.

GET /api/v1/projects/{slug}/environments/{env}/cron/{jobSlug}/runs

Returns list of executions with status, duration, response.

GET /api/v1/projects/{slug}/environments/{env}/cron
POST /api/v1/projects/{slug}/environments/{env}/cron
GET /api/v1/projects/{slug}/environments/{env}/cron/{jobSlug}
PATCH /api/v1/projects/{slug}/environments/{env}/cron/{jobSlug}
DELETE /api/v1/projects/{slug}/environments/{env}/cron/{jobSlug}
  • Personal (Free): 5 cron jobs
  • Starter ($5/user): Unlimited cron jobs