openapi: 3.1.0 info: contact: email: support@telnyx.com description: Telnyx provides global communications and connectivity APIs for developers — including SIP trunking, programmable voice, SMS, MMS, WhatsApp Business Messaging, Call Control, Fax, Wireless (IoT & eSIM), Phone Numbers (DID provisioning & porting), Emergency Services, and Network APIs for private interconnects and edge connectivity. Build, scale, and manage voice, messaging, and data networks with Telnyx's carrier-grade global infrastructure and API-first platform. title: Telnyx Access Tokens Assistants API version: 2.0.0 x-endpoint-cost: light servers: - description: Version 2.0.0 of the Telnyx API url: https://api.telnyx.com/v2 security: - bearerAuth: [] tags: - description: Configure AI assistant specifications name: Assistants paths: /ai/assistants: get: description: Retrieve a list of all AI Assistants configured by the user. operationId: get_assistants_public_assistants_get responses: '200': content: application/json: schema: $ref: '#/components/schemas/AssistantsListData' description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: List assistants tags: - Assistants x-latency-category: responsive post: description: Create a new AI Assistant. operationId: create_new_assistant_public_assistants_post requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateAssistantRequest' required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/inference-embedding_Assistant' description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Create an assistant tags: - Assistants x-latency-category: responsive /ai/assistants/import: post: description: Import assistants from external providers. Any assistant that has already been imported will be overwritten with its latest version from the importing provider. operationId: import_assistants_public_assistants_import_post requestBody: content: application/json: schema: $ref: '#/components/schemas/ImportAssistantsRequest' required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/AssistantsListData' description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Import assistants from external provider tags: - Assistants x-latency-category: responsive /ai/assistants/tags: get: operationId: get_all_assistant_tags responses: '200': content: application/json: schema: $ref: '#/components/schemas/TagsResponse' description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Get All Tags tags: - Assistants x-latency-category: responsive /ai/assistants/tests: get: description: Retrieves a paginated list of assistant tests with optional filtering capabilities operationId: get_assistant_tests_public_assistants_tests_get parameters: - description: Filter tests by test suite name in: query name: test_suite required: false schema: description: Filter tests by test suite name title: Test Suite type: string - description: Filter tests by communication channel (e.g., 'web_chat', 'sms') in: query name: telnyx_conversation_channel required: false schema: description: Filter tests by communication channel (e.g., 'web_chat', 'sms') title: Telnyx Conversation Channel type: string - description: Filter tests by destination (phone number, webhook URL, etc.) in: query name: destination required: false schema: description: Filter tests by destination (phone number, webhook URL, etc.) title: Destination type: string - description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]' explode: true in: query name: page schema: properties: number: default: 1 description: Page number to retrieve (1-based indexing) minimum: 1 title: Page[Number] type: integer size: default: 20 description: Number of tests to return per page (1-100) maximum: 100 minimum: 1 title: Page[Size] type: integer type: object style: deepObject responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedAssistantTestList' description: Returns paginated test list with metadata for navigation and filtering '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: List assistant tests with pagination tags: - Assistants x-latency-category: responsive post: description: Creates a comprehensive test configuration for evaluating AI assistant performance operationId: create_assistant_test_public_assistants_tests_post requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateAssistantTestRequest' required: true responses: '201': content: application/json: schema: $ref: '#/components/schemas/AssistantTestResponse' description: Returns the created test configuration with assigned test ID '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Create a new assistant test tags: - Assistants x-latency-category: responsive /ai/assistants/tests/test-suites: get: description: Retrieves a list of all distinct test suite names available to the current user operationId: fetch_test_suites_public_assistants_tests_test_suites_get responses: '200': content: application/json: schema: $ref: '#/components/schemas/TestSuitesResponse' description: Returns an array of unique test suite names for filtering and organization '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Get all test suite names tags: - Assistants x-latency-category: responsive /ai/assistants/tests/test-suites/{suite_name}/runs: get: description: Retrieves paginated history of test runs for a specific test suite with filtering options operationId: get_test_suite_runs_for_test_public_assistants_tests_test_suites__suite_name__runs_get parameters: - in: path name: suite_name required: true schema: title: Suite Name type: string - description: Filter runs by execution status (pending, running, completed, failed, timeout) in: query name: status required: false schema: description: Filter runs by execution status (pending, running, completed, failed, timeout) title: Status type: string - description: Filter runs by specific suite execution batch ID in: query name: test_suite_run_id required: false schema: description: Filter runs by specific suite execution batch ID title: Test Suite Run Id type: string - description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]' explode: true in: query name: page schema: properties: number: default: 1 description: Page number to retrieve (1-based indexing) minimum: 1 title: Page[Number] type: integer size: default: 20 description: Number of test runs to return per page (1-100) maximum: 100 minimum: 1 title: Page[Size] type: integer type: object style: deepObject responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedTestRunList' description: Returns paginated list of test runs within the specified suite '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Get test suite run history tags: - Assistants x-latency-category: responsive post: description: Executes all tests within a specific test suite as a batch operation operationId: trigger_test_suite_runs_public_assistants_tests_test_suites__suite_name__runs_post parameters: - in: path name: suite_name required: true schema: title: Suite Name type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/TriggerTestSuiteRunsRequest' title: Request responses: '201': content: application/json: schema: items: $ref: '#/components/schemas/TestRunResponse' title: Response Trigger Test Suite Runs Public Assistants Tests Test Suites Suite Name Runs Post type: array description: Returns array of created test runs for all tests in the suite '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Trigger test suite execution tags: - Assistants x-latency-category: responsive /ai/assistants/tests/{test_id}: delete: description: Permanently removes an assistant test and all associated data operationId: delete_assistant_test_public_assistants_tests__test_id__delete parameters: - in: path name: test_id required: true schema: title: Test Id type: string responses: '200': description: Returns success status when test is successfully deleted '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Delete an assistant test tags: - Assistants x-latency-category: responsive get: description: Retrieves detailed information about a specific assistant test operationId: get_assistant_test_public_assistants_tests__test_id__get parameters: - in: path name: test_id required: true schema: title: Test Id type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/AssistantTestResponse' description: Returns complete test configuration including rubric, schedule, and metadata '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Get assistant test by ID tags: - Assistants x-latency-category: responsive put: description: Updates an existing assistant test configuration with new settings operationId: update_assistant_test_public_assistants_tests__test_id__put parameters: - in: path name: test_id required: true schema: title: Test Id type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateAssistantTestRequest' required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/AssistantTestResponse' description: Returns the updated test configuration with all changes applied '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Update an assistant test tags: - Assistants x-latency-category: responsive /ai/assistants/tests/{test_id}/runs: get: description: Retrieves paginated execution history for a specific assistant test with filtering options operationId: get_test_runs_for_test_public_assistants_tests__test_id__runs_get parameters: - in: path name: test_id required: true schema: title: Test Id type: string - description: Filter runs by execution status (pending, running, completed, failed, timeout) in: query name: status required: false schema: description: Filter runs by execution status (pending, running, completed, failed, timeout) title: Status type: string - description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]' explode: true in: query name: page schema: properties: number: default: 1 description: Page number to retrieve (1-based indexing) minimum: 1 title: Page[Number] type: integer size: default: 20 description: Number of test runs to return per page (1-100) maximum: 100 minimum: 1 title: Page[Size] type: integer type: object style: deepObject responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedTestRunList' description: Returns paginated list of test runs for the specified test '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Get test run history for a specific test tags: - Assistants x-latency-category: responsive post: description: Initiates immediate execution of a specific assistant test operationId: trigger_test_run_public_assistants_tests__test_id__runs_post parameters: - in: path name: test_id required: true schema: title: Test Id type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/TriggerTestRunRequest' title: Request responses: '201': content: application/json: schema: $ref: '#/components/schemas/TestRunResponse' description: Returns the created test run with execution details and status '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Trigger a manual test run tags: - Assistants x-latency-category: responsive /ai/assistants/tests/{test_id}/runs/{run_id}: get: description: Retrieves detailed information about a specific test run execution operationId: get_test_run_public_assistants_tests__test_id__runs__run_id__get parameters: - in: path name: test_id required: true schema: title: Test Id type: string - in: path name: run_id required: true schema: title: Run Id type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/TestRunResponse' description: Returns complete test run details including results, logs, and performance metrics '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Get specific test run details tags: - Assistants x-latency-category: responsive /ai/assistants/{assistant_id}: delete: description: Delete an AI Assistant by `assistant_id`. operationId: delete_assistant_public_assistants__assistant_id__delete parameters: - in: path name: assistant_id required: true schema: title: Assistant Id type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/AssistantDeletedResponse' description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Delete an assistant tags: - Assistants x-latency-category: responsive get: description: Retrieve an AI Assistant configuration by `assistant_id`. operationId: get_assistant_public_assistants__assistant_id__get parameters: - in: path name: assistant_id required: true schema: title: Assistant Id type: string - in: query name: fetch_dynamic_variables_from_webhook required: false schema: default: false title: Fetch Dynamic Variables From Webhook type: boolean - in: query name: from required: false schema: title: From type: string - in: query name: to required: false schema: title: To type: string - in: query name: call_control_id required: false schema: title: Call Control Id type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/inference-embedding_Assistant' description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Get an assistant tags: - Assistants x-latency-category: responsive post: description: Update an AI Assistant's attributes. operationId: update_assistant_public_assistants__assistant_id__post parameters: - in: path name: assistant_id required: true schema: title: Assistant Id type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateAssistantRequestWithPromotion' required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/inference-embedding_Assistant' description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Update an assistant tags: - Assistants x-latency-category: responsive /ai/assistants/{assistant_id}/canary-deploys: delete: description: 'Endpoint to delete a canary deploy configuration for an assistant. Removes all canary deploy configurations for the specified assistant.' operationId: delete_canary_deploy_assistants__assistant_id__canary_deploys_delete parameters: - in: path name: assistant_id required: true schema: title: Assistant Id type: string responses: '204': description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Delete Canary Deploy tags: - Assistants x-latency-category: responsive get: description: 'Endpoint to get a canary deploy configuration for an assistant. Retrieves the current canary deploy configuration with all version IDs and their traffic percentages for the specified assistant.' operationId: get_canary_deploy_assistants__assistant_id__canary_deploys_get parameters: - in: path name: assistant_id required: true schema: title: Assistant Id type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/CanaryDeployResponse' description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Get Canary Deploy tags: - Assistants x-latency-category: responsive post: description: 'Endpoint to create a canary deploy configuration for an assistant. Creates a new canary deploy configuration with multiple version IDs and their traffic percentages for A/B testing or gradual rollouts of assistant versions.' operationId: create_canary_deploy_assistants__assistant_id__canary_deploys_post parameters: - in: path name: assistant_id required: true schema: title: Assistant Id type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/CanaryDeployRequest' required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/CanaryDeployResponse' description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Create Canary Deploy tags: - Assistants x-latency-category: responsive put: description: "Endpoint to update a canary deploy configuration for an assistant.\n\nUpdates the existing canary deploy configuration with new version IDs and percentages.\n All old versions and percentages are replaces by new ones from this request." operationId: update_canary_deploy_assistants__assistant_id__canary_deploys_put parameters: - in: path name: assistant_id required: true schema: title: Assistant Id type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/CanaryDeployRequest' required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/CanaryDeployResponse' description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Update Canary Deploy tags: - Assistants x-latency-category: responsive /ai/assistants/{assistant_id}/chat: post: description: This endpoint allows a client to send a chat message to a specific AI Assistant. The assistant processes the message and returns a relevant reply based on the current conversation context. Refer to the Conversation API to [create a conversation](https://developers.telnyx.com/api-reference/conversations/create-a-conversation), [filter existing conversations](https://developers.telnyx.com/api-reference/conversations/list-conversations), [fetch messages for a conversation](https://developers.telnyx.com/api-reference/conversations/get-conversation-messages), and [manually add messages to a conversation](https://developers.telnyx.com/api-reference/conversations/create-message). operationId: assistant_chat_public_assistants__assistant_id__chat_post parameters: - in: path name: assistant_id required: true schema: title: Assistant Id type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AssistantChatReq' required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/AssistantChatResponse' description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Assistant Chat (BETA) tags: - Assistants x-latency-category: responsive /ai/assistants/{assistant_id}/chat/sms: post: description: "Send an SMS message for an assistant. This endpoint: \n1. Validates the assistant exists and has messaging profile configured \n2. If should_create_conversation is true, creates a new conversation with metadata \n3. Sends the SMS message (If `text` is set, this will be sent. Otherwise, if this is the first message in the conversation and the assistant has a `greeting` configured, this will be sent. Otherwise the assistant will generate the text to send.) \n4. Updates conversation metadata if provided \n5. Returns the conversation ID" operationId: assistant_sms_chat_assistants__assistant_id__chat_sms_post parameters: - in: path name: assistant_id required: true schema: title: Assistant Id type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AssistantSmsChatReq' required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/AssistantSmsChatResponse' description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Assistant Sms Chat tags: - Assistants x-latency-category: responsive /ai/assistants/{assistant_id}/clone: post: description: Clone an existing assistant, excluding telephony and messaging settings. operationId: clone_assistant_public_assistants__assistant_id__clone_post parameters: - in: path name: assistant_id required: true schema: title: Assistant Id type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/inference-embedding_Assistant' description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Clone Assistant tags: - Assistants x-latency-category: responsive /ai/assistants/{assistant_id}/scheduled_events: get: description: Get scheduled events for an assistant with pagination and filtering operationId: get_scheduled_events parameters: - in: path name: assistant_id required: true schema: title: Assistant Id type: string - in: query name: from_date required: false schema: format: date-time title: From Date type: string - in: query name: to_date required: false schema: format: date-time title: To Date type: string - in: query name: conversation_channel required: false schema: $ref: '#/components/schemas/ConversationChannelType' title: Conversation Channel - description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]' explode: true in: query name: page schema: properties: number: default: 1 minimum: 1 title: Page[Number] type: integer size: default: 20 maximum: 100 minimum: 1 title: Page[Size] type: integer type: object style: deepObject responses: '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedScheduledEventList' description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: List scheduled events tags: - Assistants x-latency-category: responsive post: description: Create a scheduled event for an assistant operationId: create_scheduled_event parameters: - in: path name: assistant_id required: true schema: title: Assistant Id type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateScheduledEventRequest' required: true responses: '201': content: application/json: schema: $ref: '#/components/schemas/ScheduledEventResponse' description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Create a scheduled event tags: - Assistants x-latency-category: responsive /ai/assistants/{assistant_id}/scheduled_events/{event_id}: delete: description: If the event is pending, this will cancel the event. Otherwise, this will simply remove the record of the event. operationId: delete_scheduled_event parameters: - in: path name: assistant_id required: true schema: title: Assistant Id type: string - in: path name: event_id required: true schema: title: Event Id type: string responses: '200': description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Delete a scheduled event tags: - Assistants x-latency-category: responsive get: description: Retrieve a scheduled event by event ID operationId: get_scheduled_event parameters: - in: path name: assistant_id required: true schema: title: Assistant Id type: string - in: path name: event_id required: true schema: title: Event Id type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/ScheduledEventResponse' description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Get a scheduled event tags: - Assistants x-latency-category: responsive /ai/assistants/{assistant_id}/tags: post: operationId: add_assistant_tag parameters: - in: path name: assistant_id required: true schema: title: Assistant Id type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/AddTagRequest' required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/TagsResponse' description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Add Assistant Tag tags: - Assistants x-latency-category: responsive /ai/assistants/{assistant_id}/tags/{tag}: delete: operationId: remove_assistant_tag parameters: - in: path name: assistant_id required: true schema: title: Assistant Id type: string - in: path name: tag required: true schema: title: Tag type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/TagsResponse' description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Remove Assistant Tag tags: - Assistants x-latency-category: responsive /ai/assistants/{assistant_id}/texml: get: description: Get an assistant texml by `assistant_id`. operationId: get_assistant_texml_public_assistants__assistant_id__texml_get parameters: - in: path name: assistant_id required: true schema: title: Assistant Id type: string responses: '200': content: application/json: schema: type: string description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Get assistant texml tags: - Assistants x-latency-category: responsive /ai/assistants/{assistant_id}/tools/{tool_id}: delete: operationId: remove_assistant_tool parameters: - in: path name: assistant_id required: true schema: title: Assistant Id type: string - in: path name: tool_id required: true schema: title: Tool Id type: string responses: '200': content: application/json: schema: {} description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Remove Assistant Tool tags: - Assistants x-latency-category: responsive put: operationId: add_assistant_tool parameters: - in: path name: assistant_id required: true schema: title: Assistant Id type: string - in: path name: tool_id required: true schema: title: Tool Id type: string responses: '200': content: application/json: schema: {} description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Add Assistant Tool tags: - Assistants x-latency-category: responsive /ai/assistants/{assistant_id}/tools/{tool_id}/test: post: description: Test a webhook tool for an assistant operationId: test_assistant_tool_public_assistants__assistant_id__tools__tool_id__test_post parameters: - in: path name: assistant_id required: true schema: title: Assistant Id type: string - in: path name: tool_id required: true schema: title: Tool Id type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/TestWebhookToolRequest' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TestWebhookToolResponseData' description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Test Assistant Tool tags: - Assistants x-latency-category: responsive /ai/assistants/{assistant_id}/versions: get: description: Retrieves all versions of a specific assistant with complete configuration and metadata operationId: get_assistant_versions_public_assistants__assistant_id__versions_get parameters: - in: path name: assistant_id required: true schema: title: Assistant Id type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/AssistantsListData' description: Returns list of assistant versions ordered by creation date (newest first) '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Get all versions of an assistant tags: - Assistants x-latency-category: responsive /ai/assistants/{assistant_id}/versions/{version_id}: delete: description: Permanently removes a specific version of an assistant. Can not delete main version operationId: delete_assistant_version_public_assistants__assistant_id__versions__version_id__delete parameters: - in: path name: assistant_id required: true schema: title: Assistant Id type: string - in: path name: version_id required: true schema: title: Version Id type: string responses: '204': description: Returns HTTP 204 No Content on successful deletion '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Delete a specific assistant version tags: - Assistants x-latency-category: responsive get: description: Retrieves a specific version of an assistant by assistant_id and version_id operationId: get_assistant_version_public_assistants__assistant_id__versions__version_id__get parameters: - in: path name: assistant_id required: true schema: title: Assistant Id type: string - in: path name: version_id required: true schema: title: Version Id type: string - in: query name: include_mcp_servers required: false schema: type: boolean responses: '200': content: application/json: schema: $ref: '#/components/schemas/inference-embedding_Assistant' description: Returns the specific assistant version configuration '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Get a specific assistant version tags: - Assistants x-latency-category: responsive post: description: Updates the configuration of a specific assistant version. Can not update main version operationId: update_assistant_version_public_assistants__assistant_id__versions__version_id__post parameters: - in: path name: assistant_id required: true schema: title: Assistant Id type: string - in: path name: version_id required: true schema: title: Version Id type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateAssistantRequest' required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/inference-embedding_Assistant' description: Returns the updated assistant version configuration '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Update a specific assistant version tags: - Assistants x-latency-category: responsive /ai/assistants/{assistant_id}/versions/{version_id}/promote: post: description: Promotes a specific version to be the main/current version of the assistant. This will delete any existing canary deploy configuration and send all live production traffic to this version. operationId: promote_assistant_version_public_assistants__assistant_id__versions__version_id__promote_post parameters: - in: path name: assistant_id required: true schema: title: Assistant Id type: string - in: path name: version_id required: true schema: title: Version Id type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/inference-embedding_Assistant' description: Returns the promoted assistant configuration '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Promote an assistant version to main tags: - Assistants x-latency-category: responsive /ai/tools: get: operationId: list_tools parameters: - in: query name: filter[type] required: false schema: title: Filter[Type] type: string - in: query name: filter[name] required: false schema: title: Filter[Name] type: string - in: query name: page[size] required: false schema: default: 20 maximum: 100 minimum: 1 title: Page[Size] type: integer - in: query name: page[number] required: false schema: default: 1 minimum: 1 title: Page[Number] type: integer responses: '200': content: application/json: schema: $ref: '#/components/schemas/SharedToolListResponse' description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: List Tools tags: - Assistants x-latency-category: responsive post: operationId: create_tool_post requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateSharedToolRequest' required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/SharedToolResponse' description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Create Tool tags: - Assistants x-latency-category: responsive /ai/tools/{tool_id}: delete: operationId: delete_tool_tool_id parameters: - in: path name: tool_id required: true schema: title: Tool Id type: string responses: '200': content: application/json: schema: {} description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Delete Tool tags: - Assistants x-latency-category: responsive get: operationId: get_tool_tool_id parameters: - in: path name: tool_id required: true schema: title: Tool Id type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/SharedToolResponse' description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Get Tool tags: - Assistants x-latency-category: responsive patch: operationId: update_tool_tool_id parameters: - in: path name: tool_id required: true schema: title: Tool Id type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateSharedToolRequest' required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/SharedToolResponse' description: Successful Response '422': content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' description: Validation Error summary: Update Tool tags: - Assistants x-latency-category: responsive components: schemas: InviteToolConfig: properties: custom_headers: description: Custom headers to be added to the SIP INVITE for the invite command. items: properties: name: type: string value: description: The value of the header. Note that we support mustache templating for the value. For example you can use `{{#integration_secret}}test-secret{{/integration_secret}}` to pass the value of the integration secret. type: string type: object type: array from: description: Number or SIP URI placing the call. example: '+35319605860' type: string targets: description: The different possible targets of the invite. The assistant will be able to choose one of the targets to invite to the call. This can also be a dynamic variable string like `{{ targets }}` where `targets` is returned by the dynamic variables webhook and resolves to an array of target objects at runtime. If omitted or null, the invite tool can still be configured and targets may be supplied dynamically at runtime. oneOf: - items: properties: name: description: The name of the target. example: Support type: string to: description: The destination number or SIP URI of the call. example: '+13129457420' type: string required: - to type: object type: array - description: A dynamic variable string like `{{ targets }}` where `targets` is returned by the dynamic variables webhook and resolves to an array of target objects at runtime. example: '{{ targets }}' type: string - type: 'null' voicemail_detection: description: Configuration for voicemail detection (AMD - Answering Machine Detection) on the invited call. properties: detection_mode: description: The AMD detection mode to use. 'premium' enables premium answering machine detection. 'disabled' turns off AMD detection. enum: - disabled - premium type: string on_voicemail_detected: description: Action to take when voicemail is detected on the invited call. properties: action: description: The action to take when voicemail is detected. enum: - stop_invite type: string type: object type: object required: - from title: InviteToolConfig type: object ValidationError: properties: loc: items: anyOf: - type: string - type: integer title: Location type: array msg: title: Message type: string type: title: Error Type type: string required: - loc - msg - type title: ValidationError type: object AssistantChatReq: properties: content: description: The message content sent by the client to the assistant example: Tell me a joke about cats title: Content type: string conversation_id: description: A unique identifier for the conversation thread, used to maintain context example: 42b20469-1215-4a9a-8964-c36f66b406f4 title: Conversation Id type: string name: description: The optional display name of the user sending the message example: Charlie title: Name type: string required: - content - conversation_id title: AssistantChatReq type: object StartSpeakingPlan: description: Controls when the assistant starts speaking after the user stops. These thresholds primarily apply to non turn-taking transcription models. For turn-taking models like `deepgram/flux`, end-of-turn detection is driven by the transcription end-of-turn settings under `transcription.settings` instead. properties: transcription_endpointing_plan: $ref: '#/components/schemas/TranscriptionEndpointingPlan' wait_seconds: default: 0.4 description: Minimum seconds to wait before the assistant starts speaking. format: float minimum: 0.0 type: number title: StartSpeakingPlan type: object Meta: properties: page_number: type: integer page_size: type: integer total_pages: type: integer total_results: type: integer required: - total_pages - total_results - page_number - page_size title: Meta type: object TestRunResponse: description: 'Response model containing test run execution details and results. Provides comprehensive information about a test execution including status, timing, logs, and detailed evaluation results.' properties: completed_at: description: Timestamp when the test run finished execution. format: date-time title: Completed At type: string conversation_id: description: Identifier of the conversation created during test execution. title: Conversation Id type: string conversation_insights_id: description: Identifier for conversation analysis and insights data. title: Conversation Insights Id type: string created_at: description: Timestamp when the test run was created and queued. example: '2024-01-23T10:30:00Z' format: date-time title: Created At type: string detail_status: description: Detailed evaluation results for each rubric criteria. Name is name of the criteria from the rubric and status is the result of the evaluation. This list will have a result for every criteria in the rubric section. items: $ref: '#/components/schemas/TestRunDetailResult' title: Detail Status type: array logs: description: Detailed execution logs and debug information. title: Logs type: string run_id: description: Unique identifier for this specific test run execution. example: 987fcdeb-51a2-43d1-b456-426614174000 format: uuid title: Run Id type: string status: $ref: '#/components/schemas/TestStatus' test_id: description: Identifier of the assistant test that was executed. example: 123e4567-e89b-12d3-a456-426614174000 format: uuid title: Test Id type: string test_suite_run_id: description: Identifier linking this run to a test suite execution batch. format: uuid title: Test Suite Run Id type: string triggered_by: description: How this test run was initiated (manual, scheduled, or API). example: cron title: Triggered By type: string updated_at: description: Timestamp of the last update to this test run. format: date-time title: Updated At type: string required: - run_id - test_id - status - triggered_by - created_at title: TestRunResponse type: object CanaryDeployResponse: description: 'Response shape. Always carries ``rules`` (canonical).' properties: assistant_id: title: Assistant Id type: string created_at: format: date-time title: Created At type: string rules: items: $ref: '#/components/schemas/Rule-Output' title: Rules type: array updated_at: format: date-time title: Updated At type: string required: - assistant_id - rules - created_at - updated_at title: CanaryDeployResponse type: object ImportAssistantsRequest: properties: api_key_ref: description: Integration secret pointer that refers to the API key for the external provider. This should be an identifier for an integration secret created via /v2/integration_secrets. type: string import_ids: description: Optional list of assistant IDs to import from the external provider. If not provided, all assistants will be imported. items: type: string type: array provider: description: The external provider to import assistants from. enum: - elevenlabs - vapi - retell type: string required: - provider - api_key_ref title: ImportAssistantsRequest type: object Rule-Input: description: 'A targeting rule: ``match`` clauses (AND) gate ``serve``. An empty ``match`` is a catch-all (always fires).' properties: match: items: $ref: '#/components/schemas/Clause' title: Match type: array serve: $ref: '#/components/schemas/Serve' required: - serve title: Rule type: object ScheduledSmsEventResponse: properties: assistant_id: title: Assistant Id type: string conversation_id: title: Conversation Id type: string conversation_metadata: additionalProperties: anyOf: - type: string - type: integer - type: boolean title: Conversation Metadata type: object created_at: format: date-time title: Created At type: string dynamic_variables: additionalProperties: type: string description: A map of dynamic variable names to values. These variables can be referenced in the assistant's instructions and messages using {{variable_name}} syntax. title: Dynamic Variables type: object errors: items: type: string title: Errors type: array retry_count: default: 0 title: Retry Count type: integer scheduled_at_fixed_datetime: format: date-time title: Scheduled At Fixed Datetime type: string scheduled_event_id: title: Scheduled Event Id type: string status: allOf: - $ref: '#/components/schemas/EventStatus' default: pending telnyx_agent_target: title: Telnyx Agent Target type: string telnyx_conversation_channel: $ref: '#/components/schemas/ConversationChannelType' telnyx_end_user_target: title: Telnyx End User Target type: string text: title: Text type: string required: - telnyx_conversation_channel - telnyx_end_user_target - telnyx_agent_target - scheduled_at_fixed_datetime - assistant_id - text title: ScheduledSmsEventResponse type: object DTMFTool: properties: send_dtmf: additionalProperties: true type: object type: enum: - send_dtmf type: string required: - type - send_dtmf title: DTMFTool type: object TelnyxConversationChannel: enum: - phone_call - web_call - sms_chat - web_chat title: TelnyxConversationChannel type: string MessagingSettings: properties: conversation_inactivity_minutes: description: If more than this many minutes have passed since the last message, the assistant will start a new conversation instead of continuing the existing one. maximum: 10000000 minimum: 1 type: integer default_messaging_profile_id: description: Default Messaging Profile used for messaging exchanges with your assistant. This will be created automatically on assistant creation. type: string delivery_status_webhook_url: description: The URL where webhooks related to delivery statused for assistant messages will be sent. type: string type: object AssistantsListData: properties: data: items: $ref: '#/components/schemas/inference-embedding_Assistant' title: Data type: array required: - data title: AssistantsListData type: object TriggerTestRunRequest: description: 'Request model for triggering a single test run. Optional request body for the trigger test run endpoint.' properties: destination_version_id: description: Optional assistant version ID to use for this test run. If provided, the version must exist or a 400 error will be returned. If not provided, test will run on main version example: 123e4567-e89b-12d3-a456-426614174000 title: Destination Version Id type: string title: TriggerTestRunRequest type: object SendMessageTool: description: The send_message tool allows the assistant to send SMS or MMS messages to the end user. The 'to' and 'from' addresses are automatically determined from the conversation context, and the message text is generated by the assistant unless a message_template is provided for runtime variable substitution. properties: send_message: additionalProperties: true properties: message_template: description: Optional message template with dynamic variable support using mustache syntax (e.g., {{variable_name}}). When set, the assistant will use this template for the SMS body instead of generating one. Dynamic variables like {{telnyx_end_user_target}}, {{telnyx_agent_target}}, and custom webhook-provided variables will be resolved at runtime. type: - string - 'null' type: object type: enum: - send_message type: string required: - type - send_message title: SendMessageTool type: object VoiceSettings: properties: api_key_ref: description: 'The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) that refers to your ElevenLabs API key. Warning: Free plans are unlikely to work with this integration.' type: string background_audio: description: Optional background audio to play on the call. Use a predefined media bed, or supply a looped MP3 URL. If a media URL is chosen in the portal, customers can preview it before saving. oneOf: - properties: type: description: Select from predefined media options. enum: - predefined_media type: string value: default: silence description: The predefined media to use. `silence` disables background audio. enum: - silence - office type: string required: - type - value type: object - properties: type: description: Provide a direct URL to an MP3 file. The audio will loop during the call. enum: - media_url type: string value: description: HTTPS URL to an MP3 file. format: uri type: string required: - type - value type: object - properties: type: description: Reference a previously uploaded media by its name from Telnyx Media Storage. enum: - media_name type: string value: description: The `name` of a media asset created via [Media Storage API](https://developers.telnyx.com/api/media-storage/create-media-storage). The audio will loop during the call. type: string required: - type - value type: object expressive_mode: default: false description: Enables emotionally expressive speech using SSML emotion tags. When enabled, the assistant uses audio tags like angry, excited, content, and sad to add emotional nuance. Only supported for Telnyx Ultra voices. type: boolean language_boost: default: null description: Enhances recognition for specific languages and dialects during MiniMax TTS synthesis. Default is null (no boost). Set to 'auto' for automatic language detection. Only applicable when using MiniMax voices. enum: - null - auto - Chinese - Chinese,Yue - English - Arabic - Russian - Spanish - French - Portuguese - German - Turkish - Dutch - Ukrainian - Vietnamese - Indonesian - Japanese - Italian - Korean - Thai - Polish - Romanian - Greek - Czech - Finnish - Hindi - Bulgarian - Danish - Hebrew - Malay - Persian - Slovak - Swedish - Croatian - Filipino - Hungarian - Norwegian - Slovenian - Catalan - Nynorsk - Tamil - Afrikaans type: - string - 'null' similarity_boost: default: 0.75 description: Determines how closely the AI should adhere to the original voice when attempting to replicate it. Only applicable when using ElevenLabs. type: number speed: default: 1.0 description: Adjusts speech velocity. 1.0 is default speed; values less than 1.0 slow speech; values greater than 1.0 accelerate it. Only applicable when using ElevenLabs. type: number style: default: 0 description: Determines the style exaggeration of the voice. Amplifies speaker style but consumes additional resources when set above 0. Only applicable when using ElevenLabs. type: number temperature: default: 0.5 description: Determines how stable the voice is and the randomness between each generation. Lower values create a broader emotional range; higher values produce more consistent, monotonous output. Only applicable when using ElevenLabs. type: number use_speaker_boost: default: true description: Amplifies similarity to the original speaker voice. Increases computational load and latency slightly. Only applicable when using ElevenLabs. type: boolean voice: description: 'The voice to be used by the voice assistant. Check the full list of [available voices](https://developers.telnyx.com/docs/tts-stt/tts-available-voices) via our voices API. To use ElevenLabs, you must reference your ElevenLabs API key as an integration secret under the `api_key_ref` field. See [integration secrets documentation](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) for details. For Telnyx voices, use `Telnyx..` (e.g. Telnyx.KokoroTTS.af_heart). The voice portion of the identifier supports [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) using mustache syntax (e.g. `Telnyx.Ultra.{{voice_id}}`). The variable is resolved at call time from your dynamic variables webhook, allowing you to select the voice dynamically per call.' type: string voice_speed: default: 1 description: The speed of the voice in the range [0.25, 2.0]. 1.0 is deafult speed. Larger numbers make the voice faster, smaller numbers make it slower. This is only applicable for Telnyx Natural voices. type: number required: - voice type: object UpdateAssistantRequestWithPromotion: allOf: - $ref: '#/components/schemas/UpdateAssistantRequest' - properties: promote_to_main: default: true description: Indicates whether the assistant should be promoted to the main version. Defaults to true. type: boolean type: object TestRunDetailResult: properties: name: title: Name type: string status: $ref: '#/components/schemas/TestStatus' required: - name - status title: TestRunDetailResult type: object TriggerTestSuiteRunsRequest: description: 'Request model for triggering test suite runs. Optional request body for the trigger test suite runs endpoint.' properties: destination_version_id: description: Optional assistant version ID to use for all test runs in this suite. If provided, the version must exist or a 400 error will be returned. If not provided, test will run on main version example: 123e4567-e89b-12d3-a456-426614174000 title: Destination Version Id type: string title: TriggerTestSuiteRunsRequest type: object SkipTurnToolParams: properties: description: default: This tool is used to skip the assistant turn without producing a response. description: The description of the function that will be passed to the assistant. type: string title: SkipTurnToolParams type: object PostConversationSettingsReq: description: Configuration for post-conversation processing. When enabled, the assistant receives one additional LLM turn after the conversation ends, allowing it to execute tool calls such as logging to a CRM or sending a summary. The assistant can execute multiple parallel or sequential tools during this phase. Telephony-control tools (e.g. hangup, transfer) are unavailable post-conversation. Beta feature. properties: enabled: default: false description: Whether post-conversation processing is enabled. When true, the assistant will be invoked after the conversation ends to perform any final tool calls. Defaults to false. type: boolean type: object AddTagRequest: properties: tag: title: Tag type: string required: - tag title: AddTagRequest type: object InviteTool: properties: invite: $ref: '#/components/schemas/InviteToolConfig' title: InviteToolConfig type: enum: - invite type: string required: - type - invite title: InviteTool type: object HandoffTool: description: The handoff tool allows the assistant to hand off control of the conversation to another AI assistant. By default, this will happen transparently to the end user. properties: handoff: $ref: '#/components/schemas/HandoffToolParams' type: enum: - handoff type: string required: - type - handoff title: HandoffTool type: object PaginatedAssistantTestList: description: 'Paginated list of assistant tests with metadata. Returns a subset of tests based on pagination parameters along with metadata for implementing pagination controls in the UI.' properties: data: description: Array of assistant test objects for the current page. items: $ref: '#/components/schemas/AssistantTestResponse' title: Data type: array meta: allOf: - $ref: '#/components/schemas/Meta' description: Pagination metadata including total counts and current page info. required: - meta - data title: PaginatedAssistantTestList type: object FallbackConfig: properties: external_llm: $ref: '#/components/schemas/ExternalLLM' llm_api_key_ref: description: Integration secret identifier for the fallback model API key. type: string model: description: Fallback Telnyx-hosted model to use when the primary LLM provider is unavailable. type: string title: FallbackConfig type: object CreateAssistantTestRequest: description: 'Request model for creating a new assistant test. This model defines all the required and optional parameters needed to create a comprehensive test for an AI assistant, including test configuration, evaluation criteria, and scheduling options.' properties: description: description: Optional detailed description of what this test evaluates and its purpose. Helps team members understand the test's objectives. maxLength: 1000 title: Description type: string destination: description: 'The target destination for the test conversation. Format depends on the channel: phone number for SMS/voice, webhook URL for web chat, etc.' example: '+15551234567' minLength: 1 title: Destination type: string instructions: description: Detailed instructions that define the test scenario and what the assistant should accomplish. This guides the test execution and evaluation. example: Act as a frustrated customer who received a damaged product. Ask for a refund and escalate if not satisfied with the initial response. maxLength: 5000 minLength: 1 title: Instructions type: string max_duration_seconds: description: Maximum duration in seconds that the test conversation should run before timing out. If not specified, uses system default timeout. maximum: 3600.0 minimum: 1.0 title: Max Duration Seconds type: integer name: description: A descriptive name for the assistant test. This will be used to identify the test in the UI and reports. example: Customer Support Bot Test maxLength: 255 minLength: 1 title: Name type: string rubric: description: Evaluation criteria used to assess the assistant's performance. Each rubric item contains a name and specific criteria for evaluation. example: - criteria: Assistant responds within 30 seconds name: Response Time - criteria: Provides correct product information name: Accuracy items: additionalProperties: false properties: criteria: description: Specific guidance on how to assess the assistant’s performance for this rubric item. type: string name: description: Label for the evaluation criterion, e.g., Empathy, Accuracy, Clarity. type: string required: - name - criteria type: object minItems: 1 title: Rubric type: array telnyx_conversation_channel: allOf: - $ref: '#/components/schemas/TelnyxConversationChannel' default: web_chat description: The communication channel through which the test will be conducted. Determines how the assistant will receive and respond to test messages. example: web_chat test_suite: description: Optional test suite name to group related tests together. Useful for organizing tests by feature, team, or release cycle. maxLength: 100 title: Test Suite type: string required: - name - destination - instructions - rubric title: CreateAssistantTestRequest type: object AssistantIntegration: description: Reference to a connected integration attached to an assistant. Discover available integrations with `/ai/integrations` and connected integrations with `/ai/integrations/connections`. properties: allowed_list: description: Optional per-assistant allowlist of integration tool names. When omitted or empty, all tools allowed by the connected integration are available to the assistant. items: type: string type: array integration_id: description: Catalog integration ID to attach. This is the `id` from the integrations catalog at `/ai/integrations` (the same value also appears as `integration_id` on entries returned by `/ai/integrations/connections`). It is **not** the connection-level `id` from `/ai/integrations/connections`. type: string required: - integration_id title: AssistantIntegration type: object CreateSharedToolRequest: additionalProperties: true description: Request model for creating a shared (org-level) tool. properties: display_name: title: Display Name type: string function: additionalProperties: true title: Function type: object handoff: additionalProperties: true title: Handoff type: object invite: additionalProperties: true title: Invite type: object retrieval: additionalProperties: true title: Retrieval type: object timeout_ms: default: 5000 title: Timeout Ms type: integer type: title: Type type: string webhook: additionalProperties: true title: Webhook type: object required: - type - display_name title: CreateSharedToolRequest type: object inference-embedding_InterruptionSettings: description: Settings for interruptions and how the assistant decides the user has finished speaking. These timings are most relevant when using non turn-taking transcription models. For turn-taking models like `deepgram/flux`, end-of-turn behavior is controlled by the transcription end-of-turn settings under `transcription.settings` (`eot_threshold`, `eot_timeout_ms`, `eager_eot_threshold`). properties: disable_greeting_interruption: description: When true, disables user interruptions while the assistant greeting is playing. type: boolean enable: default: true description: Whether users can interrupt the assistant while it is speaking. type: boolean start_speaking_plan: $ref: '#/components/schemas/StartSpeakingPlan' title: InterruptionSettings type: object TagsResponse: properties: tags: items: type: string title: Tags type: array required: - tags title: TagsResponse type: object SIPReferToolParams: properties: custom_headers: description: Custom headers to be added to the SIP REFER. items: properties: name: type: string value: description: The value of the header. Note that we support mustache templating for the value. For example you can use `{{#integration_secret}}test-secret{{/integration_secret}}` to pass the value of the integration secret. type: string type: object type: array sip_headers: description: SIP headers to be added to the SIP REFER. Currently only User-to-User and Diversion headers are supported. items: properties: name: enum: - User-to-User - Diversion type: string value: description: The value of the header. Note that we support mustache templating for the value. For example you can use `{{#integration_secret}}test-secret{{/integration_secret}}` to pass the value of the integration secret. type: string type: object type: array targets: description: The different possible targets of the SIP refer. The assistant will be able to choose one of the targets to refer the call to. items: properties: name: description: The name of the target. example: Support type: string sip_address: description: The SIP URI to which the call will be referred. example: sip:username@sip.non-telnyx-address.com type: string sip_auth_password: description: SIP Authentication password used for SIP challenges. type: string sip_auth_username: description: SIP Authentication username used for SIP challenges. type: string required: - name - sip_address type: object type: array required: - targets title: SIPReferToolParams type: object HandoffToolParams: properties: ai_assistants: description: List of possible assistants that can receive a handoff. items: properties: id: description: The ID of the assistant to hand off to. example: assistant-1234567890abcdef type: string name: description: Helpful name for giving context on when to handoff to the assistant. example: Scheduling Specialist type: string required: - name - id type: object type: array voice_mode: description: With the unified voice mode all assistants share the same voice, making the handoff transparent to the user. With the distinct voice mode all assistants retain their voice configuration, providing the experience of a conference call with a team of assistants. enum: - unified - distinct type: string required: - ai_assistants title: HandoffToolParams type: object CreateScheduledEventRequest: properties: conversation_metadata: additionalProperties: anyOf: - type: string - type: integer - type: boolean description: Metadata associated with the conversation. Telnyx provides several pieces of metadata, but customers can also add their own. title: Conversation Metadata type: object dynamic_variables: additionalProperties: type: string description: A map of dynamic variable names to values. These variables can be referenced in the assistant's instructions and messages using {{variable_name}} syntax. title: Dynamic Variables type: object max_retries_client_errors: default: 0 description: 'Configure number of retries on client errors: busy, no-answer, failed, canceled (caller hung up before the callee answered)' maximum: 10.0 minimum: 0.0 title: Max Retries Client Errors type: integer retry_interval_secs: maximum: 86400.0 minimum: 60.0 title: Retry Interval Secs type: integer scheduled_at_fixed_datetime: description: The datetime at which the event should be scheduled. Formatted as ISO 8601. example: '2025-04-15T13:07:28.764Z' format: date-time title: Scheduled At Fixed Datetime type: string telnyx_agent_target: description: The phone number, SIP URI, to schedule the call or text from. title: Telnyx Agent Target type: string telnyx_conversation_channel: $ref: '#/components/schemas/ConversationChannelType' telnyx_end_user_target: description: The phone number, SIP URI, to schedule the call or text to. title: Telnyx End User Target type: string text: description: Required for sms scheduled events. The text to be sent to the end user. type: string required: - telnyx_conversation_channel - telnyx_end_user_target - telnyx_agent_target - scheduled_at_fixed_datetime title: CreateScheduledEventRequest type: object SIPReferTool: properties: refer: $ref: '#/components/schemas/SIPReferToolParams' type: enum: - refer type: string required: - type - refer title: SIPReferTool type: object AssistantScheduledCallAttempt: description: One row in `call_attempts` — captures the terminal outcome of a single dispatch. properties: attempt_number: title: Attempt Number type: integer attempted_at: format: date-time title: Attempted At type: string call_duration: description: Duration of the call in seconds title: Call Duration type: integer call_status: description: 'Values: busy, canceled, no-answer, ringing, completed, failed, in-progress' title: Call Status type: string telnyx_call_control_id: title: Telnyx Call Control Id type: string required: - attempt_number - attempted_at - call_status title: AssistantScheduledCallAttempt type: object AssistantTools: description: Deprecated for new integrations. Inline tool definitions available to the assistant. Prefer `tool_ids` to attach shared tools created with the AI Tools endpoints. items: oneOf: - $ref: '#/components/schemas/inference-embedding_WebhookTool' - $ref: '#/components/schemas/RetrievalTool' - $ref: '#/components/schemas/HandoffTool' - $ref: '#/components/schemas/HangupTool' - $ref: '#/components/schemas/inference-embedding_TransferTool' - $ref: '#/components/schemas/InviteTool' - $ref: '#/components/schemas/SIPReferTool' - $ref: '#/components/schemas/DTMFTool' - $ref: '#/components/schemas/SendMessageTool' - $ref: '#/components/schemas/SkipTurnTool' type: array AssistantTestResponse: description: 'Response model containing complete assistant test information. Returns all test configuration details including evaluation criteria, scheduling, and metadata. Used when retrieving individual tests or after creating/updating tests.' properties: created_at: description: Timestamp when the test was created. example: '2024-01-16T09:00:00Z' format: date-time title: Created At type: string description: description: Detailed description of the test's purpose and scope. title: Description type: string destination: description: Target destination for test conversations. title: Destination type: string instructions: description: Detailed test scenario instructions and objectives. title: Instructions type: string max_duration_seconds: description: Maximum allowed duration for test execution in seconds. title: Max Duration Seconds type: integer name: description: Human-readable name of the test. example: Customer Support Bot Test title: Name type: string rubric: description: Evaluation criteria used to assess test performance. example: - criteria: Responds within 30 seconds name: Response Time items: additionalProperties: false properties: criteria: description: Specific guidance on how to assess the assistant’s performance for this rubric item. type: string name: description: Label for the evaluation criterion, e.g., Empathy, Accuracy, Clarity. type: string required: - name - criteria type: object title: Rubric type: array telnyx_conversation_channel: allOf: - $ref: '#/components/schemas/TelnyxConversationChannel' description: Communication channel used for test execution. example: web_chat test_id: description: Unique identifier for the assistant test. example: 123e4567-e89b-12d3-a456-426614174000 format: uuid title: Test Id type: string test_suite: description: Test suite grouping for organizational purposes. title: Test Suite type: string required: - test_id - name - telnyx_conversation_channel - rubric - created_at title: AssistantTestResponse type: object Serve: description: "What a rule serves when matched.\n\nExactly one of:\n- ``version_id`` — serve a specific version\n- ``rollout`` — weighted random across versions; weights must sum to\n less than 100, with the leftover routing to the main version" properties: rollout: items: $ref: '#/components/schemas/RolloutSlot' title: Rollout type: array version_id: title: Version Id type: string title: Serve type: object HangupTool: properties: hangup: $ref: '#/components/schemas/HangupToolParams' type: enum: - hangup type: string required: - type - hangup title: HangupTool type: object SharedToolListResponse: properties: data: items: $ref: '#/components/schemas/SharedToolResponse' title: Data type: array meta: $ref: '#/components/schemas/Meta' required: - data - meta title: SharedToolListResponse type: object UpdateAssistantRequest: properties: description: type: string dynamic_variables: additionalProperties: true description: Map of dynamic variables and their default values type: object dynamic_variables_webhook_timeout_ms: default: 1500 description: Timeout in milliseconds for the dynamic variables webhook. Must be between 1 and 10000 ms. If the webhook does not respond within this timeout, the call proceeds with default values. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables). maximum: 10000 minimum: 1 type: integer dynamic_variables_webhook_url: description: 'If `dynamic_variables_webhook_url` is set, Telnyx sends a POST request to this URL at the start of the conversation to resolve dynamic variables. **Gotcha:** the webhook response must wrap variables under a top-level `dynamic_variables` object, e.g. `{"dynamic_variables": {"customer_name": "Jane"}}`. Returning a flat object will be ignored and variables will fall back to their defaults. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) for the full request/response format and timeout behavior.' type: string enabled_features: items: $ref: '#/components/schemas/EnabledFeatures' type: array uniqueItems: true external_llm: $ref: '#/components/schemas/ExternalLLMReq' fallback_config: $ref: '#/components/schemas/FallbackConfigReq' greeting: description: Text that the assistant will use to start the conversation. This may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables). Use an empty string to have the assistant wait for the user to speak first. Use the special value `` to have the assistant generate the greeting based on the system instructions. type: string insight_settings: $ref: '#/components/schemas/InsightSettings' instructions: description: System instructions for the assistant. These may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) type: string integrations: default: [] description: Connected integrations attached to the assistant. The catalog of available integrations is at `/ai/integrations`; the user's connected integrations are at `/ai/integrations/connections`. Each item references a catalog integration by `integration_id`. items: $ref: '#/components/schemas/AssistantIntegration' type: array interruption_settings: $ref: '#/components/schemas/inference-embedding_InterruptionSettings' llm_api_key_ref: description: 'This is only needed when using third-party inference providers selected by `model`. The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) that refers to your LLM provider''s API key. For bring-your-own endpoint authentication, use `external_llm.llm_api_key_ref` instead. Warning: Free plans are unlikely to work with this integration.' type: string mcp_servers: default: [] description: MCP servers attached to the assistant. Create MCP servers with `/ai/mcp_servers`, then reference them by `id` here. items: $ref: '#/components/schemas/AssistantMCPServer' type: array messaging_settings: $ref: '#/components/schemas/MessagingSettings' model: description: ID of the model to use when `external_llm` is not set. You can use the [Get models API](https://developers.telnyx.com/api-reference/chat/get-available-models) to see available models. If `external_llm` is provided, the assistant uses `external_llm` instead of this field. If neither `model` nor `external_llm` is provided, Telnyx applies the default model. type: string name: type: string observability_settings: $ref: '#/components/schemas/ObservabilityReq' post_conversation_settings: $ref: '#/components/schemas/PostConversationSettingsReq' privacy_settings: $ref: '#/components/schemas/PrivacySettings' tags: default: [] description: Tags associated with the assistant. Tags can also be managed with the assistant tag endpoints. items: type: string type: array telephony_settings: $ref: '#/components/schemas/TelephonySettings' tool_ids: description: IDs of shared tools to attach to the assistant. New integrations should prefer `tool_ids` over inline `tools`. items: type: string title: Ids of shared tools type: array tools: $ref: '#/components/schemas/AssistantTools' description: Deprecated for new integrations. Inline tool definitions available to the assistant. Prefer `tool_ids` to attach shared tools created with the AI Tools endpoints. transcription: $ref: '#/components/schemas/TranscriptionSettings' version_name: default: New assistant description: Human-readable name for the assistant version. maxLength: 50 type: string voice_settings: $ref: '#/components/schemas/VoiceSettings' widget_settings: $ref: '#/components/schemas/WidgetSettings' title: UpdateAssistantRequest type: object Operator: enum: - in - not_in - starts_with title: Operator type: string InsightSettings: properties: insight_group_id: description: Reference to an Insight Group. Insights in this group will be run automatically for all the assistant's conversations. type: string type: object AudioVisualizerConfig: properties: color: description: The color theme for the audio visualizer. enum: - verdant - twilight - bloom - mystic - flare - glacier type: string preset: description: The preset style for the audio visualizer. type: string title: AudioVisualizerConfig type: object RolloutSlot: description: One slot in a percentage rollout. properties: version_id: title: Version Id type: string weight: maximum: 100.0 minimum: 0.0 title: Weight type: number required: - version_id - weight title: RolloutSlot type: object PaginatedTestRunList: description: 'Paginated list of test runs with metadata. Returns test run execution results with pagination support for handling large numbers of test executions.' properties: data: description: Array of test run objects for the current page. items: $ref: '#/components/schemas/TestRunResponse' title: Data type: array meta: $ref: '#/components/schemas/Meta' description: Pagination metadata including total counts and current page info. required: - meta - data title: PaginatedTestRunList type: object Observability: properties: host: title: Host type: string prompt_label: title: Prompt Label type: string prompt_name: title: Prompt Name type: string prompt_sync: $ref: '#/components/schemas/PromptSyncStatus' default: disabled prompt_version: minimum: 1.0 title: Prompt Version type: integer public_key_ref: title: Public Key Ref type: string secret_key_ref: title: Secret Key Ref type: string status: $ref: '#/components/schemas/ObservabilityStatus' default: disabled title: Observability type: object ScheduledEventResponse: anyOf: - $ref: '#/components/schemas/ScheduledPhoneCallEventResponse' - $ref: '#/components/schemas/ScheduledSmsEventResponse' description: Union type for different scheduled event response types title: ScheduledEventResponse HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' title: Detail type: array title: HTTPValidationError type: object HangupToolParams: properties: description: default: This tool is used to hang up the call. description: The description of the function that will be passed to the assistant. type: string title: HangupToolParams type: object CreateAssistantRequest: properties: description: type: string dynamic_variables: additionalProperties: true description: Map of dynamic variables and their default values type: object dynamic_variables_webhook_timeout_ms: default: 1500 description: Timeout in milliseconds for the dynamic variables webhook. Must be between 1 and 10000 ms. If the webhook does not respond within this timeout, the call proceeds with default values. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables). maximum: 10000 minimum: 1 type: integer dynamic_variables_webhook_url: description: 'If `dynamic_variables_webhook_url` is set, Telnyx sends a POST request to this URL at the start of the conversation to resolve dynamic variables. **Gotcha:** the webhook response must wrap variables under a top-level `dynamic_variables` object, e.g. `{"dynamic_variables": {"customer_name": "Jane"}}`. Returning a flat object will be ignored and variables will fall back to their defaults. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) for the full request/response format and timeout behavior.' type: string enabled_features: items: $ref: '#/components/schemas/EnabledFeatures' type: array external_llm: $ref: '#/components/schemas/ExternalLLMReq' fallback_config: $ref: '#/components/schemas/FallbackConfigReq' greeting: description: Text that the assistant will use to start the conversation. This may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables). Use an empty string to have the assistant wait for the user to speak first. Use the special value `` to have the assistant generate the greeting based on the system instructions. type: string insight_settings: $ref: '#/components/schemas/InsightSettings' instructions: description: System instructions for the assistant. These may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) type: string integrations: default: [] description: Connected integrations attached to the assistant. The catalog of available integrations is at `/ai/integrations`; the user's connected integrations are at `/ai/integrations/connections`. Each item references a catalog integration by `integration_id`. items: $ref: '#/components/schemas/AssistantIntegration' type: array interruption_settings: $ref: '#/components/schemas/inference-embedding_InterruptionSettings' llm_api_key_ref: description: 'This is only needed when using third-party inference providers selected by `model`. The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) that refers to your LLM provider''s API key. For bring-your-own endpoint authentication, use `external_llm.llm_api_key_ref` instead. Warning: Free plans are unlikely to work with this integration.' type: string mcp_servers: default: [] description: MCP servers attached to the assistant. Create MCP servers with `/ai/mcp_servers`, then reference them by `id` here. items: $ref: '#/components/schemas/AssistantMCPServer' type: array messaging_settings: $ref: '#/components/schemas/MessagingSettings' model: description: ID of the model to use when `external_llm` is not set. You can use the [Get models API](https://developers.telnyx.com/api-reference/chat/get-available-models) to see available models. If `external_llm` is provided, the assistant uses `external_llm` instead of this field. If neither `model` nor `external_llm` is provided, Telnyx applies the default model. type: string name: type: string observability_settings: $ref: '#/components/schemas/ObservabilityReq' post_conversation_settings: $ref: '#/components/schemas/PostConversationSettingsReq' privacy_settings: $ref: '#/components/schemas/PrivacySettings' tags: default: [] description: Tags associated with the assistant. Tags can also be managed with the assistant tag endpoints. items: type: string type: array telephony_settings: $ref: '#/components/schemas/TelephonySettings' tool_ids: description: IDs of shared tools to attach to the assistant. New integrations should prefer `tool_ids` over inline `tools`. items: type: string title: Ids of shared tools type: array tools: $ref: '#/components/schemas/AssistantTools' description: Deprecated for new integrations. Inline tool definitions available to the assistant. Prefer `tool_ids` to attach shared tools created with the AI Tools endpoints. transcription: $ref: '#/components/schemas/TranscriptionSettings' voice_settings: $ref: '#/components/schemas/VoiceSettings' widget_settings: $ref: '#/components/schemas/WidgetSettings' required: - name - instructions title: CreateAssistantRequest type: object SkipTurnTool: properties: skip_turn: $ref: '#/components/schemas/SkipTurnToolParams' type: enum: - skip_turn type: string required: - type - skip_turn title: SkipTurnTool type: object PostConversationSettings: description: Configuration for post-conversation processing. When enabled, the assistant receives one additional LLM turn after the conversation ends, allowing it to execute tool calls such as logging to a CRM or sending a summary. The assistant can execute multiple parallel or sequential tools during this phase. Telephony-control tools (e.g. hangup, transfer) are unavailable post-conversation. Beta feature. properties: enabled: default: false description: Whether post-conversation processing is enabled. When true, the assistant will be invoked after the conversation ends to perform any final tool calls. Defaults to false. type: boolean type: object PromptSyncStatus: description: 'Whether to auto-publish the assistant''s instructions as a Langfuse prompt. When ENABLED + prompt_name set, every assistant create/update pushes `instructions` to Langfuse via create_prompt and stores the returned version in prompt_version.' enum: - enabled - disabled title: PromptSyncStatus type: string AssistantMCPServer: description: Reference to an MCP server attached to an assistant. Create and manage MCP servers with the `/ai/mcp_servers` endpoints, then attach them to assistants by ID. properties: allowed_tools: description: Optional per-assistant allowlist of MCP tool names. When omitted, the assistant uses the MCP server's configured `allowed_tools`. items: type: string type: array id: description: ID of the MCP server to attach. This must be the `id` of an MCP server returned by the `/ai/mcp_servers` endpoints. type: string required: - id title: AssistantMCPServer type: object UpdateSharedToolRequest: additionalProperties: true description: Request model for updating a shared tool. properties: display_name: title: Display Name type: string function: additionalProperties: true title: Function type: object handoff: additionalProperties: true title: Handoff type: object invite: additionalProperties: true title: Invite type: object retrieval: additionalProperties: true title: Retrieval type: object timeout_ms: title: Timeout Ms type: integer type: title: Type type: string webhook: additionalProperties: true title: Webhook type: object title: UpdateSharedToolRequest type: object UpdateAssistantTestRequest: description: 'Request model for updating an existing assistant test. All fields are optional, allowing partial updates of test configuration. Only provided fields will be updated, others remain unchanged.' properties: description: description: Updated description of the test's purpose and evaluation criteria. maxLength: 1000 title: Description type: string destination: description: Updated target destination for test conversations. minLength: 1 title: Destination type: string instructions: description: Updated test scenario instructions and objectives. maxLength: 5000 minLength: 1 title: Instructions type: string max_duration_seconds: description: Updated maximum test duration in seconds. maximum: 3600.0 minimum: 1.0 title: Max Duration Seconds type: integer name: description: Updated name for the assistant test. Must be unique and descriptive. maxLength: 255 minLength: 1 title: Name type: string rubric: description: Updated evaluation criteria for assessing assistant performance. items: additionalProperties: false properties: criteria: description: Specific guidance on how to assess the assistant’s performance for this rubric item. type: string name: description: Label for the evaluation criterion, e.g., Empathy, Accuracy, Clarity. type: string required: - name - criteria type: object minItems: 1 title: Rubric type: array telnyx_conversation_channel: $ref: '#/components/schemas/TelnyxConversationChannel' description: Updated communication channel for the test execution. test_suite: description: Updated test suite assignment for better organization. maxLength: 100 title: Test Suite type: string title: UpdateAssistantTestRequest type: object PrivacySettings: properties: data_retention: description: If true, conversation history and insights will be stored. If false, they will not be stored. This in‑tool toggle governs solely the retention of conversation history and insights via the AI assistant. It has no effect on any separate recording, transcription, or storage configuration that you have set at the account, number, or application level. All such external settings remain in force regardless of your selection here. type: boolean type: object inference-embedding_Assistant: properties: created_at: format: date-time type: string description: type: string dynamic_variables: additionalProperties: true description: Map of dynamic variables and their values type: object dynamic_variables_webhook_timeout_ms: default: 1500 description: Timeout in milliseconds for the dynamic variables webhook. Must be between 1 and 10000 ms. If the webhook does not respond within this timeout, the call proceeds with default values. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables). maximum: 10000 minimum: 1 type: integer dynamic_variables_webhook_url: description: 'If `dynamic_variables_webhook_url` is set, Telnyx sends a POST request to this URL at the start of the conversation to resolve dynamic variables. **Gotcha:** the webhook response must wrap variables under a top-level `dynamic_variables` object, e.g. `{"dynamic_variables": {"customer_name": "Jane"}}`. Returning a flat object will be ignored and variables will fall back to their defaults. See the [dynamic variables guide](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) for the full request/response format and timeout behavior.' type: string enabled_features: items: $ref: '#/components/schemas/EnabledFeatures' title: Enabled Features type: array uniqueItems: true external_llm: $ref: '#/components/schemas/ExternalLLM' fallback_config: $ref: '#/components/schemas/FallbackConfig' greeting: description: Text that the assistant will use to start the conversation. This may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables). Use an empty string to have the assistant wait for the user to speak first. Use the special value `` to have the assistant generate the greeting based on the system instructions. type: string id: type: string import_metadata: $ref: '#/components/schemas/ImportMetadata' insight_settings: $ref: '#/components/schemas/InsightSettings' instructions: description: System instructions for the assistant. These may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) type: string integrations: default: [] description: Connected integrations attached to the assistant. The catalog of available integrations is at `/ai/integrations`; the user's connected integrations are at `/ai/integrations/connections`. Each item references a catalog integration by `integration_id`. items: $ref: '#/components/schemas/AssistantIntegration' type: array interruption_settings: $ref: '#/components/schemas/inference-embedding_InterruptionSettings' llm_api_key_ref: description: 'This is only needed when using third-party inference providers selected by `model`. The `identifier` for an integration secret [/v2/integration_secrets](https://developers.telnyx.com/api-reference/integration-secrets/create-a-secret) that refers to your LLM provider''s API key. For bring-your-own endpoint authentication, use `external_llm.llm_api_key_ref` instead. Warning: Free plans are unlikely to work with this integration.' type: string mcp_servers: default: [] description: MCP servers attached to the assistant. Create MCP servers with `/ai/mcp_servers`, then reference them by `id` here. items: $ref: '#/components/schemas/AssistantMCPServer' type: array messaging_settings: $ref: '#/components/schemas/MessagingSettings' model: description: ID of the model to use when `external_llm` is not set. You can use the [Get models API](https://developers.telnyx.com/api-reference/chat/get-available-models) to see available models. If `external_llm` is provided, the assistant uses `external_llm` instead of this field. If neither `model` nor `external_llm` is provided, Telnyx applies the default model. type: string name: type: string observability_settings: $ref: '#/components/schemas/Observability' post_conversation_settings: $ref: '#/components/schemas/PostConversationSettings' privacy_settings: $ref: '#/components/schemas/PrivacySettings' related_mission_ids: default: [] description: IDs of missions related to this assistant. items: type: string type: array tags: default: [] description: Tags associated with the assistant. Tags can also be managed with the assistant tag endpoints. items: type: string type: array telephony_settings: $ref: '#/components/schemas/TelephonySettings' tools: $ref: '#/components/schemas/AssistantTools' description: Deprecated for new integrations. Inline tool definitions available to the assistant. Prefer `tool_ids` to attach shared tools created with the AI Tools endpoints. transcription: $ref: '#/components/schemas/TranscriptionSettings' version_created_at: description: Timestamp when this assistant version was created. format: date-time type: string version_id: description: Identifier for the assistant version returned by version-aware assistant endpoints. type: string version_name: default: New assistant description: Human-readable name for the assistant version. maxLength: 50 type: string voice_settings: $ref: '#/components/schemas/VoiceSettings' widget_settings: $ref: '#/components/schemas/WidgetSettings' required: - id - name - created_at - model - instructions type: object BucketIds: properties: bucket_ids: description: List of [embedded storage buckets](https://developers.telnyx.com/api-reference/embeddings/embed-documents) to use for retrieval-augmented generation. items: type: string type: array max_num_results: description: The maximum number of results to retrieve as context for the language model. type: integer required: - bucket_ids title: BucketIds type: object AssistantSmsChatResponse: properties: conversation_id: title: Conversation Id type: string title: AssistantSmsChatResponse type: object WebhookToolParams: properties: async: default: false description: If async, the assistant will move forward without waiting for your server to respond. type: boolean body_parameters: description: The body parameters the webhook tool accepts, described as a JSON Schema object. These parameters will be passed to the webhook as the body of the request. See the [JSON Schema reference](https://json-schema.org/understanding-json-schema) for documentation about the format example: properties: age: description: The age of the customer. type: integer location: description: The location of the customer. type: string required: - age - location type: object properties: properties: additionalProperties: true description: The properties of the body parameters. type: object required: description: The required properties of the body parameters. items: type: string type: array type: enum: - object type: string type: object description: description: The description of the tool. type: string headers: description: The headers to be sent to the external tool. items: properties: name: type: string value: description: The value of the header. Note that we support mustache templating for the value. For example you can use `Bearer {{#integration_secret}}test-secret{{/integration_secret}}` to pass the value of the integration secret as the bearer token. [Telnyx signature headers](https://developers.telnyx.com/docs/voice/programmable-voice/voice-api-webhooks) will be automatically added to the request. type: string type: object type: array method: default: POST description: The HTTP method to be used when calling the external tool. enum: - GET - POST - PUT - DELETE - PATCH type: string name: description: The name of the tool. type: string path_parameters: description: The path parameters the webhook tool accepts, described as a JSON Schema object. These parameters will be passed to the webhook as the path of the request if the URL contains a placeholder for a value. See the [JSON Schema reference](https://json-schema.org/understanding-json-schema) for documentation about the format example: properties: id: description: The id of the customer. type: string required: - id type: object properties: properties: additionalProperties: true description: The properties of the path parameters. type: object required: description: The required properties of the path parameters. items: type: string type: array type: enum: - object type: string type: object query_parameters: description: The query parameters the webhook tool accepts, described as a JSON Schema object. These parameters will be passed to the webhook as the query of the request. See the [JSON Schema reference](https://json-schema.org/understanding-json-schema) for documentation about the format example: properties: page: description: The page number. type: integer required: - page type: object properties: properties: additionalProperties: true description: The properties of the query parameters. type: object required: description: The required properties of the query parameters. items: type: string type: array type: enum: - object type: string type: object store_fields_as_variables: description: A list of mappings that extract values from the webhook response and store them as dynamic variables. Each mapping specifies a dynamic variable name and a dot-notation path to the value in the response body. items: additionalProperties: false properties: name: description: The name of the dynamic variable to store the extracted value in. minLength: 1 type: string value_path: description: A dot-notation path to the value in the webhook response body (e.g. 'customer.name' or 'id'). minLength: 1 type: string required: - name - value_path type: object type: array timeout_ms: description: The maximum number of milliseconds to wait for the webhook to respond. Only applicable when async is false. maximum: 10000 minimum: 500 type: integer url: description: 'The URL of the external tool to be called. This URL is going to be used by the assistant. The URL can be templated like: `https://example.com/api/v1/{id}`, where `{id}` is a placeholder for a value that will be provided by the assistant if `path_parameters` are provided with the `id` attribute.' example: https://example.com/api/v1/function type: string required: - url - name - description title: WebhookToolParams type: object inference-embedding_WebhookTool: properties: type: enum: - webhook type: string webhook: $ref: '#/components/schemas/WebhookToolParams' required: - type - webhook title: WebhookTool type: object TranscriptionSettingsConfig: properties: eager_eot_threshold: default: 0.4 description: Available only for deepgram/flux. Confidence threshold for eager end of turn detection. Must be lower than or equal to eot_threshold. Setting this equal to eot_threshold effectively disables eager end of turn. maximum: 0.9 minimum: 0.3 title: Eager Eot Threshold type: number end_of_turn_confidence_threshold: default: 0.4 description: Available only for assemblyai/universal-streaming. Confidence level required to trigger an end of turn. Higher values require more certainty before ending a turn. maximum: 1 minimum: 0 title: End Of Turn Confidence Threshold type: number eot_threshold: default: 0.8 description: Available only for deepgram/flux. Confidence required to trigger an end of turn. Higher values = more reliable turn detection but slightly increased latency. maximum: 0.9 minimum: 0.5 title: Eot Threshold type: number eot_timeout_ms: default: 5000 description: Available only for deepgram/flux. Maximum milliseconds of silence before forcing an end of turn, regardless of confidence. maximum: 10000 minimum: 500 title: Eot Timeout Ms type: integer keyterm: description: Available only for deepgram/nova-3 and deepgram/flux. A comma-separated list of key terms to boost for recognition during transcription. Helps improve accuracy for domain-specific terminology, proper nouns, or uncommon words. This field may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables) using mustache syntax (e.g. `Telnyx,{{customer_name}},VoIP`). Variables are resolved at call time before the value is sent to the speech-to-text engine. title: Keyterm type: string max_turn_silence: default: 1280 description: Available only for assemblyai/universal-streaming. Maximum duration of silence in milliseconds before forcing an end of turn. maximum: 5000 minimum: 100 title: Max Turn Silence type: integer min_turn_silence: default: 400 description: Available only for assemblyai/universal-streaming. Minimum duration of silence in milliseconds before a turn can end. Must be less than or equal to max_turn_silence. maximum: 5000 minimum: 100 title: Min Turn Silence type: integer numerals: title: Numerals type: boolean smart_format: title: Smart Format type: boolean title: TranscriptionSettingsConfig type: object Rule-Output: description: 'A targeting rule: ``match`` clauses (AND) gate ``serve``. An empty ``match`` is a catch-all (always fires).' properties: match: items: $ref: '#/components/schemas/Clause' title: Match type: array serve: $ref: '#/components/schemas/Serve' required: - serve title: Rule type: object FallbackConfigReq: properties: external_llm: $ref: '#/components/schemas/ExternalLLMReq' llm_api_key_ref: description: Integration secret identifier for the fallback model API key. type: string model: description: Fallback Telnyx-hosted model to use when the primary LLM provider is unavailable. type: string title: FallbackConfigReq type: object PaginatedScheduledEventList: properties: data: items: anyOf: - $ref: '#/components/schemas/ScheduledPhoneCallEventResponse' - $ref: '#/components/schemas/ScheduledSmsEventResponse' title: Data type: array meta: $ref: '#/components/schemas/Meta' required: - meta - data title: PaginatedScheduledEventList type: object TestWebhookToolResponseData: description: Response model for webhook tool test results properties: data: $ref: '#/components/schemas/TestWebhookToolResponse' required: - data title: TestWebhookToolResponseData type: object InferenceEmbeddingTransferToolParams: properties: custom_headers: description: Custom headers to be added to the SIP INVITE for the transfer command. items: properties: name: type: string value: description: The value of the header. Note that we support mustache templating for the value. For example you can use `{{#integration_secret}}test-secret{{/integration_secret}}` to pass the value of the integration secret. type: string type: object type: array from: description: Number or SIP URI placing the call. example: '+35319605860' type: string targets: description: The different possible targets of the transfer. The assistant will be able to choose one of the targets to transfer the call to. This can also be a dynamic variable string like `{{ targets }}` where `targets` is returned by the dynamic variables webhook and resolves to an array of target objects at runtime. oneOf: - items: properties: name: description: The name of the target. example: Support type: string to: description: The destination number or SIP URI of the call. example: '+13129457420' type: string required: - to type: object type: array - description: A dynamic variable string like `{{ targets }}` where `targets` is returned by the dynamic variables webhook and resolves to an array of target objects at runtime. example: '{{ targets }}' type: string voicemail_detection: description: Configuration for voicemail detection (AMD - Answering Machine Detection) on the transferred call. Allows the assistant to detect when a voicemail system answers the transferred call and take appropriate action. properties: detection_config: description: Advanced AMD detection configuration parameters. All values are optional - Telnyx will use defaults if not specified. properties: after_greeting_silence_millis: description: Duration of silence after greeting detection before finalizing the result. maximum: 5000 minimum: 100 type: integer between_words_silence_millis: description: Maximum silence duration between words during greeting. maximum: 5000 minimum: 10 type: integer greeting_duration_millis: description: Expected duration of greeting speech. maximum: 10000 minimum: 100 type: integer greeting_silence_duration_millis: description: Duration of silence after the greeting to wait before considering the greeting complete. maximum: 50000 minimum: 500 type: integer greeting_total_analysis_time_millis: description: Maximum time to spend analyzing the greeting. maximum: 300000 minimum: 500 type: integer initial_silence_millis: description: Maximum silence duration at the start of the call before speech. maximum: 500000 minimum: 100 type: integer maximum_number_of_words: description: Maximum number of words expected in a human greeting. maximum: 50 minimum: 1 type: integer maximum_word_length_millis: description: Maximum duration of a single word. maximum: 5000 minimum: 50 type: integer min_word_length_millis: description: Minimum duration for audio to be considered a word. maximum: 1000 minimum: 1 type: integer silence_threshold: description: Audio level threshold for silence detection. maximum: 1000 minimum: 1 type: integer total_analysis_time_millis: description: Total time allowed for AMD analysis. maximum: 60000 minimum: 500 type: integer type: object detection_mode: description: The AMD detection mode to use. 'premium' enables premium answering machine detection. 'disabled' turns off AMD detection. enum: - disabled - premium type: string on_voicemail_detected: description: Action to take when voicemail is detected on the transferred call. properties: action: description: The action to take when voicemail is detected. 'stop_transfer' hangs up immediately. 'leave_message_and_stop_transfer' leaves a message then hangs up. enum: - stop_transfer - leave_message_and_stop_transfer type: string voicemail_message: description: Configuration for the voicemail message to leave. Only applicable when action is 'leave_message_and_stop_transfer'. properties: message: description: The specific message to leave as voicemail (converted to speech). Only applicable when type is 'message'. type: string type: description: The type of voicemail message. Use 'message' to leave a specific TTS message, or 'warm_transfer_instructions' to play the warm transfer audio. enum: - message - warm_transfer_instructions type: string type: object type: object type: object warm_message_delay_ms: description: Optional delay in milliseconds before playing the warm message audio when the transferred call is answered. When set, the audio_url is not included in the dial command; instead, playback starts after the specified delay. When not set, existing behavior (audio_url in dial) is preserved. example: 2000 type: - integer - 'null' warm_transfer_instructions: description: Natural language instructions for your agent for how to provide context for the transfer recipient. example: Briefly greet the transfer recipient and provide any relevant information from the call. Let them know you will bridge the call right after. type: string required: - targets - from title: TransferToolParams type: object ScheduledPhoneCallEventResponse: properties: assistant_id: title: Assistant Id type: string call_attempts: items: $ref: '#/components/schemas/AssistantScheduledCallAttempt' title: Call Attempts type: array call_duration: description: Duration of the call in seconds title: Call Duration type: integer call_status: description: 'Values: busy, canceled, no-answer, ringing, completed, failed, in-progress' title: Call Status type: string conversation_id: title: Conversation Id type: string conversation_metadata: additionalProperties: anyOf: - type: string - type: integer - type: boolean title: Conversation Metadata type: object created_at: format: date-time title: Created At type: string dispatched_at: description: Date time at which call was sent format: date-time title: Dispatched At type: string dynamic_variables: additionalProperties: type: string description: A map of dynamic variable names to values. These variables can be referenced in the assistant's instructions and messages using {{variable_name}} syntax. title: Dynamic Variables type: object errors: items: type: string title: Errors type: array max_retries_client_errors: default: 0 description: 'Configure number of retries on client errors: busy, no-answer, failed, canceled (caller hung up before the callee answered)' title: Max Retries Client Errors type: integer retry_attempts: title: Retry Attempts type: integer retry_count: default: 0 title: Retry Count type: integer retry_interval_secs: title: Retry Interval Secs type: integer scheduled_at_fixed_datetime: format: date-time title: Scheduled At Fixed Datetime type: string scheduled_event_id: title: Scheduled Event Id type: string status: allOf: - $ref: '#/components/schemas/EventStatus' default: pending telnyx_agent_target: title: Telnyx Agent Target type: string telnyx_conversation_channel: $ref: '#/components/schemas/ConversationChannelType' telnyx_end_user_target: title: Telnyx End User Target type: string required: - telnyx_conversation_channel - telnyx_end_user_target - telnyx_agent_target - scheduled_at_fixed_datetime - assistant_id title: ScheduledPhoneCallEventResponse type: object ObservabilityReq: properties: host: title: Host type: string prompt_label: title: Prompt Label type: string prompt_name: title: Prompt Name type: string prompt_sync: $ref: '#/components/schemas/PromptSyncStatus' default: disabled prompt_version: minimum: 1.0 title: Prompt Version type: integer public_key_ref: title: Public Key Ref type: string secret_key_ref: title: Secret Key Ref type: string status: $ref: '#/components/schemas/ObservabilityStatus' default: disabled title: ObservabilityReq type: object AssistantSmsChatReq: properties: conversation_metadata: additionalProperties: anyOf: - type: string - type: integer - type: boolean title: Conversation Metadata type: object from: title: From type: string should_create_conversation: title: Should Create Conversation type: boolean text: title: Text type: string to: title: To type: string required: - from - to title: AssistantSmsChatReq type: object CanaryDeployRequest: description: 'Create/update request body. Accepts: - ``rules`` — canonical ordered list of routing rules' properties: rules: items: $ref: '#/components/schemas/Rule-Input' title: Rules type: array title: CanaryDeployRequest type: object TestWebhookToolRequest: description: Request model for testing a webhook tool properties: arguments: additionalProperties: true description: Key-value arguments to use for the webhook test title: Arguments type: object dynamic_variables: additionalProperties: true description: Key-value dynamic variables to use for the webhook test title: Dynamic Variables type: object title: TestWebhookToolRequest type: object EnabledFeatures: description: If `telephony` is enabled, the assistant will be able to make and receive calls. If `messaging` is enabled, the assistant will be able to send and receive messages. enum: - telephony - messaging type: string TestSuitesResponse: description: 'Response containing all available test suite names. Returns a list of distinct test suite names that can be used for filtering and organizing tests.' properties: data: description: Array of unique test suite names available to the user. example: - customer-support - sales-flow - onboarding items: type: string title: Data type: array required: - data title: TestSuitesResponse type: object SharedToolResponse: properties: created_at: title: Created At type: string display_name: title: Display Name type: string id: title: Id type: string timeout_ms: default: 5000 title: Timeout Ms type: integer tool_definition: additionalProperties: true title: Tool Definition type: object type: title: Type type: string required: - id - type - tool_definition title: SharedToolResponse type: object EventStatus: enum: - pending - in_progress - completed - failed title: EventStatus type: string Clause: description: 'A single attribute/operator/values check. A clause matches when the routing context''s value for ``attribute`` satisfies ``operator`` against any of ``values``.' properties: attribute: description: Attribute name from the routing context title: Attribute type: string operator: $ref: '#/components/schemas/Operator' description: Match operator values: items: type: string minItems: 1 title: Values type: array required: - attribute - operator - values title: Clause type: object ConversationChannelType: enum: - phone_call - sms_chat title: ConversationChannelType type: string TranscriptionEndpointingPlan: description: Endpointing thresholds used to decide when the user has finished speaking. Applies to non turn-taking transcription models. For `deepgram/flux`, use `transcription.settings.eot_threshold` / `eot_timeout_ms` / `eager_eot_threshold`. properties: on_no_punctuation_seconds: default: 1.5 description: Seconds to wait after the transcript ends without punctuation. format: float type: number on_number_seconds: default: 0.5 description: Seconds to wait after the transcript ends with a number. format: float type: number on_punctuation_seconds: default: 0.1 description: Seconds to wait after the transcript ends with punctuation. format: float type: number title: TranscriptionEndpointingPlan type: object RetrievalTool: properties: retrieval: $ref: '#/components/schemas/BucketIds' type: enum: - retrieval type: string required: - type - retrieval title: RetrievalTool type: object TestStatus: description: "Represents the lifecycle of a test:\n - 'pending': Test is waiting to be executed.\n - 'starting': Test execution is initializing.\n - 'running': Test is currently executing.\n - 'passed': Test completed successfully.\n - 'failed': Test executed but did not pass.\n - 'error': An error occurred during test execution." enum: - pending - starting - running - passed - failed - error title: TestStatus type: string ImportMetadata: properties: import_id: description: ID of the assistant in the provider's system. type: string import_provider: description: Provider the assistant was imported from. enum: - elevenlabs - vapi - retell type: string type: object WidgetSettings: description: Configuration settings for the assistant's web widget. properties: agent_thinking_text: description: Text displayed while the agent is processing. type: string audio_visualizer_config: $ref: '#/components/schemas/AudioVisualizerConfig' default_state: description: The default state of the widget. enum: - expanded - collapsed type: string give_feedback_url: description: URL for users to give feedback. type: - string - 'null' logo_icon_url: description: URL to a custom logo icon for the widget. type: - string - 'null' position: description: The positioning style for the widget. enum: - fixed - static type: string report_issue_url: description: URL for users to report issues. type: - string - 'null' speak_to_interrupt_text: description: Text prompting users to speak to interrupt. type: string start_call_text: description: Custom text displayed on the start call button. type: string theme: description: The visual theme for the widget. enum: - light - dark type: string view_history_url: description: URL to view conversation history. type: - string - 'null' title: WidgetSettings type: object inference-embedding_TransferTool: properties: transfer: $ref: '#/components/schemas/InferenceEmbeddingTransferToolParams' type: enum: - transfer type: string required: - type - transfer title: TransferTool type: object ExternalLLMReq: properties: authentication_method: $ref: '#/components/schemas/AuthenticationMethod' base_url: description: Base URL for the external LLM endpoint. type: string certificate_ref: description: Integration secret identifier for the client certificate used with certificate authentication. type: string forward_metadata: default: false description: 'When `true`, Telnyx forwards the assistant''s dynamic variables to the external LLM endpoint as a top-level `extra_metadata` object on the chat completion request body. Defaults to `false`. Example payload sent to the external endpoint: `{"extra_metadata": {"customer_name": "Jane", "account_id": "acct_789", "telnyx_agent_target": "+13125550100", "telnyx_end_user_target": "+13125550123"}}`. Distinct from OpenAI''s native `metadata` field, which has its own size and type limits.' type: boolean llm_api_key_ref: description: Integration secret identifier for the external LLM API key. type: string model: description: Model identifier to use with the external LLM endpoint. type: string token_retrieval_url: description: URL used to retrieve an access token when certificate authentication is enabled. type: string required: - model - base_url title: ExternalLLMReq type: object AuthenticationMethod: default: token description: Authentication method used when connecting to the external LLM endpoint. enum: - token - certificate title: AuthenticationMethod type: string TranscriptionSettings: properties: api_key_ref: description: Integration secret identifier for the transcription provider API key. Currently used for Azure transcription regions that require a customer-provided API key. title: Api Key Ref type: string language: description: 'The language of the audio to be transcribed. If not set, or if set to `auto`, supported models will automatically detect the language. For `deepgram/flux`, supported values are: `auto` (Telnyx language detection controls the language hint), `multi` (no language hint), and language-specific hints `en`, `es`, `fr`, `de`, `hi`, `ru`, `pt`, `ja`, `it`, and `nl`.' type: string model: description: 'The speech to text model to be used by the voice assistant. All Deepgram models are run on-premise. - `deepgram/flux` is optimized for turn-taking with multilingual language hints. - `deepgram/nova-3` is multilingual with automatic language detection. - `deepgram/nova-2` is Deepgram''s previous-generation multilingual model. - `azure/fast` is a multilingual Azure transcription model. - `assemblyai/universal-streaming` is a multilingual streaming model with configurable turn detection. - `xai/grok-stt` is a multilingual Grok STT model.' enum: - deepgram/flux - deepgram/nova-3 - deepgram/nova-2 - azure/fast - assemblyai/universal-streaming - xai/grok-stt - distil-whisper/distil-large-v2 - openai/whisper-large-v3-turbo type: string region: description: Region on third party cloud providers (currently Azure) if using one of their models. Some regions require `api_key_ref`. title: Region type: string settings: $ref: '#/components/schemas/TranscriptionSettingsConfig' type: object ObservabilityStatus: enum: - enabled - disabled title: ObservabilityStatus type: string ExternalLLM: properties: authentication_method: $ref: '#/components/schemas/AuthenticationMethod' base_url: description: Base URL for the external LLM endpoint. type: string certificate_ref: description: Integration secret identifier for the client certificate used with certificate authentication. type: string forward_metadata: default: false description: 'When `true`, Telnyx forwards the assistant''s dynamic variables to the external LLM endpoint as a top-level `extra_metadata` object on the chat completion request body. Defaults to `false`. Example payload sent to the external endpoint: `{"extra_metadata": {"customer_name": "Jane", "account_id": "acct_789", "telnyx_agent_target": "+13125550100", "telnyx_end_user_target": "+13125550123"}}`. Distinct from OpenAI''s native `metadata` field, which has its own size and type limits.' type: boolean llm_api_key_ref: description: Integration secret identifier for the external LLM API key. type: string model: description: Model identifier to use with the external LLM endpoint. type: string token_retrieval_url: description: URL used to retrieve an access token when certificate authentication is enabled. type: string required: - model - base_url title: ExternalLLM type: object AssistantChatResponse: properties: content: description: The assistant's generated response based on the input message and context. example: Why did the cat sit on the computer? Because it wanted to keep an eye on the mouse! title: Content type: string required: - content title: AssistantChatResponse type: object TelephonySettings: properties: default_texml_app_id: description: Default Texml App used for voice calls with your assistant. This will be created automatically on assistant creation. type: string noise_suppression: description: The noise suppression engine to use. Use 'disabled' to turn off noise suppression. enum: - krisp - deepfilternet - disabled type: string noise_suppression_config: description: Configuration for noise suppression. Only applicable when noise_suppression is 'deepfilternet'. properties: attenuation_limit: default: 100 description: 'Attenuation limit for noise suppression. Range: 0-100.' maximum: 100 minimum: 0 type: integer mode: description: Mode for noise suppression configuration. enum: - advanced type: string type: object recording_settings: description: Configuration for call recording format and channel settings. properties: channels: default: dual description: The number of channels for the recording. 'single' for mono, 'dual' for stereo. enum: - single - dual type: string enabled: default: true description: Whether call recording is enabled. When set to false, calls will not be recorded regardless of other recording configuration. type: boolean format: default: mp3 description: The format of the recording file. enum: - wav - mp3 type: string type: object supports_unauthenticated_web_calls: description: When enabled, allows users to interact with your AI assistant directly from your website without requiring authentication. This is required for FE widgets that work with assistants that have telephony enabled. type: boolean time_limit_secs: default: 1800 description: Maximum duration in seconds for the AI assistant to participate on the call. When this limit is reached the assistant will be stopped. This limit does not apply to portions of a call without an active assistant (for instance, a call transferred to a human representative). maximum: 14400 minimum: 30 type: integer user_idle_reply_secs: default: 10 description: Duration in seconds of end user silence before the assistant checks in on the user. When this limit is reached the assistant will prompt the user to respond. This is distinct from user_idle_timeout_secs which stops the assistant entirely. minimum: 0 type: integer user_idle_timeout_secs: description: Maximum duration in seconds of end user silence on the call. When this limit is reached the assistant will be stopped. This limit does not apply to portions of a call without an active assistant (for instance, a call transferred to a human representative). maximum: 14400 minimum: 10 type: integer voicemail_detection: description: 'Configuration for voicemail detection (AMD - Answering Machine Detection) on outgoing calls. These settings only apply if AMD is enabled on the Dial command. See [TeXML Dial documentation](https://developers.telnyx.com/api-reference/texml-rest-commands/initiate-an-outbound-call) for enabling AMD. Recommended settings: MachineDetection=Enable, AsyncAmd=true, DetectionMode=Premium.' properties: on_voicemail_detected: description: Action to take when voicemail is detected. properties: action: description: The action to take when voicemail is detected. enum: - stop_assistant - leave_message_and_stop_assistant - continue_assistant type: string voicemail_message: description: Configuration for the voicemail message to leave. Only applicable when action is 'leave_message_and_stop_assistant'. properties: message: description: The specific message to leave as voicemail. Only applicable when type is 'message'. type: string prompt: description: The prompt to use for generating the voicemail message. Only applicable when type is 'prompt'. type: string type: description: The type of voicemail message. Use 'prompt' to have the assistant generate a message based on a prompt, or 'message' to leave a specific message. enum: - prompt - message type: string type: object type: object type: object title: TelephonySettings type: object AssistantDeletedResponse: description: 'Aligns with the OpenAI API: https://platform.openai.com/docs/api-reference/assistants/deleteAssistant' properties: deleted: title: Deleted type: boolean id: title: Id type: string object: title: Object type: string required: - id - object - deleted title: AssistantDeletedResponse type: object TestWebhookToolResponse: description: Response model for webhook tool test results properties: content_type: title: Content Type type: string request: additionalProperties: true title: Request type: object response: title: Response type: string status_code: title: Status Code type: integer success: title: Success type: boolean required: - success - status_code - content_type - response - request title: TestWebhookToolResponse type: object securitySchemes: bearerAuth: scheme: bearer type: http branded-calling_bearerAuth: description: API key passed as a Bearer token in the Authorization header scheme: bearer type: http oauthClientAuth: description: OAuth 2.0 authentication for Telnyx API and MCP integrations flows: authorizationCode: authorizationUrl: https://api.telnyx.com/v2/oauth/authorize refreshUrl: https://api.telnyx.com/v2/oauth/token scopes: admin: Administrative access to Telnyx resources tokenUrl: https://api.telnyx.com/v2/oauth/token clientCredentials: scopes: admin: Administrative access to Telnyx resources tokenUrl: https://api.telnyx.com/v2/oauth/token type: oauth2 outbound-voice-profiles_bearerAuth: bearerFormat: JWT scheme: bearer type: http pronunciation-dicts_bearerAuth: description: Telnyx API v2 key. Obtain from https://portal.telnyx.com scheme: bearer type: http stored-payment-transactions_bearerAuth: bearerFormat: JWT scheme: bearer type: http