API Reference
A REST API over JSON. Predictable resource URLs, standard HTTP status codes, Bearer authentication.
Base URL
https://api.sendibl.com
Interactive OpenAPI docs are served at https://api.sendibl.com/docs.
Authentication
Authenticate with an API key in the Authorization header:
Authorization: Bearer sb_...
/emails, /suppressions) — everything an app needs at runtime. Resource management (domains, webhooks, templates, audiences, broadcasts) is done from the dashboard, which uses your login session.Errors
Errors return a JSON body {"detail": "human-readable message"} with a conventional status code:
| Field | Type | Description |
|---|---|---|
| 401 | status | Missing or invalid API key / session. |
| 403 | status | Not allowed — e.g. sending from an unverified domain. |
| 404 | status | Resource doesn't exist or isn't yours. |
| 422 | status | Request is malformed or fails validation. |
| 429 | status | Monthly send quota exceeded for your plan. |
Pagination
List endpoints that can grow unbounded (GET /emails, GET /suppressions) take limit (default 50, max 100) and offset, returning {"total": n, "data": [...]}.
Timestamps
Every timestamp the API returns (created_at, last_event_at, scheduled_at, webhook created_at, CSV exports) is ISO 8601 in UTC with an explicit Z suffix, e.g. 2026-08-21T14:03:00.123456Z. Timestamps you send (such as scheduled_at) may carry any offset; naive values are read as UTC.