Base URL

https://api.rotor.sh

All API endpoints are versioned under /v1/.

Authentication

All /v1/* routes require a workspace API key passed as a Bearer token:

Authorization: Bearer rt_ws_your_key_here

Workspace keys are prefixed rt_ws_ and scoped to a single workspace. Generate them from your workspace settings at rotor.sh.

Rate Limits

Requests are rate-limited per workspace based on your plan:

PlanRequests/minute
Free60
Pro300
Team1,000
EnterpriseCustom

Error Format

All errors return a consistent JSON envelope:

{
  "error": {
    "code": "QUOTA_EXCEEDED",
    "message": "Monthly job quota exceeded for this workspace",
    "details": { "used": 10000, "limit": 10000, "plan": "free" }
  }
}

Tag Groups

The OpenAPI spec below groups endpoints by resource:

  • Queues — create, list, get, delete queues; per-queue metrics
  • Jobs — enqueue single + batch; get status; retry; DLQ management
  • Schedules — create, list, pause, resume, delete recurring jobs
  • Status — workspace health check + quota usage
  • Usage — billing-period execution breakdown
  • Metrics — Prometheus-compatible counters (internal; gated at infra level)

OpenAPI Spec

Download the full machine-readable spec:

curl https://api.rotor.sh/doc -o openapi.json

The spec covers all /v1 endpoints with full request/response schemas. You can import it into Insomnia, Postman, or any OpenAPI-compatible client.

Endpoints at a glance

MethodPathDescription
GET/v1/queuesList all queues
POST/v1/queuesCreate a queue
GET/v1/queues/:nameGet queue config + metrics
PATCH/v1/queues/:nameUpdate queue config
DELETE/v1/queues/:nameDelete a queue
POST/v1/queues/:name/jobsEnqueue a job
POST/v1/queues/:name/jobs/batchEnqueue jobs in bulk
GET/v1/queues/:name/jobsList jobs (with ?state=, ?tag=)
GET/v1/queues/:name/jobs/:idGet job status
DELETE/v1/queues/:name/jobs/:idCancel / delete a job
POST/v1/queues/:name/jobs/:id/retryRetry a failed job
GET/v1/schedulesList schedules
POST/v1/schedulesCreate a schedule
PATCH/v1/schedules/:name/pausePause a schedule
PATCH/v1/schedules/:name/resumeResume a schedule
DELETE/v1/schedules/:nameDelete a schedule
GET/v1/statusWorkspace health + quota
GET/v1/usageBilling-period execution breakdown