This documents the v1 product. It is kept for integrations already running
on it. If you are building something new, start with the
Quickstart.
v1 or v2?v1 has the broad surface: inbound calls, phone-number purchase, knowledge
base/RAG, API tools, campaigns, post-call analysis. v2 has the clean
one: one auth header,
GET on calls, a wallet API and idempotency — but only
outbound calls and agents. They address the same workspace and can run side by
side. See the mapping table.Hosts, not prefixes
Workspaces
Onboard, archive, health. Reference.
Assistants
The v1 equivalent of an agent. Reference.
Calls
Initiate, abort, update payload, web calls. Reference.
Webhooks
15 event types and the
x-signature scheme. Reference.Authentication
Every request exceptGET /health carries two key headers. Workspace-scoped
endpoints add a third.
admin or organization_admin role, carried as a JWT bearer token.
v1 pairs are issued with your account. For a new v2 key you do not need to ask
anyone — create it in the console under
Developers, and see Migrating from v1.
The
x-private-key is a secret and the webhook signing key. Never put it in
a browser, a mobile app, or a repo.Entity hierarchy
6690a1b2c3d4e5f600000002.
Response envelopes
v1 wraps most successful responses:code is a number:
Known inconsistencies — these are contract, not bugs to work around
POST /v2/call/initiatereturns200, whilePOST /v2/call/web,POST /v1/number-pool/purchase,POST /v1/admin/tool/apiandPOST /v1/knowledge-base/upload/startreturn201.POST /v2/call/abortreturns a bare{ "message": "…" }with nostatus_codewrapper.PUT /v2/call/{callId}returns{ "status_code", "message" }with nodata.- Some error bodies use
code, some usestatus_code. Read the HTTP status first and the body second.
Status codes
Health
data.underMaintenance before starting a large campaign.
Quickstart
1 — Create a workspace
POST /v2/workspace/onboard/custom. A default telephony number is assigned
automatically in production. How2 — Create an assistant
POST /v1/admin/assistant/create with variant.type: custom and your
agent.systemPrompt. How3 — Make a call
POST /v2/call/initiate with callbackUrl for webhooks.
How