Skip to content
VoxaDocs
Navigation
Open console →

Agents

Restore a version

POST/api/v1/agents/{agent_id}/versions/{version}/restore

Puts an older configuration back. The restore is itself saved as a new version, so it can be undone.

Authorization

An API key (X-API-Key or Authorization: Bearer), or a signed-in member with the agents.edit permission.

X-API-KeyAuthorization: Beareragents.edit

Path parameters

agent_idstringrequired

The agent's id.

versionintegerrequired

The version number.

Query parameters

timezonestringdefault: "Asia/Kolkata"

IANA time zone for every timestamp in the response (at, date, timestamp and *_at fields), as ISO 8601 with the offset. The X-Timezone header works too; the zone used comes back in the X-Timezone response header. An unknown zone is a 400.

Response

200Success.
namestring

1 to 120 characters

welcome_messagestring
system_promptstring
llmobject
Show child attributes
providerstringdefault: "gemini"
modelstringdefault: "gemini-3.5-flash-lite"

An id from Get the catalog (llm_models).

temperaturenumberdefault: 0.4

Higher is more varied, lower is more predictable.

0 to 2

max_tokensintegerdefault: 300

The longest reply, in tokens.

16 to 4096

voiceobject

Text to speech.

Show child attributes
providerstringdefault: "cartesia"
modelstringdefault: "sonic-3.6"

A text-to-speech model from the catalog (tts_models).

voice_idstring

A voice from List voices.

voice_namestring

The voice's name, for display.

languagestringdefault: "hi"

The language the agent speaks.

speednumberdefault: 1

Speaking rate; 1 is normal.

0.6 to 1.5

transcriberobject

Speech to text.

Show child attributes
providerenum<string>default: "cartesia"

cartesia (ink-2, detects language and end of turn) or deepgram (nova-3).

One of:cartesiadeepgram

modelstringdefault: "ink-2"

Set to match the provider automatically.

turn_detectionenum<string>default: "balanced"

Cartesia: how quickly the agent answers once the caller pauses.

One of:responsivebalancedpatient

languagestringdefault: "hi"

Deepgram only: the caller's language.

endpointing_msintegerdefault: 300

Deepgram only: silence that ends a turn.

10 to 3000

keytermsstring[]

Words the recogniser should expect, such as doctor or product names.

at most 100 items

callobject
Show child attributes
max_duration_secondsintegerdefault: 600

The call ends after this long.

30 to 3600

hangup_after_silence_secondsintegerdefault: 15

The call ends after this much silence from the caller.

5 to 120

allow_interruptionsbooleandefault: true

The caller can talk over the agent, which stops speaking.

interruption_min_wordsintegerdefault: 2

Words the caller must say to interrupt.

1 to 10

call_start_hourintegerdefault: 9

Outbound calls start no earlier than this hour (in timezone).

0 to 23

call_end_hourintegerdefault: 21

Outbound calls start before this hour (in timezone).

1 to 24

timezonestringdefault: "Asia/Kolkata"

IANA time zone for the calling hours.

recordbooleandefault: true

Keep a stereo recording of the call.

hangup_messagestring

Said before the agent hangs up when the conversation is over.

hangup_on_promptbooleandefault: false

After each reply, ask the model (with hangup_prompt) whether the conversation is over.

hangup_promptstring

The question for hangup_on_prompt; it must answer Yes or No.

at most 4000 characters

hangup_interruptiblebooleandefault: false
check_user_onlinebooleandefault: false

When the caller goes quiet, ask once whether they're still there.

user_online_messagestringdefault: "Are you still there?"

What to ask.

user_online_after_secondsintegerdefault: 9

Silence before asking.

3 to 60

analyticsobject

Run once the call ends; the results are saved on the call and sent in call.completed.

Show child attributes
summarizebooleandefault: false

Write a short summary of the call.

extractionsobject[]

at most 50 items

Show item attributes
keystring

the JSON key, e.g. lead_status

matches ^[a-z][a-z0-9_]{0,39}$

labelstring

at most 80 characters

typeenum<string>default: "text"

One of:textnumberbooleanchoicedatelist

descriptionstring

what to extract and how

at most 600 characters

choicesobject[]

at most 20 items

Show item attributes
valuestring

1 to 60 characters

whenstring

at most 300 characters

extraction_promptstring

What to pull out of the transcript, in plain words; saved as JSON in extracted.

at most 4000 characters

toolsobject[]
Show item attributes
namestring

The function name the model calls: letters, digits and _.

matches ^[a-zA-Z_][a-zA-Z0-9_]{0,63}$

descriptionstring

When the model should use the tool.

3 to 1000 characters

parametersobject

JSON Schema of the arguments the model fills in.

methodenum<string>default: "POST"

GET sends the arguments as query parameters, POST as a JSON body.

One of:GETPOST

urlstring

Where the request goes.

headersobject

Extra request headers, such as an authorization header.

pre_call_messagestring

Said while the request runs.

timeout_secondsnumberdefault: 8

The request is abandoned after this long.

1 to 30

knowledge_base_idsstring[]

at most 10 items

webhook_urlstring
phone_numberstring
statusenum<string>default: "active"

One of:activepaused

idstring

The agent's id.

versionintegerdefault: 1

Increases with every saved change.

updated_bystring

Who made the last change.

created_atstring

date-time

updated_atstring

date-time

variablesstring[]

Every {variable} the welcome message and prompt use, in order.

401No credentials, or they are invalid or revoked.
detailstring

What went wrong, in plain words.

403Your role (or an API key) lacks the permission.
detailstring

What went wrong, in plain words.

422Validation Error
detailobject[]
Show item attributes
locstring | integer[]
msgstring
typestring
429Over the per-key rate limit; wait for Retry-After.
detailstring

What went wrong, in plain words.

Esc