Skip to content
REST API & TypeScript SDK

Schedule cron jobs from your own code.

Create, update, and monitor schedules with a REST API or the official TypeScript SDK. Everything you can do in the dashboard, you can do in code.

Create a schedule in one request.

Every schedule you create in the dashboard is backed by this same API. Pick your language.

curl -X POST "https://cronho.st/api/v1/schedules" \ -H "x-api-key: $CRONHOST_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Daily health check", "endpoint": "https://api.example.com/health", "httpMethod": "GET", "cronExpression": "*/5 * * * *", "timezone": "UTC" }'

Everything the dashboard does, in code.

The REST API and SDK are the same interface the dashboard uses internally.

Any cron expression

Standard 5-field cron syntax, evaluated in the timezone you choose.

Any HTTP endpoint

GET, POST, PUT, PATCH, or DELETE with custom headers and a JSON body.

Automatic retries

Configurable retry count and timeout per schedule, with exponential backoff.

API-key auth

Every request is scoped to your account with a single x-api-key header.

Manual triggers

Fire a schedule on demand from the API, outside its normal cadence.

Bulk create

Create up to 1,000 schedules in a single request when migrating.

Built for real workflows.

A few of the ways developers use the API today.

API health monitoring

Ping a critical endpoint on a fixed interval and get alerted the moment it stops responding.

const healthCheck = await cronhost.createSchedule({ name: "API monitor", cronExpression: "*/5 * * * *", endpoint: "https://api.example.com/health", httpMethod: "GET", maxRetries: 2, });

Webhook automation

Fire a webhook to Slack, Discord, or your own service on a recurring schedule.

const weeklyReport = await cronhost.createSchedule({ name: "Weekly report", cronExpression: "0 9 * * 1", // Mondays at 9am endpoint: "https://hooks.slack.com/services/...", httpMethod: "POST", body: JSON.stringify({ text: "Weekly report is ready." }), });

Scheduled backups

Trigger a backup job on your own infra with a generous timeout for long-running work.

const backup = await cronhost.createSchedule({ name: "Database backup", cronExpression: "0 2 * * *", endpoint: "https://api.example.com/backups/run", httpMethod: "POST", timeoutSeconds: 300, });

Bulk migration

Already running cron somewhere else? Create up to 1,000 schedules in one call.

const result = await cronhost.createSchedule([ { name: "Job A", cronExpression: "0 * * * *", endpoint: "https://api.example.com/a", httpMethod: "GET", }, { name: "Job B", cronExpression: "0 0 * * *", endpoint: "https://api.example.com/b", httpMethod: "POST", }, // up to 1,000 per request ]);

Never wonder if your cron job ran.

Create your first schedule in minutes. See every run, every response, and every failure from one place.