Base URL
Authentication
All API requests require a Bearer token in theAuthorization header:
If you’re using an account-scoped API key, most endpoints require a
workspaceId in the request body or query string. Workspace-scoped keys infer it automatically. See Workspace ID and Request Scope for details on which to use and how to find your workspace ID.Plan access
Every paid plan can use these endpoints:- Contacts (
/v1/contacts) - Make a call (
POST /v1/call, deprecated: usePOST /v1/conversations/call) - Conversation logs (
GET /v1/conversationsandGET /v1/conversations/{id})
- Calls, SMS and email (
POST /v1/conversations/call,/smsand/email) on every plan - WhatsApp, Instagram and Messenger (
POST /v1/conversations/whatsapp,/instagramand/messenger) on Pro and up
403 that names the channel, for example "detail": "Your plan does not include WhatsApp.".
Everything else is for VIP only. That covers agents and their knowledge, actions and settings, custom actions, MCP servers, calendars, phone numbers, the knowledge library, workflows, campaigns, templates, workspaces and workspace billing. Stopping a contact in a campaign is VIP only too, under both its new path and the old /v1/outbound-campaigns path. Each of those pages carries a “VIP plan only” note. A new endpoint is VIP only unless its page says every plan can use it.
On other plans these endpoints return a 403:
402 when the account has no plan, or its subscription is not active.
Request Format
ForPOST, PUT, and PATCH requests, send JSON in the request body:
Response Format
All responses are JSON. Successful responses return the requested data:Errors
Errors follow the RFC 7807 Problem Details format:HTTP Status Codes
Pagination
List endpoints support pagination via query parameters:
Contacts and wallet transactions return
{ items, total, limit, offset, hasMore }: keep adding limit to offset while hasMore is true. Other list endpoints return an array.
Rate Limiting
Write requests on the public API (creating contacts, sending messages, starting calls) run at 1 per second per account. Every key on the account shares that one rate, account keys and workspace keys together.- VIP: writes can queue. If you send 10 in the same second, 1 starts now and the other 9 wait their turn, starting 1 per second. Each waiting request stays open and gets its normal response when it runs. A write that would have to wait more than 9 seconds to start gets a
429. - Other plans: no queue. A second write in the same second gets a
429.
429 comes with a Retry-After header (in seconds) saying when to retry. Read endpoints (GET) are not part of this limit.
Starting a call also checks your plan’s concurrent call limit. At the limit, the call is not placed and you get a 429 such as concurrent call limit reached: 5 of 5 in use, with Retry-After. Calls are never queued. If the limit can’t be checked, you get a 503 with Retry-After, and no call is placed.