Skip to content

API Contract

Wakeplane exposes a JSON HTTP API for schedule and run management. The route tables on this page are aligned to internal/api/http.go in the source repo.

Operator warning: Wakeplane currently has no auth or RBAC. Bind it to localhost, a trusted subnet, VPN, Tailscale, or a reverse-proxied private network. Do not expose it directly to the public internet. See Security.

MethodPathDescription
GET/healthzLiveness probe. Returns {"ok":true}.
GET/readyzReadiness probe. Returns {"ok":true,"storage":"ok"} when the store is reachable.
MethodPathDescription
GET/v1/statusOperational status including scheduler timing, worker counts, and run counts.
GET/v1/metricsPrometheus text metrics for schedules, runs, leases, and executor outcomes.
MethodPathDescription
POST/v1/schedulesCreate a schedule. Returns 201 with the full schedule.
GET/v1/schedulesList schedules. Supports enabled, limit, and cursor.
GET/v1/schedules/{id}Get one schedule including computed next_run_at.
PUT/v1/schedules/{id}Replace a schedule. All fields required.
PATCH/v1/schedules/{id}Patch a schedule. Only provided fields change.
DELETE/v1/schedules/{id}Delete a schedule and dependent rows.
POST/v1/schedules/{id}/pausePause a schedule.
POST/v1/schedules/{id}/resumeResume a schedule and recompute next_run_at.
POST/v1/schedules/{id}/triggerCreate a manual run immediately. Requires {"reason":"..."}.
GET/v1/schedules/{id}/runsList runs for one schedule. Supports status, limit, and cursor.
MethodPathDescription
GET/v1/runsList runs across all schedules. Supports schedule_id, status, limit, and cursor.
GET/v1/runs/{id}Get one run including result fields.
GET/v1/runs/{id}/receiptsList execution receipts for a run.
{
"code": "string",
"error": "human-readable message",
"details": []
}
HTTP StatusCodeWhen
400bad_requestMalformed JSON, invalid query parameters, or invalid trigger reason
400validation_failedSchedule create or patch validation failed
404not_foundSchedule or run ID does not exist
500internal_errorUnexpected server error

List endpoints use cursor-based pagination with newest-first ordering.

ParameterApplies toBehavior
limitschedule and run list endpointsDefault 50. Invalid or non-positive values fall back to 50.
cursorschedule and run list endpointsOpaque cursor from a previous response. Invalid values return 400 bad_request.
`enabled=truefalse`GET /v1/schedules
schedule_id=<id>GET /v1/runsFilter runs to a single schedule.
status=<value>run list endpointsAccepted values: cancelled, claimed, dead_lettered, failed, pending, retry_scheduled, running, skipped, succeeded.
  • Request bodies: application/json
  • JSON responses: application/json
  • Metrics response: text/plain; version=0.0.4