/v1/agents is the same thing the dashboard’s agent editor edits.
create
POST /v1/agents creates an agent as a draft.
string
required
up to 120 characters. applies immediately when changed later.
string
required
the persona — who the agent is and how it behaves, up to 8000 characters.
write only the persona: the rules for the chosen language and voice are
appended server-side.
{name} reads a variable,
{{tool_name}} attaches a tool.string
required
the first thing the agent says, up to 1000 characters. may use
{name}.object
the voice.
model is muga, mulberry or spider; mulberry also takes a
named voice and a style description. see voices. defaults to
{ "model": "muga" }.string
english, hinglish or hindi, as the voice engine allows. unset = the
engine’s default.object
background_noise and idle_ladder, both off by default. see
call behaviour.string
a name for the first version, shown in the history. optional.
string
scratch (default) or template, with templateSlug naming the template
from GET /v1/agents/templates.curl
201 with the agent:
string
the short id (
ua_…). use it or the UUID wherever an agent is named.boolean
false until the first deploy. an undeployed agent answers no calls.
string | null
the number this agent answers, once a rented number or
SIP trunk is connected to it.
the live configuration. after a
PATCH, the pending edit is on the
draft, not here, until you deploy.typing
{company} into the prompt declares an account-wide variable named
company (with a blank default) if none exists yet. set its value with
/v1/variables.409 limit_exceeded past that).
deploy
POST /v1/agents/{agent_ref}/deploy promotes the pending draft to the next
version and puts it live. it returns that version.
curl
409 agent_version_no_draft — the agent already
serves its latest edits.
update
PATCH /v1/agents/{agent_ref} takes any subset of the create fields.
namerenames the agent at once.systemInstruction,greeting,ttsConfig,languageandcallSettingsgo to the draft. the live version keeps answering until you deploy.versionNamenames the draft this edit writes. omit it to leave the name alone, sendnullto clear it. sent on its own it renames the existing draft (409 agent_version_no_draft_to_namewhen there is none).
curl
GET /v1/agents/{agent_ref}/versions/draft, then deploy.
versions
a version carries the whole snapshot, not a diff, so any two can be compared
without walking the chain.
call behaviour
callSettings is versioned with the rest of the config and sent to the bot on
every call. both features are off unless enabled.
object
mixes a quiet room tone under the voice.
volume is 0–100 (default 30).object
when the caller stays silent after the agent stops speaking: after
nudge_after_seconds the agent says one short line to bring them back,
presence_after_seconds later it asks whether they are still there, and
hangup_after_seconds after that it says goodbye and ends the call
(endReason: "customer_ended"). any reply restarts the ladder. each timing
is 1–120 seconds.callSettings for one
call without touching the agent.
list, get, delete
curl
GET /v1/agents returns { "items": [...], "count": n }, newest first.
DELETE answers 204; the agent’s calls stay in history and a number
connected to it is detached.
this agent’s calls
read the account’s call history withGET /v1/calls and keep the ones whose
agentSlug is this agent’s handle. every call carries its transcript and a
short-lived recording url.
templates
GET /v1/agents/templates lists the starter templates the dashboard offers.
to create from one, copy its systemInstruction, greeting and ttsConfig
into POST /v1/agents with "source": "template" and its slug as
templateSlug.
next: voices.