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

ExpressionDescription
* * * * *Every minute
*/5 * * * *Every 5 minutes
0 * * * *Every hour
0 0 * * *Every day at midnight
0 9 * * 1-5Weekdays at 9 AM
0 0 1 * *First day of every month
30 2 * * 0Sundays 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

MethodPathDescription
GET/healthHealth check
POST/auth/registerCreate account
POST/auth/loginLogin
GET/jobsList jobs
POST/jobsCreate job
GET/jobs/:idGet job
PATCH/jobs/:idUpdate job
DELETE/jobs/:idDelete job
POST/jobs/:id/pausePause job
POST/jobs/:id/resumeResume job
GET/jobs/:id/logsExecution 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"
}

Related Guides