Skip to main content
every button in the agents playground has an endpoint behind it, and every one of them takes your api key. build an agent, pick its voice, declare the variables its prompt reads, wire up tools, rent a number or bring your own over SIP, deploy, and put it on the phone — without opening the dashboard.

manage agents

create, configure, deploy, roll back, delete.

voices and languages

what ttsConfig and language may be set to.

variables and tools

{name} placeholders with defaults, filled by your own endpoints.

outbound calls

dial a number and connect the caller to an agent.

phone numbers

rent a number and connect it to an agent for inbound calls.

sip trunks

bring your own carrier numbers.

base url and authentication

the same base URL and key as the rest of the api:
the key needs the agent scope — keys created in the dashboard have it by default. a key without it gets 403 forbidden_scope.
these endpoints change your account: they create agents, rent numbers that cost money, and place calls that are billed. keep the key on your server.

naming an agent

everywhere an agent is named — in a path, in agentId — you can pass either its UUID or its short handle (ua_…). both come back on every agent object.

draft, then deploy

saving an agent never changes what it says on a live call. POST and PATCH write a draft; POST /v1/agents/{agent_ref}/deploy promotes it to a numbered version and puts it live. an agent that has never been deployed (deployed: false) answers no calls and cannot be connected to a number. every deploy is kept: GET /v1/agents/{agent_ref}/versions lists them and POST …/versions/{n}/activate rolls back.

field names

bodies and responses are camelCase (systemInstruction, toNumber). the snake_case spelling is accepted on input too. ids are UUIDs, timestamps are ISO 8601 in UTC, money is in nanos — billionths of the wallet’s currency unit, so 236250000000 nanos INR is ₹236.25.

errors

the same envelope as every other endpoint:
a 422 carries the failing fields:
each endpoint’s page in the api reference lists the exact codes it can answer.

rate limits

each key has its own budget of requests per minute (100 by default; the dashboard shows it on the key). a 429 rate_limited carries limit and current and a Retry-After header. calls themselves are bounded by your account’s concurrency, not by this — see limits.

from zero to a phone call

1

create an agent

POST /v1/agents with a prompt, a greeting and a voice.
2

deploy it

POST /v1/agents/{agent_ref}/deploy.
3

call someone

POST /v1/calls with the agent and a number. the agent is on the line the moment they answer.
next: manage agents.