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

MethodPathDescription
GET/api/v1/jobsList all your cron jobs
POST/api/v1/jobsCreate a new cron job
GET/api/v1/jobs/:idGet a single job by ID
PATCH/api/v1/jobs/:idUpdate a job (partial update)
DELETE/api/v1/jobs/:idDelete 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

FieldTypeRequiredNotes
namestringYesUp to 100 characters
urlstringYesMust be public HTTP/HTTPS, no private IPs
methodstringYesGET POST PUT PATCH DELETE HEAD
cron_expressionstringYesStandard 5-field cron syntax
timezonestringNoIANA tz name, default UTC
headersobjectNoKey-value pairs, max 8 KB total
bodystringNoRaw body for POST/PUT/PATCH, max 100 KB
timeout_secondsnumberNo1–120, default 30
max_retriesnumberNo0–10, default 3
retry_delay_secondsnumberNo10–3600, default 60
is_activebooleanNotrue (default) or false to pause
notify_on_failurebooleanNodefault true
notify_after_failuresnumberNo1–10, default 1

Error responses

StatusMeaning
401Missing or invalid API key
403Plan limit reached or interval below minimum for your plan
404Job not found (or belongs to a different account)
400Validation error — check the error message for details
500Server 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.