API Keys & REST API
Manage your cron jobs programmatically — create, update, delete, and trigger runs from your own backend. Available on the Business plan.
Business plan only
API keys require a Business plan. On Free and Pro, use the dashboard to manage jobs.Creating an API key
Go to Settings → API Keys and click Create key. Give it a name so you can tell keys apart (e.g., "CI deploy" or "Main backend"). The full key is shown once — copy it immediately and store it in your secrets manager or environment variables. After you close the dialog, only the prefix is shown.
Keys are shown once
The full API key is only visible immediately after creation. If you lose it, revoke and create a new one — there's no way to retrieve an existing key.Authentication
Pass the key as a Bearer token in every request:
Authorization: Bearer qzx_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Base URL
https://quzenixcron.com/api/v1
Endpoints
| Method | Path | Description |
|---|---|---|
GET | /api/v1/jobs | List all your cron jobs |
POST | /api/v1/jobs | Create a new cron job |
GET | /api/v1/jobs/:id | Get a single job by ID |
PATCH | /api/v1/jobs/:id | Update a job (partial update) |
DELETE | /api/v1/jobs/:id | Delete a job |
List jobs
GET /api/v1/jobs
Authorization: Bearer <key>
Response 200:
{
"jobs": [
{
"id": "uuid",
"name": "Telegram Bot Keepalive",
"url": "https://your-bot.onrender.com/ping",
"method": "GET",
"cron_expression": "*/5 * * * *",
"timezone": "UTC",
"is_active": true,
"next_run_at": "2026-04-27T10:05:00Z",
...
}
]
}Create a job
POST /api/v1/jobs
Authorization: Bearer <key>
Content-Type: application/json
{
"name": "Daily backup trigger",
"url": "https://yourapp.com/internal/backup",
"method": "POST",
"cron_expression": "0 2 * * *",
"timezone": "UTC",
"headers": { "X-Internal-Secret": "your-secret" },
"body": "{}",
"timeout_seconds": 60,
"max_retries": 1,
"notify_on_failure": true
}
Response 201:
{
"job": { "id": "uuid", ... }
}Update a job
PATCH supports partial updates — only send the fields you want to change.
PATCH /api/v1/jobs/:id
Authorization: Bearer <key>
Content-Type: application/json
{
"cron_expression": "0 3 * * *",
"is_active": false
}
Response 200:
{
"job": { "id": "uuid", ... }
}Delete a job
DELETE /api/v1/jobs/:id
Authorization: Bearer <key>
Response 200:
{
"ok": true
}Job fields reference
| Field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | Up to 100 characters |
url | string | Yes | Must be public HTTP/HTTPS, no private IPs |
method | string | Yes | GET POST PUT PATCH DELETE HEAD |
cron_expression | string | Yes | Standard 5-field cron syntax |
timezone | string | No | IANA tz name, default UTC |
headers | object | No | Key-value pairs, max 8 KB total |
body | string | No | Raw body for POST/PUT/PATCH, max 100 KB |
timeout_seconds | number | No | 1–120, default 30 |
max_retries | number | No | 0–10, default 3 |
retry_delay_seconds | number | No | 10–3600, default 60 |
is_active | boolean | No | true (default) or false to pause |
notify_on_failure | boolean | No | default true |
notify_after_failures | number | No | 1–10, default 1 |
Error responses
| Status | Meaning |
|---|---|
| 401 | Missing or invalid API key |
| 403 | Plan limit reached or interval below minimum for your plan |
| 404 | Job not found (or belongs to a different account) |
| 400 | Validation error — check the error message for details |
| 500 | Server error — email us if it persists |
Revoking a key
Go to Settings → API Keys and click the revoke button next to the key. It stops working immediately. Create a new key if you need to replace it.