Rundunrundun

API reference

The Rundun REST API is a JSON REST API. All communication happens over HTTPS.

Base URL

https://api.rundun.app/v1

All endpoints are versioned under /v1/. Rundun increments to /v2/ only on breaking changes. Additive changes (new fields, new endpoints) do not require a version bump.

Authentication

Every request requires an API key passed as a Bearer token in the Authorization header:

Authorization: Bearer rdk_live_<your-api-key>

API keys are org-scoped. Every resource you create via a key belongs to that organization's quota and billing. You cannot access another org's resources with your key.

Getting an API key

  1. Sign in at my.rundun.app
  2. Go to Settings → API keys → New key
  3. Copy the key immediately — the plaintext is shown once and never again

Key format: rdk_live_ followed by 32 random characters. Example:

rdk_live_a3f9bc4d8e1f2a3b4c5d6e7f8a9b0c1d

Example authenticated request

curl https://api.rundun.app/v1/templates \
  -H "Authorization: Bearer rdk_live_a3f9bc4d8e1f2a3b4c5d6e7f8a9b0c1d"

Key security

  • Store keys as environment variables — never commit them to source control
  • Revoke compromised keys immediately from the dashboard (Settings → API keys → Revoke)
  • Each key has full org access — treat them like passwords

Rate limiting

All requests pass through a Rundun's edge layer that enforces rate limits before reaching the API. Rate-limited responses return 429 with a Retry-After header.

Rate limits are applied per API key. Contact support if you need higher limits for your use case.

Request format

Set Content-Type: application/json on all write requests and send a JSON body:

curl -X POST https://api.rundun.app/v1/runs \
  -H "Authorization: Bearer rdk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "template_id": "t-550e8400-e29b-41d4-a716-446655440000",
    "expires_in_hours": 24
  }'

Response format

All responses are JSON. Successful responses return the relevant resource object directly for single resources, or a data array with pagination metadata for collections:

{
  "data": [ ... ],
  "pagination": {
    "total": 142,
    "page": 1,
    "per_page": 50,
    "next_page": 2
  }
}

Errors

Errors return a JSON body with a machine-readable error code and human-readable message:

{
  "error": "run_not_found",
  "message": "No run with that ID exists in your organisation."
}

HTTP status codes

Code Meaning
200 Success
201 Created
400 Bad request — malformed JSON or missing required field
401 Missing or invalid API key
402 Quota exceeded — upgrade your plan or purchase run credits
404 Resource not found
410 Gone — run has expired
422 Validation error — request body failed schema validation
429 Rate limited — check Retry-After header
500 Server error — contact support if this persists

Endpoints

Resource Description
Runs Dispatch and retrieve checklist runs
Templates Create and manage checklist templates
Webhooks Webhook configuration reference
MCP server Model Context Protocol server for AI agent integrations