Update an assistant
Changed onUpdates the specified AI assistant's attributes and returns the updated assistant. The request can also control how the change is promoted across assistant versions. Every update saves a new version, and an assistant keeps at most 10 versions: once it has more, the oldest versions are permanently deleted, except the main version and any version referenced by a traffic distribution rule.
Request
- Base URL: https://api.telnyx.com/v2
- URL: https://api.telnyx.com/v2/ai/assistants/{assistant_id}
- Auth: HTTP bearer
Path parameters
Unique identifier of the assistant.
Request body
Example request
{
"tools": [
{
"webhook": {
"url": "https://example.com/api/v1/function",
"body_parameters": {
"properties": {
"age": {
"description": "The age of the customer.",
"type": "integer"
},
"location": {
"description": "The location of the customer.",
"type": "string"
}
},
"required": [
"age",
"location"
],
"type": "object"
},
"path_parameters": {
"properties": {
"id": {
"description": "The id of the customer.",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"query_parameters": {
"properties": {
"page": {
"description": "The page number.",
"type": "integer"
}
},
"required": [
"page"
],
"type": "object"
},
"preset_body_fields": {
"account_id": "{{customer_id}}",
"source": "telnyx-assistant"
},
"preset_query_params": {
"caller": "{{telnyx_end_user_target}}",
"channel": "voice"
},
"messages": [
{
"type": "request_start",
"content": "Let me look that up for you."
},
{
"type": "request_response_delayed",
"content": "Still working on that.",
"timing_ms": 5000
}
]
}
}
],
"a2a_agents": [
{
"name": "billing_agent",
"url": "https://agents.example.com",
"headers": [
{
"name": "X-Api-Key",
"value": "{{#integration_secret}}my_agent_api_key{{/integration_secret}}"
}
],
"timeout_ms": 30000,
"poll_interval_ms": 500
}
],
"avatar_settings": {
"provider": "telnyx",
"avatar_id": "elena",
"background_id": "office",
"model": "foxtrot-1"
},
"transcription": {
"fallback_models": [
{
"model": "deepgram/nova-3",
"language": "en"
},
{
"model": "soniox/stt-rt-v5",
"settings": {
"context": "Telnyx,VoIP,SIP"
}
}
],
"challenger": {
"model": "deepgram/nova-3",
"language": "en",
"rule": "best_turn"
}
},
"insight_settings": {
"model": "zai-org/GLM-5.3-Flash"
},
"conversation_flow": {
"edges": [
{
"condition": {
"prompt": "The caller is asking about a bill or charge.",
"type": "llm"
},
"id": "e_intake_to_billing",
"start_node_id": "n_intake",
"target": {
"node_id": "n_billing",
"type": "node"
}
},
{
"condition": {
"prompt": "The caller has explicitly asked for a human.",
"type": "llm"
},
"id": "e_intake_to_escalation_assistant",
"start_node_id": "n_intake",
"target": {
"assistant_id": "assistant-human-handoff",
"position": {
"x": 600,
"y": 80
},
"type": "assistant",
"voice_mode": "distinct"
}
}
],
"nodes": [
{
"type": "prompt",
"id": "n_intake",
"instructions": "Greet the caller and ask what they're calling about.",
"name": "Intake",
"position": {
"x": 120,
"y": 80
},
"shared_tool_ids": [
"tool-faq-kb"
]
},
{
"type": "prompt",
"id": "n_billing",
"instructions": "Focus on billing questions. Look up the caller's latest invoice with the billing tool before answering.",
"instructions_mode": "append",
"model": "moonshotai/Kimi-K2.6",
"name": "Billing",
"position": {
"x": 420,
"y": 80
},
"shared_tool_ids": [
"tool-billing-lookup"
],
"tools_mode": "append"
}
],
"start_node_id": "n_intake"
}
}Response
Successful Response
Example response
{
"tools": [
{
"webhook": {
"url": "https://example.com/api/v1/function",
"body_parameters": {
"properties": {
"age": {
"description": "The age of the customer.",
"type": "integer"
},
"location": {
"description": "The location of the customer.",
"type": "string"
}
},
"required": [
"age",
"location"
],
"type": "object"
},
"path_parameters": {
"properties": {
"id": {
"description": "The id of the customer.",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"query_parameters": {
"properties": {
"page": {
"description": "The page number.",
"type": "integer"
}
},
"required": [
"page"
],
"type": "object"
},
"preset_body_fields": {
"account_id": "{{customer_id}}",
"source": "telnyx-assistant"
},
"preset_query_params": {
"caller": "{{telnyx_end_user_target}}",
"channel": "voice"
},
"messages": [
{
"type": "request_start",
"content": "Let me look that up for you."
},
{
"type": "request_response_delayed",
"content": "Still working on that.",
"timing_ms": 5000
}
]
}
}
],
"a2a_agents": [
{
"name": "billing_agent",
"url": "https://agents.example.com",
"headers": [
{
"name": "X-Api-Key",
"value": "{{#integration_secret}}my_agent_api_key{{/integration_secret}}"
}
],
"timeout_ms": 30000,
"poll_interval_ms": 500
}
],
"avatar_settings": {
"provider": "telnyx",
"avatar_id": "elena",
"background_id": "office",
"model": "foxtrot-1"
},
"transcription": {
"fallback_models": [
{
"model": "deepgram/nova-3",
"language": "en"
},
{
"model": "soniox/stt-rt-v5",
"settings": {
"context": "Telnyx,VoIP,SIP"
}
}
],
"challenger": {
"model": "deepgram/nova-3",
"language": "en",
"rule": "best_turn"
}
},
"insight_settings": {
"model": "zai-org/GLM-5.3-Flash"
},
"conversation_flow": {
"edges": [
{
"condition": {
"prompt": "The caller is asking about a bill or charge.",
"type": "llm"
},
"id": "e_intake_to_billing",
"start_node_id": "n_intake",
"target": {
"node_id": "n_billing",
"type": "node"
}
},
{
"condition": {
"prompt": "The caller has explicitly asked for a human.",
"type": "llm"
},
"id": "e_intake_to_escalation_assistant",
"start_node_id": "n_intake",
"target": {
"assistant_id": "assistant-human-handoff",
"position": {
"x": 600,
"y": 80
},
"type": "assistant",
"voice_mode": "distinct"
}
}
],
"nodes": [
{
"type": "prompt",
"id": "n_intake",
"instructions": "Greet the caller and ask what they're calling about.",
"name": "Intake",
"position": {
"x": 120,
"y": 80
},
"shared_tool_ids": [
"tool-faq-kb"
]
},
{
"type": "prompt",
"id": "n_billing",
"instructions": "Focus on billing questions. Look up the caller's latest invoice with the billing tool before answering.",
"instructions_mode": "append",
"model": "moonshotai/Kimi-K2.6",
"name": "Billing",
"position": {
"x": 420,
"y": 80
},
"shared_tool_ids": [
"tool-billing-lookup"
],
"tools_mode": "append"
}
],
"start_node_id": "n_intake"
}
}Changes
- info
added the new optional request property
// - info
added the optional property
/to the response with the status
- info
- warning
added the new
speechmatics/linden-1enum value to the/////response property for the response status - warning
added the new
speechmatics/linden-1enum value to the/response property for the response status - warning
added the new
speechmatics/standardenum value to the/////response property for the response status - warning
added the new
speechmatics/standardenum value to the/response property for the response status - info
added the new optional request property
////////// - info
added the new optional request property
////////// - info
added the new optional request property
/////// - info
added the new optional request property
////// - info
added the new optional request property
////// - info
added the new optional request property
/// - info
added the new
speechmatics/linden-1enum value to the request property////// - info
added the new
speechmatics/linden-1enum value to the request property// - info
added the new
speechmatics/standardenum value to the request property////// - info
added the new
speechmatics/standardenum value to the request property// - info
added the optional property
/////////to the response with the status - info
added the optional property
/////////to the response with the status - info
added the optional property
//////to the response with the status - info
added the optional property
/////to the response with the status - info
added the optional property
/////to the response with the status - info
added the optional property
//to the response with the status
- warning