HTTP API reference
A practical map of available integration routes. Use /api/v1 through the dashboard proxy, or /v1 directly at the API origin.
Request and response conventions
Send JSON with Content-Type: application/json. Successful responses wrap resources in data. Timestamps use UTC ISO 8601; money uses integer INR paise. Lists accept limit 1–100 (default 50), cursor and tenant_id when using a session. API keys derive tenant scope.
// Success
{ "data": { "id": "...", "status": "queued" } }
// Paginated list
{ "data": [], "next_cursor": "LAST_RECORD_UUID" }
// Failure
{ "error": { "code": "forbidden", "message": "...", "request_id": "..." } }Integration routes
The scopes below apply to API keys. Resource-specific routes derive tenant scope from the resource and validate it against the principal.
| Route | Description | Requirement / access |
|---|---|---|
POST /v1/notifications | Send a message | notifications:write |
GET /v1/notifications or /v1/notifications/:id | List messages / inspect timeline | notifications:read |
POST /v1/notifications/:id/cancel | Cancel before send | notifications:write |
GET /v1/domains | Read sending domains | domains:read |
GET /v1/templates | Read templates and versions | templates:read |
POST /v1/contacts | Upsert contact and optional consent | contacts:write |
GET /v1/contacts | List contacts | contacts:read |
PATCH /v1/contacts/:id | Update contact / consent | contacts:write |
POST /v1/contacts/import | Import up to 1,000 contacts | contacts:write |
GET /v1/lists | Read audience lists | contacts:read |
POST /v1/lists | Create list | contacts:write |
POST /v1/lists/:id/contacts | Add list members | contacts:write |
GET /v1/suppressions | Read suppressed addresses | contacts:read |
GET /v1/campaigns or /v1/campaigns/:id | Read campaigns and counts | campaigns:read |
POST /v1/campaigns | Create draft campaign | campaigns:write |
POST /v1/campaigns/:id/launch | Launch / resume | campaigns:write |
POST /v1/campaigns/:id/pause | Pause remaining dispatch | campaigns:write |
POST /v1/campaigns/:id/cancel | Cancel remaining work | campaigns:write |
GET /v1/overview | Read delivery metrics | metrics:read |
POST /v1/whatsapp/notifications | Send an approved WhatsApp template | notifications:write |
GET /v1/whatsapp/templates | Read synced Meta templates and schema | templates:read |
POST /v1/whatsapp/consents | Record account and purpose specific consent | contacts:write |
POST /v1/whatsapp/campaigns | Create a WhatsApp marketing draft | campaigns:write |
POST /v1/whatsapp/campaigns/:id/launch | Launch or resume after review | campaigns:write |
Dashboard session routes
The dashboard exposes tenant setup, Meta credential connections and rotation, Meta callback verification token recovery, domain verification, template editing, attachment uploads, webhooks, API key management, invitations, team roles, audit history, plans, approval requests, subscriptions, invoices, payments, and billing exports. These are permission-checked session operations; public API keys are not administrator credentials.
Pagination
Pass next_cursor from the previous response as cursor on the next request, keeping the same filters. Lists sort by descending creation time and ID. Stop when next_cursor is absent.
GET /api/v1/contacts?limit=100
GET /api/v1/contacts?limit=100&cursor=LAST_RECORD_UUID