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