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.
Authorization: Bearer sk_test_...
Idempotency-Key: demo-1
Content-Type: application/jsonBase 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:
{
"error": {
"code": "invalid_request",
"message": "app_id is required",
"request_id": "req_..."
}
}400– validation / invalid body401– missing or invalid API key404– resource missing in this environment409– conflict (for example duplicate uid)429– rate limited; back off and retry5xx– 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.
webhook-id as your idempotency key when applying side effects.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
| Method | Path | Purpose |
|---|---|---|
| POST | /api/v1/messages | Emit an event (idempotent) |
| GET | /api/v1/messages/:id | Fetch a message |
| POST | /api/v1/messages/:id/replay | Replay through pipeline (new deliveries) |
| GET | /api/v1/applications | List applications |
| POST | /api/v1/applications | Create application |
| GET | /api/v1/endpoints | List endpoints |
| POST | /api/v1/endpoints | Create endpoint (returns whsec_ once) |
| POST | /api/v1/endpoints/:id/rotate-secret | Rotate signing secret |
| POST | /api/v1/deliveries/:id/retry | Retry one delivery |
| GET | /api/v1/event-types | List event catalog |
Full OpenAPI: /openapi.yaml · Readable reference: /docs/api/reference · Playground: /docs/api/playground