curl --request PATCH \
--url https://api.telleo.ai/v1/agents/{id} \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"opening_line": "Namaste {{name}}!",
"max_call_minutes": 6
}
'import requests
url = "https://api.telleo.ai/v1/agents/{id}"
payload = {
"opening_line": "Namaste {{name}}!",
"max_call_minutes": 6
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({opening_line: 'Namaste {{name}}!', max_call_minutes: 6})
};
fetch('https://api.telleo.ai/v1/agents/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "<string>",
"object": "agent",
"name": "<string>",
"enabled": true,
"direction": "outbound",
"language": "hinglish",
"tts_model": "<string>",
"voice": "<string>",
"opening_line": "<string>",
"system_prompt": "<string>",
"extraction_questions": [
"<string>"
],
"dispositions": [
"<string>"
],
"handoff_numbers": [
"<string>"
],
"max_call_minutes": 15,
"pace": 1.25,
"temperature": 1.005,
"voice_modulation": 1.75,
"booking_page_id": "<string>",
"send_rules": [
{}
],
"is_default": true,
"speech_cache_mode": "off",
"configuration": "full",
"uses_contact_name": true,
"variables": [
"<string>"
],
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"waiting_calls_canceled": 123,
"warnings": [
{
"field": "variables.date",
"code": "reserved_variable",
"message": "{{date}} in the agent's script is always filled with the current date and time; this value does not replace it. The agent receives it only as information about the contact."
}
],
"idempotent_replay": true
}Update an agent
Changes only the fields you send; everything else keeps its stored value. Setting enabled: false cancels the calls waiting for it (waiting_calls_canceled). Send the updated_at you last read as If-Match (or expected_updated_at in the body) to refuse the change with 409 version_conflict if someone saved the agent since.
Scope: agents:manage.
curl --request PATCH \
--url https://api.telleo.ai/v1/agents/{id} \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"opening_line": "Namaste {{name}}!",
"max_call_minutes": 6
}
'import requests
url = "https://api.telleo.ai/v1/agents/{id}"
payload = {
"opening_line": "Namaste {{name}}!",
"max_call_minutes": 6
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({opening_line: 'Namaste {{name}}!', max_call_minutes: 6})
};
fetch('https://api.telleo.ai/v1/agents/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "<string>",
"object": "agent",
"name": "<string>",
"enabled": true,
"direction": "outbound",
"language": "hinglish",
"tts_model": "<string>",
"voice": "<string>",
"opening_line": "<string>",
"system_prompt": "<string>",
"extraction_questions": [
"<string>"
],
"dispositions": [
"<string>"
],
"handoff_numbers": [
"<string>"
],
"max_call_minutes": 15,
"pace": 1.25,
"temperature": 1.005,
"voice_modulation": 1.75,
"booking_page_id": "<string>",
"send_rules": [
{}
],
"is_default": true,
"speech_cache_mode": "off",
"configuration": "full",
"uses_contact_name": true,
"variables": [
"<string>"
],
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"waiting_calls_canceled": 123,
"warnings": [
{
"field": "variables.date",
"code": "reserved_variable",
"message": "{{date}} in the agent's script is always filled with the current date and time; this value does not replace it. The agent receives it only as information about the contact."
}
],
"idempotent_replay": true
}Authorizations
Your AI calling API key (vak_call_…). Authorization: Bearer <key> also works.
Headers
The agent's updated_at as you last read it, e.g. "2026-10-19T10:15:00.123456Z". Optional.
Path Parameters
Body
Only the fields you send change. Send null to clear a nullable field.
Unique in your account, ignoring case.
128outbound places calls, inbound answers your numbers, both does both.
outbound, inbound, both hinglish, hindi, english, punjabi, marathi, gujarati, bengali, tamil, telugu, kannada, malayalam, odia, a code (hi) or a tag (hi-IN). null = Hindi or Hinglish.
"hinglish"
Voice engine id from GET /voices. Default for a new agent: google.
A voice of tts_model (GET /voices). Changing tts_model needs a voice of the new engine.
The first thing the agent says. {{placeholders}} are filled per call.
2000The agent's script and instructions.
60000Questions whose answers come back in outcome.answers.
50500Labels the agent may give a call. Empty = your account's defaults.
5064E.164 numbers the agent can transfer a caller to.
10null = 10 minutes.
1 <= x <= 30Speaking rate; null = default.
0.5 <= x <= 2Voice expressiveness; null = engine default.
0.01 <= x <= 2Pitch-range expansion; null = off.
1 <= x <= 2.5A booking page of your account the agent books on.
Response
The updated agent.
"agent"Unique in your account, ignoring case.
128outbound places calls, inbound answers your numbers, both does both.
outbound, inbound, both hinglish, hindi, english, punjabi, marathi, gujarati, bengali, tamil, telugu, kannada, malayalam, odia, a code (hi) or a tag (hi-IN). null = Hindi or Hinglish.
"hinglish"
Voice engine id from GET /voices. Default for a new agent: google.
A voice of tts_model (GET /voices). Changing tts_model needs a voice of the new engine.
The first thing the agent says. {{placeholders}} are filled per call.
2000The agent's script and instructions.
60000Questions whose answers come back in outcome.answers.
50500Labels the agent may give a call. Empty = your account's defaults.
5064E.164 numbers the agent can transfer a caller to.
10null = 10 minutes.
1 <= x <= 30Speaking rate; null = default.
0.5 <= x <= 2Voice expressiveness; null = engine default.
0.01 <= x <= 2Pitch-range expansion; null = off.
1 <= x <= 2.5A booking page of your account the agent books on.
This is your account's default agent (GET /settings/default-agent).
Read-only; set by support.
off, fixed, full summary for a key without agents:manage: system_prompt, handoff_numbers, send_rules and booking_page_id are left out.
full, summary On disable (and a PATCH of enabled): calls that were waiting for this agent and were canceled.
Non-fatal notes about what was (not) done, e.g. mobile_number_missing.
Show child attributes
Show child attributes