Documentation
Everything you need to get started with CronJobPro.
Quick Start
1. Create an account at /signup
2. Create your first job from the dashboard - enter a URL and cron expression
3. Monitor executions in real-time from the job detail page
Cron Expressions
Standard 5-field cron format: minute hour day-of-month month day-of-week
| Expression | Description |
|---|---|
| * * * * * | Every minute |
| */5 * * * * | Every 5 minutes |
| 0 * * * * | Every hour |
| 0 0 * * * | Every day at midnight |
| 0 9 * * 1-5 | Weekdays at 9 AM |
| 0 0 1 * * | First day of every month |
| 30 2 * * 0 | Sundays at 2:30 AM |
REST API
Base URL: https://api.cronjobpro.com
Authentication: Include your API key in the X-Api-Key header, or a JWT in Authorization: Bearer <token>.
Endpoints
| Method | Path | Description |
|---|---|---|
| GET | /health | Health check |
| POST | /auth/register | Create account |
| POST | /auth/login | Login |
| GET | /jobs | List jobs |
| POST | /jobs | Create job |
| GET | /jobs/:id | Get job |
| PATCH | /jobs/:id | Update job |
| DELETE | /jobs/:id | Delete job |
| POST | /jobs/:id/pause | Pause job |
| POST | /jobs/:id/resume | Resume job |
| GET | /jobs/:id/logs | Execution logs |
HMAC Signature Verification
Each request includes an X-CronJobPro-Signature header with format t=timestamp,v1=signature.
Verify by computing HMAC-SHA256(secret, "timestamp.body") and comparing with the v1 value.
const crypto = require('crypto');
function verify(secret, header, body) {
const [tPart, vPart] = header.split(',');
const timestamp = tPart.split('=')[1];
const signature = vPart.split('=')[1];
const expected = crypto
.createHmac('sha256', secret)
.update(timestamp + '.' + body)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expected)
);
}Notifications
CronJobPro can notify you via webhook, Slack, or Discord when jobs fail, succeed, or recover.
Configure notification channels in Settings > Notifications, then enable them per-job.
Webhook Payload
{
"event": "failure",
"job": { "id": "...", "name": "Health Check", "url": "https://..." },
"execution": {
"status": "failure",
"httpStatusCode": 500,
"durationMs": 1234,
"errorMessage": "HTTP 500"
},
"timestamp": "2026-03-07T12:00:00Z"
}