Create an assistant
Creates a new AI assistant from the provided configuration, including its model, instructions, and attached tools, and returns the created assistant.
Headers
Optional opaque, unquoted key for safely retrying the same logical request. Keys must contain 1 to 255 letters, numbers, hyphens, or underscores. Generate a unique UUID v4 for each operation and reuse it only when retrying that operation with the same request. Invalid headers—including duplicate, empty, malformed, or overlong values—return 400 with error code 10015. A request already in progress with the same key returns 409; reusing the key with a different request returns 422. Only successful responses are replayed, for up to 24 hours. Do not include sensitive data in the key.
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
}
],
"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
}
],
"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
Changed in 18 of the 99 revisions of this API.1924139
- ●
removed the request property
////request-property-removed
- ●
removed the optional property
/////////from the response with the statusresponse-optional-property-removed
- ●
removed the optional property
////////from the response with the statusresponse-optional-property-removed
- ●
removed the optional property
////from the response with the statusresponse-optional-property-removed
- ○
added the new optional request property
///new-optional-request-property
- ○
added the optional property
////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
///////to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ●
- ○
added the new optional request property
///////new-optional-request-property
- ○
added the new optional request property
///////new-optional-request-property
- ○
added the new optional request property
///////new-optional-request-property
- ○
added the optional property
////////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
////////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
////////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
///////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
///////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
///////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
///////to the response with the statusresponse-optional-property-added
- ○
added the optional property
///////to the response with the statusresponse-optional-property-added
- ○
added the optional property
///////to the response with the statusresponse-optional-property-added
- ○
- ●
added the new
10011enum value to the//response property for the response statusresponse-property-enum-value-added
- ●
added the new
domain_graduation_limit_exceededenum value to the//response property for the response statusresponse-property-enum-value-added
- ●
- ●
added the new
omi-health/omi-med-stt-v1enum value to the/////response property for the response statusresponse-property-enum-value-added
- ●
added the new
omi-health/omi-med-stt-v1enum value to the/response property for the response statusresponse-property-enum-value-added
- ○
added the new
omi-health/omi-med-stt-v1enum value to the request property/////request-property-enum-value-added
- ○
added the new
omi-health/omi-med-stt-v1enum value to the request property/request-property-enum-value-added
- ●
- ○
added the new optional request property
/new-optional-request-property
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
This revision also has 4 changes that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog
- ○
- ●
added the new
assemblyai/universal-3-5-proenum value to the/////response property for the response statusresponse-property-enum-value-added
- ●
added the new
assemblyai/universal-3-5-proenum value to the/response property for the response statusresponse-property-enum-value-added
- ○
added the new
assemblyai/universal-3-5-proenum value to the request property/////request-property-enum-value-added
- ○
added the new
assemblyai/universal-3-5-proenum value to the request property/request-property-enum-value-added
- ●
- ▲
removed from the
/request propertyoneOflistrequest-property-one-of-removed
- ▲
added to the
//////response propertyoneOflist for the response statusresponse-property-one-of-added
- ▲
added to the
/////response propertyoneOflist for the response statusresponse-property-one-of-added
- ▲
added to the
/response propertyoneOflist for the response statusresponse-property-one-of-added
- ○
added to the
/request propertyoneOflistrequest-property-one-of-added
- ○
added the optional property
////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
///////to the response with the statusresponse-optional-property-added
- ○
added the optional property
///////to the response with the statusresponse-optional-property-added
- ○
added the optional property
///////to the response with the statusresponse-optional-property-added
- ○
added the optional property
///////to the response with the statusresponse-optional-property-added
- ○
added the optional property
///////to the response with the statusresponse-optional-property-added
- ○
added the optional property
///////to the response with the statusresponse-optional-property-added
- ○
added the optional property
///////to the response with the statusresponse-optional-property-added
- ○
added the optional property
///////to the response with the statusresponse-optional-property-added
- ○
added the optional property
///////to the response with the statusresponse-optional-property-added
- ○
added the optional property
///////to the response with the statusresponse-optional-property-added
- ○
added the optional property
///////to the response with the statusresponse-optional-property-added
- ○
added the optional property
///////to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
added the optional property
///to the response with the statusresponse-optional-property-added
- ○
removed from the
//////response propertyoneOflist for the response statusresponse-property-one-of-removed
- ○
removed from the
/////response propertyoneOflist for the response statusresponse-property-one-of-removed
- ○
removed from the
/response propertyoneOflist for the response statusresponse-property-one-of-removed
- ▲
- ○
added the new optional request property
/new-optional-request-property
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
- ▲
the response's body type changed from
objectto no type for statusresponse-body-type-changed
- ●
removed the optional property
from the response with the statusresponse-optional-property-removed
- ●
added the new
aicousticsenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
cohere/ar-sttenum value to the/////response property for the response statusresponse-property-enum-value-added
- ●
added the new
cohere/ar-sttenum value to the/response property for the response statusresponse-property-enum-value-added
- ●
added the new
soniox/stt-rt-v5enum value to the/////response property for the response statusresponse-property-enum-value-added
- ●
added the new
soniox/stt-rt-v5enum value to the/response property for the response statusresponse-property-enum-value-added
- ○
added the new optional
headerrequest parameterIdempotency-Keynew-optional-request-parameter
- ○
added the new optional request property
new-optional-request-property
- ○
added the new optional request property
//////new-optional-request-property
- ○
added the new optional request property
//////new-optional-request-property
- ○
added the new optional request property
/new-optional-request-property
- ○
added the new optional request property
//new-optional-request-property
- ○
added the new optional request property
//new-optional-request-property
- ○
added the new optional request property
//new-optional-request-property
- ○
added the new optional request property
/new-optional-request-property
- ○
added the new optional request property
////new-optional-request-property
- ○
added the new optional request property
////new-optional-request-property
- ○
added the new optional request property
////new-optional-request-property
- ○
added the new optional request property
////new-optional-request-property
- ○
added the new optional request property
///////new-optional-request-property
- ○
added the new optional request property
////new-optional-request-property
- ○
added the new optional request property
//new-optional-request-property
- ○
added the new optional request property
//new-optional-request-property
- ○
added the new
aicousticsenum value to the request property/request-property-enum-value-added
- ○
added the new
cohere/ar-sttenum value to the request property/////request-property-enum-value-added
- ○
added the new
cohere/ar-sttenum value to the request property/request-property-enum-value-added
- ○
added the new
soniox/stt-rt-v5enum value to the request property/////request-property-enum-value-added
- ○
added the new
soniox/stt-rt-v5enum value to the request property/request-property-enum-value-added
- ○
added to the response body
anyOflist for the response statusresponse-body-any-of-added
- ○
added the non-success response with the status
response-non-success-status-added
- ○
added the non-success response with the status
response-non-success-status-added
- ○
added the non-success response with the status
response-non-success-status-added
- ○
added the non-success response with the status
response-non-success-status-added
- ○
added the optional property
to the response with the statusresponse-optional-property-added
- ○
added the optional property
/////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
/////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
/////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
/////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
////////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
/////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
//////to the response with the statusresponse-optional-property-added
- ○
added the optional property
//////to the response with the statusresponse-optional-property-added
- ○
added the optional property
////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
///////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
////////to the response with the statusresponse-optional-property-added
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
added the optional property
//to the response with the statusresponse-optional-property-added
- ○
added the optional property
//to the response with the statusresponse-optional-property-added
- ○
added the optional property
//to the response with the statusresponse-optional-property-added
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
- ○
added the optional property
////to the response with the statusresponse-optional-property-added
- ○
added the optional property
////to the response with the statusresponse-optional-property-added
- ○
added the optional property
////to the response with the statusresponse-optional-property-added
- ○
added the optional property
////to the response with the statusresponse-optional-property-added
- ○
added the optional property
///////to the response with the statusresponse-optional-property-added
- ○
added the optional property
////to the response with the statusresponse-optional-property-added
- ○
added the optional property
//to the response with the statusresponse-optional-property-added
- ○
added the optional property
//to the response with the statusresponse-optional-property-added
This revision also has 34 changes that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog
- ▲
- ○
added the new optional request property
/new-optional-request-property
- ○
added the optional property
/to the response with the statusresponse-optional-property-added
This revision also has 64 changes that name no endpoint, such as unreferenced schemas being removed. See the revision's changelog
- ○
Of the 99 revisions, 1 has no diff computed.