Skip to content

Schedules API

GET /api/v1/schedules?project_id=...&scheduler=celery-beat

Response:

{
"items": [
{
"id": "...",
"scheduler": "celery-beat",
"name": "nightly-digest",
"task": "emails.send_digest",
"cron": "0 3 * * *",
"args": [],
"kwargs": {"variant": "full"},
"enabled": true,
"last_run_at": "...",
"next_run_at": "..."
}
],
"next_cursor": null,
"has_more": false
}
POST /api/v1/schedules

Role: admin. Body:

{
"project_id": "...",
"scheduler": "celery-beat",
"name": "nightly-digest",
"task": "emails.send_digest",
"cron": "0 3 * * *",
"kwargs": {"variant": "full"},
"enabled": true
}

Returns 201 Created with the new schedule. Returns 409 if scheduler is read-only.

PATCH /api/v1/schedules/{id}

Any subset of fields. Role: admin.

POST /api/v1/schedules/{id}/pause
POST /api/v1/schedules/{id}/resume

Role: admin.

DELETE /api/v1/schedules/{id}

Role: admin. Returns 204 No Content.

See schedulers overview for the full matrix. Read-only schedulers return 409 scheduler_read_only on write operations.