API overview

Server-to-server REST for ingest and management. Readable per-endpoint pages live in the API reference.

Authentication

Send Authorization: Bearer <api_key>. Keys are environment-scoped: sk_test_ for Test, sk_live_ for Live. Create and rotate keys in dashboard Settings. Keys are reveal-once.

http
Authorization: Bearer sk_test_...
Idempotency-Key: demo-1
Content-Type: application/json

Base URLs

  • Production: https://outemit.dev
  • Staging: https://staging.outemit.dev

Everything lives on https://outemit.dev. Use the same host for docs and API calls.

Versioning

Paths are prefixed with /api/v1. Breaking changes ship under a new version prefix. Additive fields may appear on existing responses; treat unknown JSON keys as forward-compatible.

Errors

Errors use a consistent envelope:

json
{
  "error": {
    "code": "invalid_request",
    "message": "app_id is required",
    "request_id": "req_..."
  }
}
  • 400 – validation / invalid body
  • 401 – missing or invalid API key
  • 404 – resource missing in this environment
  • 409 – conflict (for example duplicate uid)
  • 429 – rate limited; back off and retry
  • 5xx – transient; retry with Idempotency-Key on emits

Idempotency

On POST /api/v1/messages, pass Idempotency-Key (header preferred). Identical keys within the retention window return the original message and delivery ids instead of creating duplicates. Safe for client timeouts and automatic retries.

Rate limits

Limits scale with plan (see Pricing). When exceeded, the API returns 429 with a short error message. Prefer bulk-friendly patterns: emit once per business event, not per UI click. Contact support if you need a temporary raise during a migration.

Route map

MethodPathPurpose
POST/api/v1/messagesEmit an event (idempotent)
GET/api/v1/messages/:idFetch a message
POST/api/v1/messages/:id/replayReplay through pipeline (new deliveries)
GET/api/v1/applicationsList applications
POST/api/v1/applicationsCreate application
GET/api/v1/endpointsList endpoints
POST/api/v1/endpointsCreate endpoint (returns whsec_ once)
POST/api/v1/endpoints/:id/rotate-secretRotate signing secret
POST/api/v1/deliveries/:id/retryRetry one delivery
GET/api/v1/event-typesList event catalog

Full OpenAPI: /openapi.yaml · Readable reference: /docs/api/reference · Playground: /docs/api/playground