Telnyx · Schema

UpdateAssistantRequest

CommunicationsCPaaSVoiceSMSIoTTelecommunicationsMessagingArtificial IntelligenceMCPVoice AIPhone NumbersInference

Properties

Name Type Description
description string
dynamic_variables object Map of dynamic variables and their default values
dynamic_variables_webhook_timeout_ms integer 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
dynamic_variables_webhook_url string 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 u
enabled_features array
external_llm object
fallback_config object
greeting string 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 s
insight_settings object
instructions string System instructions for the assistant. These may be templated with [dynamic variables](https://developers.telnyx.com/docs/inference/ai-assistants/dynamic-variables)
integrations array 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 ref
interruption_settings object
llm_api_key_ref string 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/int
mcp_servers array MCP servers attached to the assistant. Create MCP servers with `/ai/mcp_servers`, then reference them by `id` here.
messaging_settings object
model string 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
name string
observability_settings object
post_conversation_settings object
privacy_settings object
tags array Tags associated with the assistant. Tags can also be managed with the assistant tag endpoints.
telephony_settings object
tool_ids array IDs of shared tools to attach to the assistant. New integrations should prefer `tool_ids` over inline `tools`.
tools object 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 object
version_name string Human-readable name for the assistant version.
voice_settings object
widget_settings object
View JSON Schema on GitHub

JSON Schema

telnyx-update-assistant-request-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/telnyx/main/json-schema/telnyx-update-assistant-request-schema.json",
  "title": "UpdateAssistantRequest",
  "x-generated": "2026-10-08",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/telnyx-assistants-api-openapi.yml#/components/schemas/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": "#/$defs/EnabledFeatures"
      },
      "type": "array",
      "uniqueItems": true
    },
    "external_llm": {
      "$ref": "#/$defs/ExternalLLMReq"
    },
    "fallback_config": {
      "$ref": "#/$defs/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 `<assistant-speaks-first-with-model-generated-message>` to have the assistant generate the greeting based on the system instructions.",
      "type": "string"
    },
    "insight_settings": {
      "$ref": "#/$defs/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": "#/$defs/AssistantIntegration"
      },
      "type": "array"
    },
    "interruption_settings": {
      "$ref": "#/$defs/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": "#/$defs/AssistantMCPServer"
      },
      "type": "array"
    },
    "messaging_settings": {
      "$ref": "#/$defs/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": "#/$defs/ObservabilityReq"
    },
    "post_conversation_settings": {
      "$ref": "#/$defs/PostConversationSettingsReq"
    },
    "privacy_settings": {
      "$ref": "#/$defs/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": "#/$defs/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": "#/$defs/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": "#/$defs/TranscriptionSettings"
    },
    "version_name": {
      "default": "New assistant",
      "description": "Human-readable name for the assistant version.",
      "maxLength": 50,
      "type": "string"
    },
    "voice_settings": {
      "$ref": "#/$defs/VoiceSettings"
    },
    "widget_settings": {
      "$ref": "#/$defs/WidgetSettings"
    }
  },
  "type": "object",
  "$defs": {
    "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"
    },
    "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"
    },
    "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": "#/$defs/inference-embedding_WebhookTool"
          },
          {
            "$ref": "#/$defs/RetrievalTool"
          },
          {
            "$ref": "#/$defs/HandoffTool"
          },
          {
            "$ref": "#/$defs/HangupTool"
          },
          {
            "$ref": "#/$defs/inference-embedding_TransferTool"
          },
          {
            "$ref": "#/$defs/InviteTool"
          },
          {
            "$ref": "#/$defs/SIPReferTool"
          },
          {
            "$ref": "#/$defs/DTMFTool"
          },
          {
            "$ref": "#/$defs/SendMessageTool"
          },
          {
            "$ref": "#/$defs/SkipTurnTool"
          }
        ]
      },
      "type": "array"
    },
    "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"
    },
    "AuthenticationMethod": {
      "default": "token",
      "description": "Authentication method used when connecting to the external LLM endpoint.",
      "enum": [
        "token",
        "certificate"
      ],
      "title": "AuthenticationMethod",
      "type": "string"
    },
    "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"
    },
    "DTMFTool": {
      "properties": {
        "send_dtmf": {
          "additionalProperties": true,
          "type": "object"
        },
        "type": {
          "enum": [
            "send_dtmf"
          ],
          "type": "string"
        }
      },
      "required": [
        "type",
        "send_dtmf"
      ],
      "title": "DTMFTool",
      "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"
    },
    "ExternalLLMReq": {
      "properties": {
        "authentication_method": {
          "$ref": "#/$defs/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"
    },
    "FallbackConfigReq": {
      "properties": {
        "external_llm": {
          "$ref": "#/$defs/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"
    },
    "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": "#/$defs/HandoffToolParams"
        },
        "type": {
          "enum": [
            "handoff"
          ],
          "type": "string"
        }
      },
      "required": [
        "type",
        "handoff"
      ],
      "title": "HandoffTool",
      "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.",
                "type": "string"
              },
              "name": {
                "description": "Helpful name for giving context on when to handoff to the assistant.",
                "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"
    },
    "HangupTool": {
      "properties": {
        "hangup": {
          "$ref": "#/$defs/HangupToolParams"
        },
        "type": {
          "enum": [
            "hangup"
          ],
          "type": "string"
        }
      },
      "required": [
        "type",
        "hangup"
      ],
      "title": "HangupTool",
      "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"
    },
    "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.",
          "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.",
                    "type": "string"
                  },
                  "to": {
                    "description": "The destination number or SIP URI of the call.",
                    "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.",
              "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.",
          "type": [
            "integer",
            "null"
          ]
        },
        "warm_transfer_instructions": {
          "description": "Natural language instructions for your agent for how to provide context for the transfer recipient.",
          "type": "string"
        }
      },
      "required": [
        "targets",
        "from"
      ],
      "title": "TransferToolParams",
      "type": "object"
    },
    "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"
    },
    "InviteTool": {
      "properties": {
        "invite": {
          "$ref": "#/$defs/InviteToolConfig",
          "title": "InviteToolConfig"
        },
        "type": {
          "enum": [
            "invite"
          ],
          "type": "string"
        }
      },
      "required": [
        "type",
        "invite"
      ],
      "title": "InviteTool",
      "type": "object"
    },
    "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.",
          "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.",
                    "type": "string"
                  },
                  "to": {
                    "description": "The destination number or SIP URI of the call.",
                    "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.",
              "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"
    },
    "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"
    },
    "ObservabilityReq": {
      "properties": {
        "host": {
          "title": "Host",
          "type": "string"
        },
        "prompt_label": {
          "title": "Prompt Label",
          "type": "string"
        },
        "prompt_name": {
          "title": "Prompt Name",
          "type": "string"
        },
        "prompt_sync": {
          "$ref": "#/$defs/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": "#/$defs/ObservabilityStatus",
          "default": "disabled"
        }
      },
      "title": "ObservabilityReq",
      "type": "object"
    },
    "ObservabilityStatus": {
      "enum": [
        "enabled",
        "disabled"
      ],
      "title": "ObservabilityStatus",
      "type": "string"
    },
    "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"
    },
    "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"
    },
    "PromptSyncStatus": {
      "description": "Whether to auto-publish the assistant's instructions as a Langfuse prompt.\n\nWhen ENABLED + prompt_name set, every assistant create/update pushes\n`instructions` to Langfuse via create_prompt and stores the returned\nversion in prompt_version.",
      "enum": [
        "enabled",
        "disabled"
      ],
      "title": "PromptSyncStatus",
      "type": "string"
    },
    "RetrievalTool": {
      "properties": {
        "retrieval": {
          "$ref": "#/$defs/BucketIds"
        },
        "type": {
          "enum": [
            "retrieval"
          ],
          "type": "string"
        }
      },
      "required": [
        "type",
        "retrieval"
      ],
      "title": "RetrievalTool",
      "type": "object"
    },
    "SIPReferTool": {
      "properties": {
        "refer": {
          "$ref": "#/$defs/SIPReferToolParams"
        },
        "type": {
          "enum": [
   

# --- truncated at 32 KB (66 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/telnyx/refs/heads/main/json-schema/telnyx-update-assistant-request-schema.json

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/telnyx-update-assistant-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.