From 74417c62e646c895585b593febe398f8610ae9c2 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Wed, 2 Apr 2025 00:24:16 +0000 Subject: [PATCH] chore: update OpenAPI specification --- fern/apis/api/openapi.json | 2803 ++++++++++++++++++++++++++++-------- 1 file changed, 2175 insertions(+), 628 deletions(-) diff --git a/fern/apis/api/openapi.json b/fern/apis/api/openapi.json index d073512e5..d80492dbd 100644 --- a/fern/apis/api/openapi.json +++ b/fern/apis/api/openapi.json @@ -1132,6 +1132,18 @@ { "$ref": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO", "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" + }, + { + "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", + "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/CreateMcpToolDTO", + "title": "McpTool" } ], "discriminator": { @@ -1149,7 +1161,10 @@ "textEditor": "#/components/schemas/CreateTextEditorToolDTO", "query": "#/components/schemas/CreateQueryToolDTO", "google.calendar.event.create": "#/components/schemas/CreateGoogleCalendarCreateEventToolDTO", - "google.sheets.row.append": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO" + "google.sheets.row.append": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO", + "google.calendar.availability.check": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "slack.message.send": "#/components/schemas/CreateSlackSendMessageToolDTO", + "mcp": "#/components/schemas/CreateMcpToolDTO" } } } @@ -1214,6 +1229,18 @@ { "$ref": "#/components/schemas/GoogleSheetsRowAppendTool", "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/GoogleCalendarCheckAvailabilityTool", + "title": "GoogleCalendarCheckAvailabilityTool" + }, + { + "$ref": "#/components/schemas/SlackSendMessageTool", + "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/McpTool", + "title": "McpTool" } ], "discriminator": { @@ -1231,7 +1258,10 @@ "textEditor": "#/components/schemas/TextEditorTool", "query": "#/components/schemas/QueryTool", "google.calendar.event.create": "#/components/schemas/GoogleCalendarCreateEventTool", - "google.sheets.row.append": "#/components/schemas/GoogleSheetsRowAppendTool" + "google.sheets.row.append": "#/components/schemas/GoogleSheetsRowAppendTool", + "google.calendar.availability.check": "#/components/schemas/GoogleCalendarCheckAvailabilityTool", + "slack.message.send": "#/components/schemas/SlackSendMessageTool", + "mcp": "#/components/schemas/McpTool" } } } @@ -1404,6 +1434,18 @@ { "$ref": "#/components/schemas/GoogleSheetsRowAppendTool", "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/GoogleCalendarCheckAvailabilityTool", + "title": "GoogleCalendarCheckAvailabilityTool" + }, + { + "$ref": "#/components/schemas/SlackSendMessageTool", + "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/McpTool", + "title": "McpTool" } ], "discriminator": { @@ -1421,7 +1463,10 @@ "textEditor": "#/components/schemas/TextEditorTool", "query": "#/components/schemas/QueryTool", "google.calendar.event.create": "#/components/schemas/GoogleCalendarCreateEventTool", - "google.sheets.row.append": "#/components/schemas/GoogleSheetsRowAppendTool" + "google.sheets.row.append": "#/components/schemas/GoogleSheetsRowAppendTool", + "google.calendar.availability.check": "#/components/schemas/GoogleCalendarCheckAvailabilityTool", + "slack.message.send": "#/components/schemas/SlackSendMessageTool", + "mcp": "#/components/schemas/McpTool" } } } @@ -1512,6 +1557,18 @@ { "$ref": "#/components/schemas/GoogleSheetsRowAppendTool", "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/GoogleCalendarCheckAvailabilityTool", + "title": "GoogleCalendarCheckAvailabilityTool" + }, + { + "$ref": "#/components/schemas/SlackSendMessageTool", + "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/McpTool", + "title": "McpTool" } ], "discriminator": { @@ -1529,7 +1586,10 @@ "textEditor": "#/components/schemas/TextEditorTool", "query": "#/components/schemas/QueryTool", "google.calendar.event.create": "#/components/schemas/GoogleCalendarCreateEventTool", - "google.sheets.row.append": "#/components/schemas/GoogleSheetsRowAppendTool" + "google.sheets.row.append": "#/components/schemas/GoogleSheetsRowAppendTool", + "google.calendar.availability.check": "#/components/schemas/GoogleCalendarCheckAvailabilityTool", + "slack.message.send": "#/components/schemas/SlackSendMessageTool", + "mcp": "#/components/schemas/McpTool" } } } @@ -1616,6 +1676,18 @@ { "$ref": "#/components/schemas/UpdateGoogleSheetsRowAppendToolDTO", "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/UpdateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" + }, + { + "$ref": "#/components/schemas/UpdateSlackSendMessageToolDTO", + "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/UpdateMcpToolDTO", + "title": "McpTool" } ], "discriminator": { @@ -1633,7 +1705,10 @@ "textEditor": "#/components/schemas/UpdateTextEditorToolDTO", "query": "#/components/schemas/UpdateQueryToolDTO", "google.calendar.event.create": "#/components/schemas/UpdateGoogleCalendarCreateEventToolDTO", - "google.sheets.row.append": "#/components/schemas/UpdateGoogleSheetsRowAppendToolDTO" + "google.sheets.row.append": "#/components/schemas/UpdateGoogleSheetsRowAppendToolDTO", + "google.calendar.availability.check": "#/components/schemas/UpdateGoogleCalendarCheckAvailabilityToolDTO", + "slack.message.send": "#/components/schemas/UpdateSlackSendMessageToolDTO", + "mcp": "#/components/schemas/UpdateMcpToolDTO" } } } @@ -1698,6 +1773,18 @@ { "$ref": "#/components/schemas/GoogleSheetsRowAppendTool", "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/GoogleCalendarCheckAvailabilityTool", + "title": "GoogleCalendarCheckAvailabilityTool" + }, + { + "$ref": "#/components/schemas/SlackSendMessageTool", + "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/McpTool", + "title": "McpTool" } ], "discriminator": { @@ -1715,7 +1802,10 @@ "textEditor": "#/components/schemas/TextEditorTool", "query": "#/components/schemas/QueryTool", "google.calendar.event.create": "#/components/schemas/GoogleCalendarCreateEventTool", - "google.sheets.row.append": "#/components/schemas/GoogleSheetsRowAppendTool" + "google.sheets.row.append": "#/components/schemas/GoogleSheetsRowAppendTool", + "google.calendar.availability.check": "#/components/schemas/GoogleCalendarCheckAvailabilityTool", + "slack.message.send": "#/components/schemas/SlackSendMessageTool", + "mcp": "#/components/schemas/McpTool" } } } @@ -1803,6 +1893,18 @@ { "$ref": "#/components/schemas/GoogleSheetsRowAppendTool", "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/GoogleCalendarCheckAvailabilityTool", + "title": "GoogleCalendarCheckAvailabilityTool" + }, + { + "$ref": "#/components/schemas/SlackSendMessageTool", + "title": "SlackSendMessageTool" + }, + { + "$ref": "#/components/schemas/McpTool", + "title": "McpTool" } ], "discriminator": { @@ -1820,7 +1922,10 @@ "textEditor": "#/components/schemas/TextEditorTool", "query": "#/components/schemas/QueryTool", "google.calendar.event.create": "#/components/schemas/GoogleCalendarCreateEventTool", - "google.sheets.row.append": "#/components/schemas/GoogleSheetsRowAppendTool" + "google.sheets.row.append": "#/components/schemas/GoogleSheetsRowAppendTool", + "google.calendar.availability.check": "#/components/schemas/GoogleCalendarCheckAvailabilityTool", + "slack.message.send": "#/components/schemas/SlackSendMessageTool", + "mcp": "#/components/schemas/McpTool" } } } @@ -4954,6 +5059,7 @@ "enum": [ "nova-3", "nova-3-general", + "nova-3-medical", "nova-2", "nova-2-general", "nova-2-meeting", @@ -6151,6 +6257,7 @@ "enum": [ "nova-3", "nova-3-general", + "nova-3-medical", "nova-2", "nova-2-general", "nova-2-meeting", @@ -8408,168 +8515,536 @@ "server" ] }, - "AnyscaleModel": { + "KnowledgeBase": { "type": "object", "properties": { - "messages": { - "description": "This is the starting state for the conversation.", + "name": { + "type": "string", + "description": "The name of the knowledge base", + "example": "My Knowledge Base" + }, + "provider": { + "type": "string", + "description": "The provider of the knowledge base", + "enum": [ + "google" + ], + "example": "google" + }, + "model": { + "type": "string", + "description": "The model to use for the knowledge base", + "enum": [ + "gemini-2.0-flash-thinking-exp", + "gemini-2.0-pro-exp-02-05", + "gemini-2.0-flash", + "gemini-2.0-flash-lite", + "gemini-2.0-flash-lite-preview-02-05", + "gemini-2.0-flash-exp", + "gemini-2.0-flash-realtime-exp", + "gemini-1.5-flash", + "gemini-1.5-flash-002", + "gemini-1.5-pro", + "gemini-1.5-pro-002", + "gemini-1.0-pro" + ] + }, + "description": { + "type": "string", + "description": "A description of the knowledge base" + }, + "fileIds": { + "description": "The file IDs associated with this knowledge base", "type": "array", "items": { - "$ref": "#/components/schemas/OpenAIMessage" + "type": "string" } + } + }, + "required": [ + "name", + "provider", + "description", + "fileIds" + ] + }, + "CreateQueryToolDTO": { + "type": "object", + "properties": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false }, - "tools": { + "messages": { "type": "array", - "description": "These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.\n\nBoth `tools` and `toolIds` can be used together.", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", "items": { "oneOf": [ { - "$ref": "#/components/schemas/CreateDtmfToolDTO", - "title": "DtmfTool" - }, - { - "$ref": "#/components/schemas/CreateEndCallToolDTO", - "title": "EndCallTool" - }, - { - "$ref": "#/components/schemas/CreateVoicemailToolDTO", - "title": "VoicemailTool" - }, - { - "$ref": "#/components/schemas/CreateFunctionToolDTO", - "title": "FunctionTool" - }, - { - "$ref": "#/components/schemas/CreateGhlToolDTO", - "title": "GhlTool" - }, - { - "$ref": "#/components/schemas/CreateMakeToolDTO", - "title": "MakeTool" - }, - { - "$ref": "#/components/schemas/CreateTransferCallToolDTO", - "title": "TransferTool" + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" }, { - "$ref": "#/components/schemas/CreateQueryToolDTO", - "title": "QueryTool" + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" }, { - "$ref": "#/components/schemas/CreateGoogleCalendarCreateEventToolDTO", - "title": "GoogleCalendarCreateEventTool" + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" }, { - "$ref": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO", - "title": "GoogleSheetsRowAppendTool" + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" } ] } }, - "toolIds": { - "description": "These are the tools that the assistant can use during the call. To use transient tools, use `tools`.\n\nBoth `tools` and `toolIds` can be used together.", + "type": { + "type": "string", + "enum": [ + "query" + ], + "description": "The type of tool. \"query\" for Query tool." + }, + "knowledgeBases": { + "description": "The knowledge bases to query", "type": "array", "items": { - "type": "string" + "$ref": "#/components/schemas/KnowledgeBase" } }, - "knowledgeBase": { - "description": "These are the options for the knowledge base.", - "oneOf": [ + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ { - "$ref": "#/components/schemas/CreateCustomKnowledgeBaseDTO", - "title": "Custom" + "$ref": "#/components/schemas/OpenAIFunction" } ] }, - "knowledgeBaseId": { - "type": "string", - "description": "This is the ID of the knowledge base the model will use." - }, - "provider": { - "type": "string", - "enum": [ - "anyscale" + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } ] - }, - "model": { - "type": "string", - "description": "This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b" - }, - "temperature": { - "type": "number", - "description": "This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.", - "minimum": 0, - "maximum": 2 - }, - "maxTokens": { - "type": "number", - "description": "This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250.", - "minimum": 50, - "maximum": 10000 - }, - "emotionRecognitionEnabled": { - "type": "boolean", - "description": "This determines whether we detect user's emotion while they speak and send it as an additional info to model.\n\nDefault `false` because the model is usually are good at understanding the user's emotion from text.\n\n@default false" - }, - "numFastTurns": { - "type": "number", - "description": "This sets how many turns at the start of the conversation to use a smaller, faster model from the same provider before switching to the primary model. Example, gpt-3.5-turbo if provider is openai.\n\nDefault is 0.\n\n@default 0", - "minimum": 0 } }, "required": [ - "provider", - "model" + "type" ] }, - "AnthropicThinkingConfig": { + "CreateGoogleCalendarCreateEventToolDTO": { "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "enabled" - ] + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false }, - "budgetTokens": { - "type": "number", - "description": "The maximum number of tokens to allocate for thinking.\nMust be between 1024 and 100000 tokens.", - "minimum": 1024, - "maximum": 100000 - } - }, - "required": [ - "type", - "budgetTokens" - ] - }, - "AnthropicModel": { - "type": "object", - "properties": { "messages": { - "description": "This is the starting state for the conversation.", - "type": "array", - "items": { - "$ref": "#/components/schemas/OpenAIMessage" - } - }, - "tools": { "type": "array", - "description": "These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.\n\nBoth `tools` and `toolIds` can be used together.", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", "items": { "oneOf": [ { - "$ref": "#/components/schemas/CreateDtmfToolDTO", - "title": "DtmfTool" + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" }, { - "$ref": "#/components/schemas/CreateEndCallToolDTO", - "title": "EndCallTool" + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" }, { - "$ref": "#/components/schemas/CreateVoicemailToolDTO", - "title": "VoicemailTool" + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { + "type": "string", + "enum": [ + "google.calendar.event.create" + ], + "description": "The type of tool. \"google.calendar.event.create\" for Google Calendar tool." + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } + ] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + } + }, + "required": [ + "type" + ] + }, + "CreateGoogleSheetsRowAppendToolDTO": { + "type": "object", + "properties": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { + "type": "string", + "enum": [ + "google.sheets.row.append" + ], + "description": "The type of tool. \"google.sheets.row.append\" for Google Sheets tool." + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } + ] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + } + }, + "required": [ + "type" + ] + }, + "CreateGoogleCalendarCheckAvailabilityToolDTO": { + "type": "object", + "properties": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { + "type": "string", + "enum": [ + "google.calendar.availability.check" + ], + "description": "The type of tool. \"google.calendar.availability.check\" for Google Calendar availability check tool." + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } + ] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + } + }, + "required": [ + "type" + ] + }, + "CreateSlackSendMessageToolDTO": { + "type": "object", + "properties": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { + "type": "string", + "enum": [ + "slack.message.send" + ], + "description": "The type of tool. \"slack.message.send\" for Slack send message tool." + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } + ] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + } + }, + "required": [ + "type" + ] + }, + "AnyscaleModel": { + "type": "object", + "properties": { + "messages": { + "description": "This is the starting state for the conversation.", + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAIMessage" + } + }, + "tools": { + "type": "array", + "description": "These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.\n\nBoth `tools` and `toolIds` can be used together.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/CreateDtmfToolDTO", + "title": "DtmfTool" + }, + { + "$ref": "#/components/schemas/CreateEndCallToolDTO", + "title": "EndCallTool" + }, + { + "$ref": "#/components/schemas/CreateVoicemailToolDTO", + "title": "VoicemailTool" + }, + { + "$ref": "#/components/schemas/CreateFunctionToolDTO", + "title": "FunctionTool" + }, + { + "$ref": "#/components/schemas/CreateGhlToolDTO", + "title": "GhlTool" + }, + { + "$ref": "#/components/schemas/CreateMakeToolDTO", + "title": "MakeTool" + }, + { + "$ref": "#/components/schemas/CreateTransferCallToolDTO", + "title": "TransferTool" + }, + { + "$ref": "#/components/schemas/CreateQueryToolDTO", + "title": "QueryTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCreateEventToolDTO", + "title": "GoogleCalendarCreateEventTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO", + "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" + }, + { + "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", + "title": "SlackSendMessageTool" + } + ] + } + }, + "toolIds": { + "description": "These are the tools that the assistant can use during the call. To use transient tools, use `tools`.\n\nBoth `tools` and `toolIds` can be used together.", + "type": "array", + "items": { + "type": "string" + } + }, + "knowledgeBase": { + "description": "These are the options for the knowledge base.", + "oneOf": [ + { + "$ref": "#/components/schemas/CreateCustomKnowledgeBaseDTO", + "title": "Custom" + } + ] + }, + "knowledgeBaseId": { + "type": "string", + "description": "This is the ID of the knowledge base the model will use." + }, + "provider": { + "type": "string", + "enum": [ + "anyscale" + ] + }, + "model": { + "type": "string", + "description": "This is the name of the model. Ex. cognitivecomputations/dolphin-mixtral-8x7b" + }, + "temperature": { + "type": "number", + "description": "This is the temperature that will be used for calls. Default is 0 to leverage caching for lower latency.", + "minimum": 0, + "maximum": 2 + }, + "maxTokens": { + "type": "number", + "description": "This is the max number of tokens that the assistant will be allowed to generate in each turn of the conversation. Default is 250.", + "minimum": 50, + "maximum": 10000 + }, + "emotionRecognitionEnabled": { + "type": "boolean", + "description": "This determines whether we detect user's emotion while they speak and send it as an additional info to model.\n\nDefault `false` because the model is usually are good at understanding the user's emotion from text.\n\n@default false" + }, + "numFastTurns": { + "type": "number", + "description": "This sets how many turns at the start of the conversation to use a smaller, faster model from the same provider before switching to the primary model. Example, gpt-3.5-turbo if provider is openai.\n\nDefault is 0.\n\n@default 0", + "minimum": 0 + } + }, + "required": [ + "provider", + "model" + ] + }, + "AnthropicThinkingConfig": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "enabled" + ] + }, + "budgetTokens": { + "type": "number", + "description": "The maximum number of tokens to allocate for thinking.\nMust be between 1024 and 100000 tokens.", + "minimum": 1024, + "maximum": 100000 + } + }, + "required": [ + "type", + "budgetTokens" + ] + }, + "AnthropicModel": { + "type": "object", + "properties": { + "messages": { + "description": "This is the starting state for the conversation.", + "type": "array", + "items": { + "$ref": "#/components/schemas/OpenAIMessage" + } + }, + "tools": { + "type": "array", + "description": "These are the tools that the assistant can use during the call. To use existing tools, use `toolIds`.\n\nBoth `tools` and `toolIds` can be used together.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/CreateDtmfToolDTO", + "title": "DtmfTool" + }, + { + "$ref": "#/components/schemas/CreateEndCallToolDTO", + "title": "EndCallTool" + }, + { + "$ref": "#/components/schemas/CreateVoicemailToolDTO", + "title": "VoicemailTool" }, { "$ref": "#/components/schemas/CreateFunctionToolDTO", @@ -8598,6 +9073,14 @@ { "$ref": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO", "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" + }, + { + "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", + "title": "SlackSendMessageTool" } ] } @@ -8731,6 +9214,14 @@ { "$ref": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO", "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" + }, + { + "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", + "title": "SlackSendMessageTool" } ] } @@ -8850,6 +9341,14 @@ { "$ref": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO", "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" + }, + { + "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", + "title": "SlackSendMessageTool" } ] } @@ -8986,6 +9485,14 @@ { "$ref": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO", "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" + }, + { + "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", + "title": "SlackSendMessageTool" } ] } @@ -9101,6 +9608,14 @@ { "$ref": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO", "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" + }, + { + "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", + "title": "SlackSendMessageTool" } ] } @@ -9289,6 +9804,14 @@ { "$ref": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO", "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" + }, + { + "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", + "title": "SlackSendMessageTool" } ] } @@ -9426,6 +9949,14 @@ { "$ref": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO", "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" + }, + { + "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", + "title": "SlackSendMessageTool" } ] } @@ -9552,6 +10083,14 @@ { "$ref": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO", "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" + }, + { + "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", + "title": "SlackSendMessageTool" } ] } @@ -9670,6 +10209,14 @@ { "$ref": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO", "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" + }, + { + "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", + "title": "SlackSendMessageTool" } ] } @@ -9887,6 +10434,14 @@ { "$ref": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO", "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" + }, + { + "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", + "title": "SlackSendMessageTool" } ] } @@ -10002,6 +10557,14 @@ { "$ref": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO", "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" + }, + { + "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", + "title": "SlackSendMessageTool" } ] } @@ -10117,6 +10680,14 @@ { "$ref": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO", "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" + }, + { + "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", + "title": "SlackSendMessageTool" } ] } @@ -10300,6 +10871,67 @@ ] } }, + "model": { + "description": "These are the options for the workflow's LLM.", + "oneOf": [ + { + "$ref": "#/components/schemas/AnthropicModel", + "title": "Anthropic" + }, + { + "$ref": "#/components/schemas/AnyscaleModel", + "title": "Anyscale" + }, + { + "$ref": "#/components/schemas/CerebrasModel", + "title": "Cerebras" + }, + { + "$ref": "#/components/schemas/CustomLLMModel", + "title": "CustomLLM" + }, + { + "$ref": "#/components/schemas/DeepInfraModel", + "title": "DeepInfra" + }, + { + "$ref": "#/components/schemas/DeepSeekModel", + "title": "DeepSeek" + }, + { + "$ref": "#/components/schemas/GoogleModel", + "title": "Google" + }, + { + "$ref": "#/components/schemas/GroqModel", + "title": "Groq" + }, + { + "$ref": "#/components/schemas/InflectionAIModel", + "title": "InflectionAI" + }, + { + "$ref": "#/components/schemas/OpenAIModel", + "title": "OpenAI" + }, + { + "$ref": "#/components/schemas/OpenRouterModel", + "title": "OpenRouter" + }, + { + "$ref": "#/components/schemas/PerplexityAIModel", + "title": "PerplexityAI" + }, + { + "$ref": "#/components/schemas/TogetherAIModel", + "title": "Together" + }, + { + "$ref": "#/components/schemas/XaiModel", + "title": "XAI" + } + ] + }, "id": { "type": "string" }, @@ -10389,6 +11021,14 @@ { "$ref": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO", "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" + }, + { + "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", + "title": "SlackSendMessageTool" } ] } @@ -10516,6 +11156,14 @@ { "$ref": "#/components/schemas/CreateGoogleSheetsRowAppendToolDTO", "title": "GoogleSheetsRowAppendTool" + }, + { + "$ref": "#/components/schemas/CreateGoogleCalendarCheckAvailabilityToolDTO", + "title": "GoogleCalendarCheckAvailabilityTool" + }, + { + "$ref": "#/components/schemas/CreateSlackSendMessageToolDTO", + "title": "SlackSendMessageTool" } ] } @@ -14813,6 +15461,56 @@ "authorizationId" ] }, + "CreateGoogleSheetsOAuth2AuthorizationCredentialDTO": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "google.sheets.oauth2-authorization" + ] + }, + "authorizationId": { + "type": "string", + "description": "The authorization ID for the OAuth2 authorization" + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "authorizationId" + ] + }, + "CreateSlackOAuth2AuthorizationCredentialDTO": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "slack.oauth2-authorization" + ] + }, + "authorizationId": { + "type": "string", + "description": "The authorization ID for the OAuth2 authorization" + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "authorizationId" + ] + }, "TransferAssistantHookAction": { "type": "object", "properties": { @@ -15275,8 +15973,9 @@ }, "waitFunction": { "type": "string", - "description": "This expression describes how long the bot will wait to start speaking based on the likelihood that the user has reached an endpoint.\n\nThis is a millisecond valued function. It maps probabilities (real numbers on [0,1]) to seconds that the user should wait ([0, \\infty]). Any negative values that are returned are set to zero (the bot can't start talking in the past).\n\nA probability of zero represents very high confidence that the caller has stopped speaking, and would like the bot to speak to them. A probability of one represents very high confidence that the caller is still speaking.\n\nUnder the hood, this is parsed into a mathjs expression. Whatever you use to write your expression needs to be valid with respect to mathjs\n\n@default \"200 + 8000 * x\"", + "description": "This expression describes how long the bot will wait to start speaking based on the likelihood that the user has reached an endpoint.\n\nThis is a millisecond valued function. It maps probabilities (real numbers on [0,1]) to milliseconds that the bot should wait before speaking ([0, \\infty]). Any negative values that are returned are set to zero (the bot can't start talking in the past).\n\nA probability of zero represents very high confidence that the caller has stopped speaking, and would like the bot to speak to them. A probability of one represents very high confidence that the caller is still speaking.\n\nUnder the hood, this is parsed into a mathjs expression. Whatever you use to write your expression needs to be valid with respect to mathjs\n\n@default \"70 + 4000 * x\"", "examples": [ + "70 + 4000 * x", "200 + 8000 * x", "4000 * (1 - cos(pi * x))" ] @@ -16193,8 +16892,64 @@ { "$ref": "#/components/schemas/CreateGoogleSheetsOAuth2AuthorizationCredentialDTO", "title": "GoogleSheetsOAuth2AuthorizationCredential" + }, + { + "$ref": "#/components/schemas/CreateSlackOAuth2AuthorizationCredentialDTO", + "title": "SlackOAuth2AuthorizationCredential" } - ] + ], + "discriminator": { + "propertyName": "provider", + "mapping": { + "11labs": "#/components/schemas/CreateElevenLabsCredentialDTO", + "anthropic": "#/components/schemas/CreateAnthropicCredentialDTO", + "anyscale": "#/components/schemas/CreateAnyscaleCredentialDTO", + "assembly-ai": "#/components/schemas/CreateAssemblyAICredentialDTO", + "azure-openai": "#/components/schemas/CreateAzureOpenAICredentialDTO", + "azure": "#/components/schemas/CreateAzureCredentialDTO", + "byo-sip-trunk": "#/components/schemas/CreateByoSipTrunkCredentialDTO", + "cartesia": "#/components/schemas/CreateCartesiaCredentialDTO", + "cerebras": "#/components/schemas/CreateCerebrasCredentialDTO", + "cloudflare": "#/components/schemas/CreateCloudflareCredentialDTO", + "custom-llm": "#/components/schemas/CreateCustomLLMCredentialDTO", + "deepgram": "#/components/schemas/CreateDeepgramCredentialDTO", + "deepinfra": "#/components/schemas/CreateDeepInfraCredentialDTO", + "deep-seek": "#/components/schemas/CreateDeepSeekCredentialDTO", + "gcp": "#/components/schemas/CreateGcpCredentialDTO", + "gladia": "#/components/schemas/CreateGladiaCredentialDTO", + "gohighlevel": "#/components/schemas/CreateGoHighLevelCredentialDTO", + "google": "#/components/schemas/CreateGoogleCredentialDTO", + "groq": "#/components/schemas/CreateGroqCredentialDTO", + "inflection-ai": "#/components/schemas/CreateInflectionAICredentialDTO", + "langfuse": "#/components/schemas/CreateLangfuseCredentialDTO", + "lmnt": "#/components/schemas/CreateLmntCredentialDTO", + "make": "#/components/schemas/CreateMakeCredentialDTO", + "openai": "#/components/schemas/CreateOpenAICredentialDTO", + "openrouter": "#/components/schemas/CreateOpenRouterCredentialDTO", + "perplexity-ai": "#/components/schemas/CreatePerplexityAICredentialDTO", + "playht": "#/components/schemas/CreatePlayHTCredentialDTO", + "rime-ai": "#/components/schemas/CreateRimeAICredentialDTO", + "runpod": "#/components/schemas/CreateRunpodCredentialDTO", + "s3": "#/components/schemas/CreateS3CredentialDTO", + "supabase": "#/components/schemas/CreateSupabaseCredentialDTO", + "smallest-ai": "#/components/schemas/CreateSmallestAICredentialDTO", + "tavus": "#/components/schemas/CreateTavusCredentialDTO", + "together-ai": "#/components/schemas/CreateTogetherAICredentialDTO", + "twilio": "#/components/schemas/CreateTwilioCredentialDTO", + "vonage": "#/components/schemas/CreateVonageCredentialDTO", + "webhook": "#/components/schemas/CreateWebhookCredentialDTO", + "xai": "#/components/schemas/CreateXAiCredentialDTO", + "neuphonic": "#/components/schemas/CreateNeuphonicCredentialDTO", + "hume": "#/components/schemas/CreateHumeCredentialDTO", + "mistral": "#/components/schemas/CreateMistralCredentialDTO", + "speechmatics": "#/components/schemas/CreateSpeechmaticsCredentialDTO", + "trieve": "#/components/schemas/CreateTrieveCredentialDTO", + "google.calendar.oauth2-client": "#/components/schemas/CreateGoogleCalendarOAuth2ClientCredentialDTO", + "google.calendar.oauth2-authorization": "#/components/schemas/CreateGoogleCalendarOAuth2AuthorizationCredentialDTO", + "google.sheets.oauth2-authorization": "#/components/schemas/CreateGoogleSheetsOAuth2AuthorizationCredentialDTO", + "slack.oauth2-authorization": "#/components/schemas/CreateSlackOAuth2AuthorizationCredentialDTO" + } + } } }, "name": { @@ -16887,8 +17642,64 @@ { "$ref": "#/components/schemas/CreateGoogleSheetsOAuth2AuthorizationCredentialDTO", "title": "GoogleSheetsOAuth2AuthorizationCredential" + }, + { + "$ref": "#/components/schemas/CreateSlackOAuth2AuthorizationCredentialDTO", + "title": "SlackOAuth2AuthorizationCredential" } - ] + ], + "discriminator": { + "propertyName": "provider", + "mapping": { + "11labs": "#/components/schemas/CreateElevenLabsCredentialDTO", + "anthropic": "#/components/schemas/CreateAnthropicCredentialDTO", + "anyscale": "#/components/schemas/CreateAnyscaleCredentialDTO", + "assembly-ai": "#/components/schemas/CreateAssemblyAICredentialDTO", + "azure-openai": "#/components/schemas/CreateAzureOpenAICredentialDTO", + "azure": "#/components/schemas/CreateAzureCredentialDTO", + "byo-sip-trunk": "#/components/schemas/CreateByoSipTrunkCredentialDTO", + "cartesia": "#/components/schemas/CreateCartesiaCredentialDTO", + "cerebras": "#/components/schemas/CreateCerebrasCredentialDTO", + "cloudflare": "#/components/schemas/CreateCloudflareCredentialDTO", + "custom-llm": "#/components/schemas/CreateCustomLLMCredentialDTO", + "deepgram": "#/components/schemas/CreateDeepgramCredentialDTO", + "deepinfra": "#/components/schemas/CreateDeepInfraCredentialDTO", + "deep-seek": "#/components/schemas/CreateDeepSeekCredentialDTO", + "gcp": "#/components/schemas/CreateGcpCredentialDTO", + "gladia": "#/components/schemas/CreateGladiaCredentialDTO", + "gohighlevel": "#/components/schemas/CreateGoHighLevelCredentialDTO", + "google": "#/components/schemas/CreateGoogleCredentialDTO", + "groq": "#/components/schemas/CreateGroqCredentialDTO", + "inflection-ai": "#/components/schemas/CreateInflectionAICredentialDTO", + "langfuse": "#/components/schemas/CreateLangfuseCredentialDTO", + "lmnt": "#/components/schemas/CreateLmntCredentialDTO", + "make": "#/components/schemas/CreateMakeCredentialDTO", + "openai": "#/components/schemas/CreateOpenAICredentialDTO", + "openrouter": "#/components/schemas/CreateOpenRouterCredentialDTO", + "perplexity-ai": "#/components/schemas/CreatePerplexityAICredentialDTO", + "playht": "#/components/schemas/CreatePlayHTCredentialDTO", + "rime-ai": "#/components/schemas/CreateRimeAICredentialDTO", + "runpod": "#/components/schemas/CreateRunpodCredentialDTO", + "s3": "#/components/schemas/CreateS3CredentialDTO", + "supabase": "#/components/schemas/CreateSupabaseCredentialDTO", + "smallest-ai": "#/components/schemas/CreateSmallestAICredentialDTO", + "tavus": "#/components/schemas/CreateTavusCredentialDTO", + "together-ai": "#/components/schemas/CreateTogetherAICredentialDTO", + "twilio": "#/components/schemas/CreateTwilioCredentialDTO", + "vonage": "#/components/schemas/CreateVonageCredentialDTO", + "webhook": "#/components/schemas/CreateWebhookCredentialDTO", + "xai": "#/components/schemas/CreateXAiCredentialDTO", + "neuphonic": "#/components/schemas/CreateNeuphonicCredentialDTO", + "hume": "#/components/schemas/CreateHumeCredentialDTO", + "mistral": "#/components/schemas/CreateMistralCredentialDTO", + "speechmatics": "#/components/schemas/CreateSpeechmaticsCredentialDTO", + "trieve": "#/components/schemas/CreateTrieveCredentialDTO", + "google.calendar.oauth2-client": "#/components/schemas/CreateGoogleCalendarOAuth2ClientCredentialDTO", + "google.calendar.oauth2-authorization": "#/components/schemas/CreateGoogleCalendarOAuth2AuthorizationCredentialDTO", + "google.sheets.oauth2-authorization": "#/components/schemas/CreateGoogleSheetsOAuth2AuthorizationCredentialDTO", + "slack.oauth2-authorization": "#/components/schemas/CreateSlackOAuth2AuthorizationCredentialDTO" + } + } } }, "variableValues": { @@ -17276,8 +18087,6 @@ "type": "string", "description": "This is the explanation for how the call ended.", "enum": [ - "assistant-not-valid", - "assistant-not-provided", "call-start-error-neither-assistant-nor-server-set", "assistant-request-failed", "assistant-request-returned-error", @@ -17285,22 +18094,18 @@ "assistant-request-returned-invalid-assistant", "assistant-request-returned-no-assistant", "assistant-request-returned-forwarding-phone-number", - "assistant-ended-call", - "assistant-said-end-call-phrase", - "assistant-ended-call-with-hangup-task", - "assistant-forwarded-call", - "assistant-join-timed-out", - "customer-busy", - "customer-ended-call", - "customer-did-not-answer", - "customer-did-not-give-microphone-permission", - "assistant-said-message-with-end-call-enabled", - "exceeded-max-duration", - "manually-canceled", - "phone-call-provider-closed-websocket", - "db-error", + "call.start.error-get-org", + "call.start.error-get-subscription", + "call.start.error-get-assistant", + "call.start.error-get-phone-number", + "call.start.error-get-customer", + "call.start.error-get-resources-validation", + "call.start.error-vapi-number-international", + "call.start.error-vapi-number-outbound-daily-limit", + "call.start.error-get-transport", + "assistant-not-valid", + "database-error", "assistant-not-found", - "license-check-failed", "pipeline-error-openai-voice-failed", "pipeline-error-cartesia-voice-failed", "pipeline-error-deepgram-voice-failed", @@ -17333,12 +18138,14 @@ "pipeline-error-vapi-403-model-access-denied", "pipeline-error-vapi-429-exceeded-quota", "pipeline-error-vapi-500-server-error", + "pipeline-error-vapi-503-server-overloaded-error", "call.in-progress.error-vapifault-vapi-llm-failed", "call.in-progress.error-vapifault-vapi-400-bad-request-validation-failed", "call.in-progress.error-vapifault-vapi-401-unauthorized", "call.in-progress.error-vapifault-vapi-403-model-access-denied", "call.in-progress.error-vapifault-vapi-429-exceeded-quota", - "call.in-progress.error-vapifault-vapi-500-server-error", + "call.in-progress.error-providerfault-vapi-500-server-error", + "call.in-progress.error-providerfault-vapi-503-server-overloaded-error", "pipeline-error-deepgram-transcriber-failed", "call.in-progress.error-vapifault-deepgram-transcriber-failed", "pipeline-error-gladia-transcriber-failed", @@ -17346,25 +18153,28 @@ "pipeline-error-speechmatics-transcriber-failed", "call.in-progress.error-vapifault-speechmatics-transcriber-failed", "pipeline-error-assembly-ai-transcriber-failed", + "pipeline-error-assembly-ai-returning-400-insufficent-funds", + "pipeline-error-assembly-ai-returning-400-paid-only-feature", + "pipeline-error-assembly-ai-returning-401-invalid-credentials", + "pipeline-error-assembly-ai-returning-500-invalid-schema", + "pipeline-error-assembly-ai-returning-500-word-boost-parsing-failed", "call.in-progress.error-vapifault-assembly-ai-transcriber-failed", + "call.in-progress.error-vapifault-assembly-ai-returning-400-insufficent-funds", + "call.in-progress.error-vapifault-assembly-ai-returning-400-paid-only-feature", + "call.in-progress.error-vapifault-assembly-ai-returning-401-invalid-credentials", + "call.in-progress.error-vapifault-assembly-ai-returning-500-invalid-schema", + "call.in-progress.error-vapifault-assembly-ai-returning-500-word-boost-parsing-failed", "pipeline-error-talkscriber-transcriber-failed", "call.in-progress.error-vapifault-talkscriber-transcriber-failed", "pipeline-error-azure-speech-transcriber-failed", "call.in-progress.error-vapifault-azure-speech-transcriber-failed", - "pipeline-no-available-model", + "call.in-progress.error-pipeline-no-available-llm-model", "worker-shutdown", "unknown-error", "vonage-disconnected", "vonage-failed-to-connect-call", "vonage-completed", "phone-call-provider-bypass-enabled-but-no-call-received", - "vapifault-phone-call-worker-setup-socket-error", - "vapifault-phone-call-worker-worker-setup-socket-timeout", - "vapifault-transport-never-connected", - "vapifault-transport-connected-but-call-not-active", - "vapifault-call-started-but-connection-to-transport-missing", - "call.in-progress.error-vapifault-phone-call-worker-setup-socket-error", - "call.in-progress.error-vapifault-phone-call-worker-worker-setup-socket-timeout", "call.in-progress.error-vapifault-transport-never-connected", "call.in-progress.error-vapifault-transport-connected-but-call-not-active", "call.in-progress.error-vapifault-call-started-but-connection-to-transport-missing", @@ -17377,201 +18187,241 @@ "call.in-progress.error-vapifault-inflection-ai-llm-failed", "call.in-progress.error-vapifault-cerebras-llm-failed", "call.in-progress.error-vapifault-deep-seek-llm-failed", - "pipeline-error-openai-llm-failed", - "pipeline-error-azure-openai-llm-failed", - "pipeline-error-groq-llm-failed", - "pipeline-error-google-llm-failed", - "pipeline-error-xai-llm-failed", - "pipeline-error-mistral-llm-failed", - "pipeline-error-inflection-ai-llm-failed", - "pipeline-error-cerebras-llm-failed", - "pipeline-error-deep-seek-llm-failed", "pipeline-error-openai-400-bad-request-validation-failed", "pipeline-error-openai-401-unauthorized", + "pipeline-error-openai-401-incorrect-api-key", + "pipeline-error-openai-401-account-not-in-organization", "pipeline-error-openai-403-model-access-denied", "pipeline-error-openai-429-exceeded-quota", + "pipeline-error-openai-429-rate-limit-reached", "pipeline-error-openai-500-server-error", + "pipeline-error-openai-503-server-overloaded-error", + "pipeline-error-openai-llm-failed", "call.in-progress.error-vapifault-openai-400-bad-request-validation-failed", "call.in-progress.error-vapifault-openai-401-unauthorized", + "call.in-progress.error-vapifault-openai-401-incorrect-api-key", + "call.in-progress.error-vapifault-openai-401-account-not-in-organization", "call.in-progress.error-vapifault-openai-403-model-access-denied", "call.in-progress.error-vapifault-openai-429-exceeded-quota", - "call.in-progress.error-vapifault-openai-500-server-error", + "call.in-progress.error-vapifault-openai-429-rate-limit-reached", + "call.in-progress.error-providerfault-openai-500-server-error", + "call.in-progress.error-providerfault-openai-503-server-overloaded-error", + "pipeline-error-azure-openai-400-bad-request-validation-failed", + "pipeline-error-azure-openai-401-unauthorized", + "pipeline-error-azure-openai-403-model-access-denied", + "pipeline-error-azure-openai-429-exceeded-quota", + "pipeline-error-azure-openai-500-server-error", + "pipeline-error-azure-openai-503-server-overloaded-error", + "pipeline-error-azure-openai-llm-failed", + "call.in-progress.error-vapifault-azure-openai-400-bad-request-validation-failed", + "call.in-progress.error-vapifault-azure-openai-401-unauthorized", + "call.in-progress.error-vapifault-azure-openai-403-model-access-denied", + "call.in-progress.error-vapifault-azure-openai-429-exceeded-quota", + "call.in-progress.error-providerfault-azure-openai-500-server-error", + "call.in-progress.error-providerfault-azure-openai-503-server-overloaded-error", "pipeline-error-google-400-bad-request-validation-failed", "pipeline-error-google-401-unauthorized", "pipeline-error-google-403-model-access-denied", "pipeline-error-google-429-exceeded-quota", "pipeline-error-google-500-server-error", + "pipeline-error-google-503-server-overloaded-error", + "pipeline-error-google-llm-failed", "call.in-progress.error-vapifault-google-400-bad-request-validation-failed", "call.in-progress.error-vapifault-google-401-unauthorized", "call.in-progress.error-vapifault-google-403-model-access-denied", "call.in-progress.error-vapifault-google-429-exceeded-quota", - "call.in-progress.error-vapifault-google-500-server-error", + "call.in-progress.error-providerfault-google-500-server-error", + "call.in-progress.error-providerfault-google-503-server-overloaded-error", "pipeline-error-xai-400-bad-request-validation-failed", "pipeline-error-xai-401-unauthorized", "pipeline-error-xai-403-model-access-denied", "pipeline-error-xai-429-exceeded-quota", "pipeline-error-xai-500-server-error", + "pipeline-error-xai-503-server-overloaded-error", + "pipeline-error-xai-llm-failed", "call.in-progress.error-vapifault-xai-400-bad-request-validation-failed", "call.in-progress.error-vapifault-xai-401-unauthorized", "call.in-progress.error-vapifault-xai-403-model-access-denied", "call.in-progress.error-vapifault-xai-429-exceeded-quota", - "call.in-progress.error-vapifault-xai-500-server-error", + "call.in-progress.error-providerfault-xai-500-server-error", + "call.in-progress.error-providerfault-xai-503-server-overloaded-error", "pipeline-error-mistral-400-bad-request-validation-failed", "pipeline-error-mistral-401-unauthorized", "pipeline-error-mistral-403-model-access-denied", "pipeline-error-mistral-429-exceeded-quota", "pipeline-error-mistral-500-server-error", + "pipeline-error-mistral-503-server-overloaded-error", + "pipeline-error-mistral-llm-failed", "call.in-progress.error-vapifault-mistral-400-bad-request-validation-failed", "call.in-progress.error-vapifault-mistral-401-unauthorized", "call.in-progress.error-vapifault-mistral-403-model-access-denied", "call.in-progress.error-vapifault-mistral-429-exceeded-quota", - "call.in-progress.error-vapifault-mistral-500-server-error", + "call.in-progress.error-providerfault-mistral-500-server-error", + "call.in-progress.error-providerfault-mistral-503-server-overloaded-error", "pipeline-error-inflection-ai-400-bad-request-validation-failed", "pipeline-error-inflection-ai-401-unauthorized", "pipeline-error-inflection-ai-403-model-access-denied", "pipeline-error-inflection-ai-429-exceeded-quota", "pipeline-error-inflection-ai-500-server-error", + "pipeline-error-inflection-ai-503-server-overloaded-error", + "pipeline-error-inflection-ai-llm-failed", "call.in-progress.error-vapifault-inflection-ai-400-bad-request-validation-failed", "call.in-progress.error-vapifault-inflection-ai-401-unauthorized", "call.in-progress.error-vapifault-inflection-ai-403-model-access-denied", "call.in-progress.error-vapifault-inflection-ai-429-exceeded-quota", - "call.in-progress.error-vapifault-inflection-ai-500-server-error", + "call.in-progress.error-providerfault-inflection-ai-500-server-error", + "call.in-progress.error-providerfault-inflection-ai-503-server-overloaded-error", "pipeline-error-deep-seek-400-bad-request-validation-failed", "pipeline-error-deep-seek-401-unauthorized", "pipeline-error-deep-seek-403-model-access-denied", "pipeline-error-deep-seek-429-exceeded-quota", "pipeline-error-deep-seek-500-server-error", + "pipeline-error-deep-seek-503-server-overloaded-error", + "pipeline-error-deep-seek-llm-failed", "call.in-progress.error-vapifault-deep-seek-400-bad-request-validation-failed", "call.in-progress.error-vapifault-deep-seek-401-unauthorized", "call.in-progress.error-vapifault-deep-seek-403-model-access-denied", "call.in-progress.error-vapifault-deep-seek-429-exceeded-quota", - "call.in-progress.error-vapifault-deep-seek-500-server-error", - "pipeline-error-azure-openai-400-bad-request-validation-failed", - "pipeline-error-azure-openai-401-unauthorized", - "pipeline-error-azure-openai-403-model-access-denied", - "pipeline-error-azure-openai-429-exceeded-quota", - "pipeline-error-azure-openai-500-server-error", - "call.in-progress.error-vapifault-azure-openai-400-bad-request-validation-failed", - "call.in-progress.error-vapifault-azure-openai-401-unauthorized", - "call.in-progress.error-vapifault-azure-openai-403-model-access-denied", - "call.in-progress.error-vapifault-azure-openai-429-exceeded-quota", - "call.in-progress.error-vapifault-azure-openai-500-server-error", + "call.in-progress.error-providerfault-deep-seek-500-server-error", + "call.in-progress.error-providerfault-deep-seek-503-server-overloaded-error", "pipeline-error-groq-400-bad-request-validation-failed", "pipeline-error-groq-401-unauthorized", "pipeline-error-groq-403-model-access-denied", "pipeline-error-groq-429-exceeded-quota", "pipeline-error-groq-500-server-error", + "pipeline-error-groq-503-server-overloaded-error", + "pipeline-error-groq-llm-failed", "call.in-progress.error-vapifault-groq-400-bad-request-validation-failed", "call.in-progress.error-vapifault-groq-401-unauthorized", "call.in-progress.error-vapifault-groq-403-model-access-denied", "call.in-progress.error-vapifault-groq-429-exceeded-quota", - "call.in-progress.error-vapifault-groq-500-server-error", + "call.in-progress.error-providerfault-groq-500-server-error", + "call.in-progress.error-providerfault-groq-503-server-overloaded-error", "pipeline-error-cerebras-400-bad-request-validation-failed", "pipeline-error-cerebras-401-unauthorized", "pipeline-error-cerebras-403-model-access-denied", "pipeline-error-cerebras-429-exceeded-quota", "pipeline-error-cerebras-500-server-error", + "pipeline-error-cerebras-503-server-overloaded-error", + "pipeline-error-cerebras-llm-failed", "call.in-progress.error-vapifault-cerebras-400-bad-request-validation-failed", "call.in-progress.error-vapifault-cerebras-401-unauthorized", "call.in-progress.error-vapifault-cerebras-403-model-access-denied", "call.in-progress.error-vapifault-cerebras-429-exceeded-quota", - "call.in-progress.error-vapifault-cerebras-500-server-error", + "call.in-progress.error-providerfault-cerebras-500-server-error", + "call.in-progress.error-providerfault-cerebras-503-server-overloaded-error", "pipeline-error-anthropic-400-bad-request-validation-failed", "pipeline-error-anthropic-401-unauthorized", "pipeline-error-anthropic-403-model-access-denied", "pipeline-error-anthropic-429-exceeded-quota", "pipeline-error-anthropic-500-server-error", + "pipeline-error-anthropic-503-server-overloaded-error", "pipeline-error-anthropic-llm-failed", + "call.in-progress.error-vapifault-anthropic-llm-failed", "call.in-progress.error-vapifault-anthropic-400-bad-request-validation-failed", "call.in-progress.error-vapifault-anthropic-401-unauthorized", "call.in-progress.error-vapifault-anthropic-403-model-access-denied", "call.in-progress.error-vapifault-anthropic-429-exceeded-quota", - "call.in-progress.error-vapifault-anthropic-500-server-error", - "call.in-progress.error-vapifault-anthropic-llm-failed", + "call.in-progress.error-providerfault-anthropic-500-server-error", + "call.in-progress.error-providerfault-anthropic-503-server-overloaded-error", "pipeline-error-together-ai-400-bad-request-validation-failed", "pipeline-error-together-ai-401-unauthorized", "pipeline-error-together-ai-403-model-access-denied", "pipeline-error-together-ai-429-exceeded-quota", "pipeline-error-together-ai-500-server-error", + "pipeline-error-together-ai-503-server-overloaded-error", "pipeline-error-together-ai-llm-failed", + "call.in-progress.error-vapifault-together-ai-llm-failed", "call.in-progress.error-vapifault-together-ai-400-bad-request-validation-failed", "call.in-progress.error-vapifault-together-ai-401-unauthorized", "call.in-progress.error-vapifault-together-ai-403-model-access-denied", "call.in-progress.error-vapifault-together-ai-429-exceeded-quota", - "call.in-progress.error-vapifault-together-ai-500-server-error", - "call.in-progress.error-vapifault-together-ai-llm-failed", + "call.in-progress.error-providerfault-together-ai-500-server-error", + "call.in-progress.error-providerfault-together-ai-503-server-overloaded-error", "pipeline-error-anyscale-400-bad-request-validation-failed", "pipeline-error-anyscale-401-unauthorized", "pipeline-error-anyscale-403-model-access-denied", "pipeline-error-anyscale-429-exceeded-quota", "pipeline-error-anyscale-500-server-error", + "pipeline-error-anyscale-503-server-overloaded-error", "pipeline-error-anyscale-llm-failed", + "call.in-progress.error-vapifault-anyscale-llm-failed", "call.in-progress.error-vapifault-anyscale-400-bad-request-validation-failed", "call.in-progress.error-vapifault-anyscale-401-unauthorized", "call.in-progress.error-vapifault-anyscale-403-model-access-denied", "call.in-progress.error-vapifault-anyscale-429-exceeded-quota", - "call.in-progress.error-vapifault-anyscale-500-server-error", - "call.in-progress.error-vapifault-anyscale-llm-failed", + "call.in-progress.error-providerfault-anyscale-500-server-error", + "call.in-progress.error-providerfault-anyscale-503-server-overloaded-error", "pipeline-error-openrouter-400-bad-request-validation-failed", "pipeline-error-openrouter-401-unauthorized", "pipeline-error-openrouter-403-model-access-denied", "pipeline-error-openrouter-429-exceeded-quota", "pipeline-error-openrouter-500-server-error", + "pipeline-error-openrouter-503-server-overloaded-error", "pipeline-error-openrouter-llm-failed", + "call.in-progress.error-vapifault-openrouter-llm-failed", "call.in-progress.error-vapifault-openrouter-400-bad-request-validation-failed", "call.in-progress.error-vapifault-openrouter-401-unauthorized", "call.in-progress.error-vapifault-openrouter-403-model-access-denied", "call.in-progress.error-vapifault-openrouter-429-exceeded-quota", - "call.in-progress.error-vapifault-openrouter-500-server-error", - "call.in-progress.error-vapifault-openrouter-llm-failed", + "call.in-progress.error-providerfault-openrouter-500-server-error", + "call.in-progress.error-providerfault-openrouter-503-server-overloaded-error", "pipeline-error-perplexity-ai-400-bad-request-validation-failed", "pipeline-error-perplexity-ai-401-unauthorized", "pipeline-error-perplexity-ai-403-model-access-denied", "pipeline-error-perplexity-ai-429-exceeded-quota", "pipeline-error-perplexity-ai-500-server-error", + "pipeline-error-perplexity-ai-503-server-overloaded-error", "pipeline-error-perplexity-ai-llm-failed", + "call.in-progress.error-vapifault-perplexity-ai-llm-failed", "call.in-progress.error-vapifault-perplexity-ai-400-bad-request-validation-failed", "call.in-progress.error-vapifault-perplexity-ai-401-unauthorized", "call.in-progress.error-vapifault-perplexity-ai-403-model-access-denied", "call.in-progress.error-vapifault-perplexity-ai-429-exceeded-quota", - "call.in-progress.error-vapifault-perplexity-ai-500-server-error", - "call.in-progress.error-vapifault-perplexity-ai-llm-failed", + "call.in-progress.error-providerfault-perplexity-ai-500-server-error", + "call.in-progress.error-providerfault-perplexity-ai-503-server-overloaded-error", "pipeline-error-deepinfra-400-bad-request-validation-failed", "pipeline-error-deepinfra-401-unauthorized", "pipeline-error-deepinfra-403-model-access-denied", "pipeline-error-deepinfra-429-exceeded-quota", "pipeline-error-deepinfra-500-server-error", + "pipeline-error-deepinfra-503-server-overloaded-error", "pipeline-error-deepinfra-llm-failed", + "call.in-progress.error-vapifault-deepinfra-llm-failed", "call.in-progress.error-vapifault-deepinfra-400-bad-request-validation-failed", "call.in-progress.error-vapifault-deepinfra-401-unauthorized", "call.in-progress.error-vapifault-deepinfra-403-model-access-denied", "call.in-progress.error-vapifault-deepinfra-429-exceeded-quota", - "call.in-progress.error-vapifault-deepinfra-500-server-error", - "call.in-progress.error-vapifault-deepinfra-llm-failed", + "call.in-progress.error-providerfault-deepinfra-500-server-error", + "call.in-progress.error-providerfault-deepinfra-503-server-overloaded-error", "pipeline-error-runpod-400-bad-request-validation-failed", "pipeline-error-runpod-401-unauthorized", "pipeline-error-runpod-403-model-access-denied", "pipeline-error-runpod-429-exceeded-quota", "pipeline-error-runpod-500-server-error", + "pipeline-error-runpod-503-server-overloaded-error", "pipeline-error-runpod-llm-failed", + "call.in-progress.error-vapifault-runpod-llm-failed", "call.in-progress.error-vapifault-runpod-400-bad-request-validation-failed", "call.in-progress.error-vapifault-runpod-401-unauthorized", "call.in-progress.error-vapifault-runpod-403-model-access-denied", "call.in-progress.error-vapifault-runpod-429-exceeded-quota", - "call.in-progress.error-vapifault-runpod-500-server-error", - "call.in-progress.error-vapifault-runpod-llm-failed", + "call.in-progress.error-providerfault-runpod-500-server-error", + "call.in-progress.error-providerfault-runpod-503-server-overloaded-error", "pipeline-error-custom-llm-400-bad-request-validation-failed", "pipeline-error-custom-llm-401-unauthorized", "pipeline-error-custom-llm-403-model-access-denied", "pipeline-error-custom-llm-429-exceeded-quota", "pipeline-error-custom-llm-500-server-error", + "pipeline-error-custom-llm-503-server-overloaded-error", "pipeline-error-custom-llm-llm-failed", + "call.in-progress.error-vapifault-custom-llm-llm-failed", "call.in-progress.error-vapifault-custom-llm-400-bad-request-validation-failed", "call.in-progress.error-vapifault-custom-llm-401-unauthorized", "call.in-progress.error-vapifault-custom-llm-403-model-access-denied", "call.in-progress.error-vapifault-custom-llm-429-exceeded-quota", - "call.in-progress.error-vapifault-custom-llm-500-server-error", - "call.in-progress.error-vapifault-custom-llm-llm-failed", + "call.in-progress.error-providerfault-custom-llm-500-server-error", + "call.in-progress.error-providerfault-custom-llm-503-server-overloaded-error", "pipeline-error-custom-voice-failed", "pipeline-error-cartesia-socket-hang-up", "pipeline-error-cartesia-requested-payment", @@ -17580,9 +18430,9 @@ "pipeline-error-cartesia-522-server-error", "call.in-progress.error-vapifault-cartesia-socket-hang-up", "call.in-progress.error-vapifault-cartesia-requested-payment", - "call.in-progress.error-vapifault-cartesia-500-server-error", - "call.in-progress.error-vapifault-cartesia-503-server-error", - "call.in-progress.error-vapifault-cartesia-522-server-error", + "call.in-progress.error-providerfault-cartesia-500-server-error", + "call.in-progress.error-providerfault-cartesia-503-server-error", + "call.in-progress.error-providerfault-cartesia-522-server-error", "pipeline-error-eleven-labs-voice-not-found", "pipeline-error-eleven-labs-quota-exceeded", "pipeline-error-eleven-labs-unauthorized-access", @@ -17601,9 +18451,9 @@ "pipeline-error-eleven-labs-missing-samples-for-voice-clone", "pipeline-error-eleven-labs-voice-not-fine-tuned-and-cannot-be-used", "pipeline-error-eleven-labs-voice-not-allowed-for-free-users", - "pipeline-error-eleven-labs-500-server-error", "pipeline-error-eleven-labs-max-character-limit-exceeded", "pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification", + "pipeline-error-eleven-labs-500-server-error", "call.in-progress.error-vapifault-eleven-labs-voice-not-found", "call.in-progress.error-vapifault-eleven-labs-quota-exceeded", "call.in-progress.error-vapifault-eleven-labs-unauthorized-access", @@ -17622,9 +18472,9 @@ "call.in-progress.error-vapifault-eleven-labs-missing-samples-for-voice-clone", "call.in-progress.error-vapifault-eleven-labs-voice-not-fine-tuned-and-cannot-be-used", "call.in-progress.error-vapifault-eleven-labs-voice-not-allowed-for-free-users", - "call.in-progress.error-vapifault-eleven-labs-500-server-error", "call.in-progress.error-vapifault-eleven-labs-max-character-limit-exceeded", "call.in-progress.error-vapifault-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification", + "call.in-progress.error-providerfault-eleven-labs-500-server-error", "pipeline-error-playht-request-timed-out", "pipeline-error-playht-invalid-voice", "pipeline-error-playht-unexpected-error", @@ -17647,41 +18497,46 @@ "call.in-progress.error-vapifault-playht-403-forbidden-out-of-characters", "call.in-progress.error-vapifault-playht-403-forbidden-api-access-not-available", "call.in-progress.error-vapifault-playht-429-exceeded-quota", - "call.in-progress.error-vapifault-playht-502-gateway-error", - "call.in-progress.error-vapifault-playht-504-gateway-error", + "call.in-progress.error-providerfault-playht-502-gateway-error", + "call.in-progress.error-providerfault-playht-504-gateway-error", "pipeline-error-custom-transcriber-failed", "call.in-progress.error-vapifault-custom-transcriber-failed", "pipeline-error-11labs-transcriber-failed", "call.in-progress.error-vapifault-11labs-transcriber-failed", - "pipeline-error-deepgram-returning-403-model-access-denied", + "pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination", "pipeline-error-deepgram-returning-401-invalid-credentials", + "pipeline-error-deepgram-returning-403-model-access-denied", "pipeline-error-deepgram-returning-404-not-found", - "pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination", "pipeline-error-deepgram-returning-500-invalid-json", "pipeline-error-deepgram-returning-502-network-error", "pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach", - "call.in-progress.error-vapifault-deepgram-returning-403-model-access-denied", + "call.in-progress.error-vapifault-deepgram-returning-400-no-such-model-language-tier-combination", "call.in-progress.error-vapifault-deepgram-returning-401-invalid-credentials", "call.in-progress.error-vapifault-deepgram-returning-404-not-found", - "call.in-progress.error-vapifault-deepgram-returning-400-no-such-model-language-tier-combination", - "call.in-progress.error-vapifault-deepgram-returning-500-invalid-json", - "call.in-progress.error-vapifault-deepgram-returning-502-network-error", - "call.in-progress.error-vapifault-deepgram-returning-502-bad-gateway-ehostunreach", + "call.in-progress.error-vapifault-deepgram-returning-403-model-access-denied", + "call.in-progress.error-providerfault-deepgram-returning-500-invalid-json", + "call.in-progress.error-providerfault-deepgram-returning-502-network-error", + "call.in-progress.error-providerfault-deepgram-returning-502-bad-gateway-ehostunreach", "pipeline-error-google-transcriber-failed", "call.in-progress.error-vapifault-google-transcriber-failed", "pipeline-error-openai-transcriber-failed", "call.in-progress.error-vapifault-openai-transcriber-failed", - "call.start.error-get-org", - "call.start.error-get-subscription", - "call.start.error-get-assistant", - "call.start.error-get-phone-number", - "call.start.error-get-customer", - "call.start.error-get-resources-validation", - "call.start.error-vapi-number-international", - "call.start.error-vapi-number-outbound-daily-limit", - "call.start.error-get-transport", + "assistant-ended-call", + "assistant-said-end-call-phrase", + "assistant-ended-call-with-hangup-task", + "assistant-ended-call-after-message-spoken", + "assistant-forwarded-call", + "assistant-join-timed-out", + "call.in-progress.error-assistant-did-not-receive-customer-audio", + "customer-busy", + "customer-ended-call", + "customer-did-not-answer", + "customer-did-not-give-microphone-permission", + "exceeded-max-duration", + "manually-canceled", + "phone-call-provider-closed-websocket", "silence-timed-out", - "sip-gateway-failed-to-connect-call", + "call.in-progress.error-sip-telephony-provider-failed-to-connect-call", "twilio-failed-to-connect-call", "twilio-reported-customer-misdialed", "vonage-rejected", @@ -18480,6 +19335,67 @@ ] } }, + "model": { + "description": "These are the options for the workflow's LLM.", + "oneOf": [ + { + "$ref": "#/components/schemas/AnthropicModel", + "title": "Anthropic" + }, + { + "$ref": "#/components/schemas/AnyscaleModel", + "title": "Anyscale" + }, + { + "$ref": "#/components/schemas/CerebrasModel", + "title": "Cerebras" + }, + { + "$ref": "#/components/schemas/CustomLLMModel", + "title": "CustomLLM" + }, + { + "$ref": "#/components/schemas/DeepInfraModel", + "title": "DeepInfra" + }, + { + "$ref": "#/components/schemas/DeepSeekModel", + "title": "DeepSeek" + }, + { + "$ref": "#/components/schemas/GoogleModel", + "title": "Google" + }, + { + "$ref": "#/components/schemas/GroqModel", + "title": "Groq" + }, + { + "$ref": "#/components/schemas/InflectionAIModel", + "title": "InflectionAI" + }, + { + "$ref": "#/components/schemas/OpenAIModel", + "title": "OpenAI" + }, + { + "$ref": "#/components/schemas/OpenRouterModel", + "title": "OpenRouter" + }, + { + "$ref": "#/components/schemas/PerplexityAIModel", + "title": "PerplexityAI" + }, + { + "$ref": "#/components/schemas/TogetherAIModel", + "title": "Together" + }, + { + "$ref": "#/components/schemas/XaiModel", + "title": "XAI" + } + ] + }, "name": { "type": "string", "maxLength": 80 @@ -19101,8 +20017,64 @@ { "$ref": "#/components/schemas/CreateGoogleSheetsOAuth2AuthorizationCredentialDTO", "title": "GoogleSheetsOAuth2AuthorizationCredential" + }, + { + "$ref": "#/components/schemas/CreateSlackOAuth2AuthorizationCredentialDTO", + "title": "SlackOAuth2AuthorizationCredential" } - ] + ], + "discriminator": { + "propertyName": "provider", + "mapping": { + "11labs": "#/components/schemas/CreateElevenLabsCredentialDTO", + "anthropic": "#/components/schemas/CreateAnthropicCredentialDTO", + "anyscale": "#/components/schemas/CreateAnyscaleCredentialDTO", + "assembly-ai": "#/components/schemas/CreateAssemblyAICredentialDTO", + "azure-openai": "#/components/schemas/CreateAzureOpenAICredentialDTO", + "azure": "#/components/schemas/CreateAzureCredentialDTO", + "byo-sip-trunk": "#/components/schemas/CreateByoSipTrunkCredentialDTO", + "cartesia": "#/components/schemas/CreateCartesiaCredentialDTO", + "cerebras": "#/components/schemas/CreateCerebrasCredentialDTO", + "cloudflare": "#/components/schemas/CreateCloudflareCredentialDTO", + "custom-llm": "#/components/schemas/CreateCustomLLMCredentialDTO", + "deepgram": "#/components/schemas/CreateDeepgramCredentialDTO", + "deepinfra": "#/components/schemas/CreateDeepInfraCredentialDTO", + "deep-seek": "#/components/schemas/CreateDeepSeekCredentialDTO", + "gcp": "#/components/schemas/CreateGcpCredentialDTO", + "gladia": "#/components/schemas/CreateGladiaCredentialDTO", + "gohighlevel": "#/components/schemas/CreateGoHighLevelCredentialDTO", + "google": "#/components/schemas/CreateGoogleCredentialDTO", + "groq": "#/components/schemas/CreateGroqCredentialDTO", + "inflection-ai": "#/components/schemas/CreateInflectionAICredentialDTO", + "langfuse": "#/components/schemas/CreateLangfuseCredentialDTO", + "lmnt": "#/components/schemas/CreateLmntCredentialDTO", + "make": "#/components/schemas/CreateMakeCredentialDTO", + "openai": "#/components/schemas/CreateOpenAICredentialDTO", + "openrouter": "#/components/schemas/CreateOpenRouterCredentialDTO", + "perplexity-ai": "#/components/schemas/CreatePerplexityAICredentialDTO", + "playht": "#/components/schemas/CreatePlayHTCredentialDTO", + "rime-ai": "#/components/schemas/CreateRimeAICredentialDTO", + "runpod": "#/components/schemas/CreateRunpodCredentialDTO", + "s3": "#/components/schemas/CreateS3CredentialDTO", + "supabase": "#/components/schemas/CreateSupabaseCredentialDTO", + "smallest-ai": "#/components/schemas/CreateSmallestAICredentialDTO", + "tavus": "#/components/schemas/CreateTavusCredentialDTO", + "together-ai": "#/components/schemas/CreateTogetherAICredentialDTO", + "twilio": "#/components/schemas/CreateTwilioCredentialDTO", + "vonage": "#/components/schemas/CreateVonageCredentialDTO", + "webhook": "#/components/schemas/CreateWebhookCredentialDTO", + "xai": "#/components/schemas/CreateXAiCredentialDTO", + "neuphonic": "#/components/schemas/CreateNeuphonicCredentialDTO", + "hume": "#/components/schemas/CreateHumeCredentialDTO", + "mistral": "#/components/schemas/CreateMistralCredentialDTO", + "speechmatics": "#/components/schemas/CreateSpeechmaticsCredentialDTO", + "trieve": "#/components/schemas/CreateTrieveCredentialDTO", + "google.calendar.oauth2-client": "#/components/schemas/CreateGoogleCalendarOAuth2ClientCredentialDTO", + "google.calendar.oauth2-authorization": "#/components/schemas/CreateGoogleCalendarOAuth2AuthorizationCredentialDTO", + "google.sheets.oauth2-authorization": "#/components/schemas/CreateGoogleSheetsOAuth2AuthorizationCredentialDTO", + "slack.oauth2-authorization": "#/components/schemas/CreateSlackOAuth2AuthorizationCredentialDTO" + } + } } }, "name": { @@ -19837,8 +20809,64 @@ { "$ref": "#/components/schemas/CreateGoogleSheetsOAuth2AuthorizationCredentialDTO", "title": "GoogleSheetsOAuth2AuthorizationCredential" + }, + { + "$ref": "#/components/schemas/CreateSlackOAuth2AuthorizationCredentialDTO", + "title": "SlackOAuth2AuthorizationCredential" } - ] + ], + "discriminator": { + "propertyName": "provider", + "mapping": { + "11labs": "#/components/schemas/CreateElevenLabsCredentialDTO", + "anthropic": "#/components/schemas/CreateAnthropicCredentialDTO", + "anyscale": "#/components/schemas/CreateAnyscaleCredentialDTO", + "assembly-ai": "#/components/schemas/CreateAssemblyAICredentialDTO", + "azure-openai": "#/components/schemas/CreateAzureOpenAICredentialDTO", + "azure": "#/components/schemas/CreateAzureCredentialDTO", + "byo-sip-trunk": "#/components/schemas/CreateByoSipTrunkCredentialDTO", + "cartesia": "#/components/schemas/CreateCartesiaCredentialDTO", + "cerebras": "#/components/schemas/CreateCerebrasCredentialDTO", + "cloudflare": "#/components/schemas/CreateCloudflareCredentialDTO", + "custom-llm": "#/components/schemas/CreateCustomLLMCredentialDTO", + "deepgram": "#/components/schemas/CreateDeepgramCredentialDTO", + "deepinfra": "#/components/schemas/CreateDeepInfraCredentialDTO", + "deep-seek": "#/components/schemas/CreateDeepSeekCredentialDTO", + "gcp": "#/components/schemas/CreateGcpCredentialDTO", + "gladia": "#/components/schemas/CreateGladiaCredentialDTO", + "gohighlevel": "#/components/schemas/CreateGoHighLevelCredentialDTO", + "google": "#/components/schemas/CreateGoogleCredentialDTO", + "groq": "#/components/schemas/CreateGroqCredentialDTO", + "inflection-ai": "#/components/schemas/CreateInflectionAICredentialDTO", + "langfuse": "#/components/schemas/CreateLangfuseCredentialDTO", + "lmnt": "#/components/schemas/CreateLmntCredentialDTO", + "make": "#/components/schemas/CreateMakeCredentialDTO", + "openai": "#/components/schemas/CreateOpenAICredentialDTO", + "openrouter": "#/components/schemas/CreateOpenRouterCredentialDTO", + "perplexity-ai": "#/components/schemas/CreatePerplexityAICredentialDTO", + "playht": "#/components/schemas/CreatePlayHTCredentialDTO", + "rime-ai": "#/components/schemas/CreateRimeAICredentialDTO", + "runpod": "#/components/schemas/CreateRunpodCredentialDTO", + "s3": "#/components/schemas/CreateS3CredentialDTO", + "supabase": "#/components/schemas/CreateSupabaseCredentialDTO", + "smallest-ai": "#/components/schemas/CreateSmallestAICredentialDTO", + "tavus": "#/components/schemas/CreateTavusCredentialDTO", + "together-ai": "#/components/schemas/CreateTogetherAICredentialDTO", + "twilio": "#/components/schemas/CreateTwilioCredentialDTO", + "vonage": "#/components/schemas/CreateVonageCredentialDTO", + "webhook": "#/components/schemas/CreateWebhookCredentialDTO", + "xai": "#/components/schemas/CreateXAiCredentialDTO", + "neuphonic": "#/components/schemas/CreateNeuphonicCredentialDTO", + "hume": "#/components/schemas/CreateHumeCredentialDTO", + "mistral": "#/components/schemas/CreateMistralCredentialDTO", + "speechmatics": "#/components/schemas/CreateSpeechmaticsCredentialDTO", + "trieve": "#/components/schemas/CreateTrieveCredentialDTO", + "google.calendar.oauth2-client": "#/components/schemas/CreateGoogleCalendarOAuth2ClientCredentialDTO", + "google.calendar.oauth2-authorization": "#/components/schemas/CreateGoogleCalendarOAuth2AuthorizationCredentialDTO", + "google.sheets.oauth2-authorization": "#/components/schemas/CreateGoogleSheetsOAuth2AuthorizationCredentialDTO", + "slack.oauth2-authorization": "#/components/schemas/CreateSlackOAuth2AuthorizationCredentialDTO" + } + } } }, "name": { @@ -22017,62 +23045,260 @@ "name" ] }, - "KnowledgeBase": { + "QueryTool": { "type": "object", "properties": { - "name": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { "type": "string", - "description": "The name of the knowledge base", - "example": "My Knowledge Base" + "enum": [ + "query" + ], + "description": "The type of tool. \"query\" for Query tool." }, - "provider": { + "knowledgeBases": { + "description": "The knowledge bases to query", + "type": "array", + "items": { + "$ref": "#/components/schemas/KnowledgeBase" + } + }, + "id": { + "type": "string", + "description": "This is the unique identifier for the tool." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the organization that this tool belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the tool was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the tool was last updated." + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } + ] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + } + }, + "required": [ + "type", + "id", + "orgId", + "createdAt", + "updatedAt" + ] + }, + "GoogleCalendarCreateEventTool": { + "type": "object", + "properties": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { "type": "string", - "description": "The provider of the knowledge base", "enum": [ - "google" + "google.calendar.event.create" ], - "example": "google" + "description": "The type of tool. \"google.calendar.event.create\" for Google Calendar tool." }, - "model": { - "type": "object", - "description": "The model to use for the knowledge base", + "id": { + "type": "string", + "description": "This is the unique identifier for the tool." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the organization that this tool belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the tool was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the tool was last updated." + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } + ] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] + } + }, + "required": [ + "type", + "id", + "orgId", + "createdAt", + "updatedAt" + ] + }, + "GoogleSheetsRowAppendTool": { + "type": "object", + "properties": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "type": { + "type": "string", "enum": [ - "gemini-2.0-flash-thinking-exp", - "gemini-2.0-pro-exp-02-05", - "gemini-2.0-flash", - "gemini-2.0-flash-lite", - "gemini-2.0-flash-lite-preview-02-05", - "gemini-2.0-flash-exp", - "gemini-2.0-flash-realtime-exp", - "gemini-1.5-flash", - "gemini-1.5-flash-002", - "gemini-1.5-pro", - "gemini-1.5-pro-002", - "gemini-1.0-pro" + "google.sheets.row.append" ], - "example": "gemini-1.5-flash" + "description": "The type of tool. \"google.sheets.row.append\" for Google Sheets tool." }, - "description": { + "id": { "type": "string", - "description": "A description of the knowledge base" + "description": "This is the unique identifier for the tool." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the organization that this tool belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the tool was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the tool was last updated." + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } + ] }, - "fileIds": { - "description": "The file IDs associated with this knowledge base", - "type": "array", - "items": { - "type": "string" - } + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] } }, "required": [ - "name", - "provider", - "model", - "description", - "fileIds" + "type", + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "QueryTool": { + "GoogleCalendarCheckAvailabilityTool": { "type": "object", "properties": { "async": { @@ -22107,16 +23333,9 @@ "type": { "type": "string", "enum": [ - "query" + "google.calendar.availability.check" ], - "description": "The type of tool. \"query\" for Query tool." - }, - "knowledgeBases": { - "description": "The knowledge bases to query", - "type": "array", - "items": { - "$ref": "#/components/schemas/KnowledgeBase" - } + "description": "The type of tool. \"google.calendar.availability.check\" for Google Calendar availability check tool." }, "id": { "type": "string", @@ -22161,7 +23380,7 @@ "updatedAt" ] }, - "GoogleCalendarCreateEventTool": { + "SlackSendMessageTool": { "type": "object", "properties": { "async": { @@ -22196,9 +23415,9 @@ "type": { "type": "string", "enum": [ - "google.calendar.event.create" + "slack.message.send" ], - "description": "The type of tool. \"google.calendar.event.create\" for Google Calendar tool." + "description": "The type of tool. \"slack.message.send\" for Slack send message tool." }, "id": { "type": "string", @@ -22243,7 +23462,7 @@ "updatedAt" ] }, - "GoogleSheetsRowAppendTool": { + "McpTool": { "type": "object", "properties": { "async": { @@ -22278,9 +23497,9 @@ "type": { "type": "string", "enum": [ - "google.sheets.row.append" + "mcp" ], - "description": "The type of tool. \"google.sheets.row.append\" for Google Sheets tool." + "description": "The type of tool. \"mcp\" for MCP tool." }, "id": { "type": "string", @@ -22630,7 +23849,7 @@ "name" ] }, - "CreateQueryToolDTO": { + "CreateMcpToolDTO": { "type": "object", "properties": { "async": { @@ -22665,16 +23884,9 @@ "type": { "type": "string", "enum": [ - "query" + "mcp" ], - "description": "The type of tool. \"query\" for Query tool." - }, - "knowledgeBases": { - "description": "The knowledge bases to query", - "type": "array", - "items": { - "$ref": "#/components/schemas/KnowledgeBase" - } + "description": "The type of tool. \"mcp\" for MCP tool." }, "function": { "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", @@ -22697,7 +23909,7 @@ "type" ] }, - "CreateGoogleCalendarCreateEventToolDTO": { + "UpdateDtmfToolDTO": { "type": "object", "properties": { "async": { @@ -22729,13 +23941,6 @@ ] } }, - "type": { - "type": "string", - "enum": [ - "google.calendar.event.create" - ], - "description": "The type of tool. \"google.calendar.event.create\" for Google Calendar tool." - }, "function": { "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", "allOf": [ @@ -22752,12 +23957,9 @@ } ] } - }, - "required": [ - "type" - ] + } }, - "CreateGoogleSheetsRowAppendToolDTO": { + "UpdateEndCallToolDTO": { "type": "object", "properties": { "async": { @@ -22789,13 +23991,6 @@ ] } }, - "type": { - "type": "string", - "enum": [ - "google.sheets.row.append" - ], - "description": "The type of tool. \"google.sheets.row.append\" for Google Sheets tool." - }, "function": { "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", "allOf": [ @@ -22812,12 +24007,9 @@ } ] } - }, - "required": [ - "type" - ] + } }, - "UpdateDtmfToolDTO": { + "UpdateFunctionToolDTO": { "type": "object", "properties": { "async": { @@ -22867,7 +24059,7 @@ } } }, - "UpdateEndCallToolDTO": { + "UpdateGhlToolDTO": { "type": "object", "properties": { "async": { @@ -22914,10 +24106,13 @@ "$ref": "#/components/schemas/Server" } ] + }, + "metadata": { + "$ref": "#/components/schemas/GhlToolMetadata" } } }, - "UpdateFunctionToolDTO": { + "UpdateMakeToolDTO": { "type": "object", "properties": { "async": { @@ -22964,10 +24159,13 @@ "$ref": "#/components/schemas/Server" } ] + }, + "metadata": { + "$ref": "#/components/schemas/MakeToolMetadata" } } }, - "UpdateGhlToolDTO": { + "UpdateTransferCallToolDTO": { "type": "object", "properties": { "async": { @@ -22999,6 +24197,30 @@ ] } }, + "destinations": { + "type": "array", + "description": "These are the destinations that the call can be transferred to. If no destinations are provided, server.url will be used to get the transfer destination once the tool is called.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/TransferDestinationAssistant", + "title": "Assistant" + }, + { + "$ref": "#/components/schemas/TransferDestinationStep", + "title": "Step" + }, + { + "$ref": "#/components/schemas/TransferDestinationNumber", + "title": "Number" + }, + { + "$ref": "#/components/schemas/TransferDestinationSip", + "title": "Sip" + } + ] + } + }, "function": { "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", "allOf": [ @@ -23014,13 +24236,10 @@ "$ref": "#/components/schemas/Server" } ] - }, - "metadata": { - "$ref": "#/components/schemas/GhlToolMetadata" } } }, - "UpdateMakeToolDTO": { + "UpdateOutputToolDTO": { "type": "object", "properties": { "async": { @@ -23067,13 +24286,10 @@ "$ref": "#/components/schemas/Server" } ] - }, - "metadata": { - "$ref": "#/components/schemas/MakeToolMetadata" } } }, - "UpdateTransferCallToolDTO": { + "UpdateBashToolDTO": { "type": "object", "properties": { "async": { @@ -23105,29 +24321,12 @@ ] } }, - "destinations": { - "type": "array", - "description": "These are the destinations that the call can be transferred to. If no destinations are provided, server.url will be used to get the transfer destination once the tool is called.", - "items": { - "oneOf": [ - { - "$ref": "#/components/schemas/TransferDestinationAssistant", - "title": "Assistant" - }, - { - "$ref": "#/components/schemas/TransferDestinationStep", - "title": "Step" - }, - { - "$ref": "#/components/schemas/TransferDestinationNumber", - "title": "Number" - }, - { - "$ref": "#/components/schemas/TransferDestinationSip", - "title": "Sip" - } - ] - } + "subType": { + "type": "string", + "enum": [ + "bash_20241022" + ], + "description": "The sub type of tool." }, "function": { "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", @@ -23144,10 +24343,18 @@ "$ref": "#/components/schemas/Server" } ] + }, + "name": { + "type": "string", + "description": "The name of the tool, fixed to 'bash'", + "default": "bash", + "enum": [ + "bash" + ] } } }, - "UpdateOutputToolDTO": { + "UpdateComputerToolDTO": { "type": "object", "properties": { "async": { @@ -23179,6 +24386,13 @@ ] } }, + "subType": { + "type": "string", + "enum": [ + "computer_20241022" + ], + "description": "The sub type of tool." + }, "function": { "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", "allOf": [ @@ -23194,10 +24408,30 @@ "$ref": "#/components/schemas/Server" } ] + }, + "name": { + "type": "string", + "description": "The name of the tool, fixed to 'computer'", + "default": "computer", + "enum": [ + "computer" + ] + }, + "displayWidthPx": { + "type": "number", + "description": "The display width in pixels" + }, + "displayHeightPx": { + "type": "number", + "description": "The display height in pixels" + }, + "displayNumber": { + "type": "number", + "description": "Optional display number" } } }, - "UpdateBashToolDTO": { + "UpdateTextEditorToolDTO": { "type": "object", "properties": { "async": { @@ -23232,7 +24466,7 @@ "subType": { "type": "string", "enum": [ - "bash_20241022" + "text_editor_20241022" ], "description": "The sub type of tool." }, @@ -23254,15 +24488,72 @@ }, "name": { "type": "string", - "description": "The name of the tool, fixed to 'bash'", - "default": "bash", + "description": "The name of the tool, fixed to 'str_replace_editor'", + "default": "str_replace_editor", "enum": [ - "bash" + "str_replace_editor" + ] + } + } + }, + "UpdateQueryToolDTO": { + "type": "object", + "properties": { + "async": { + "type": "boolean", + "description": "This determines if the tool is async.\n\nIf async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.\n\nIf sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.\n\nDefaults to synchronous (`false`).", + "example": false + }, + "messages": { + "type": "array", + "description": "These are the messages that will be spoken to the user as the tool is running.\n\nFor some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ToolMessageStart", + "title": "ToolMessageStart" + }, + { + "$ref": "#/components/schemas/ToolMessageComplete", + "title": "ToolMessageComplete" + }, + { + "$ref": "#/components/schemas/ToolMessageFailed", + "title": "ToolMessageFailed" + }, + { + "$ref": "#/components/schemas/ToolMessageDelayed", + "title": "ToolMessageDelayed" + } + ] + } + }, + "knowledgeBases": { + "description": "The knowledge bases to query", + "type": "array", + "items": { + "$ref": "#/components/schemas/KnowledgeBase" + } + }, + "function": { + "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", + "allOf": [ + { + "$ref": "#/components/schemas/OpenAIFunction" + } + ] + }, + "server": { + "description": "This is the server that will be hit when this tool is requested by the model.\n\nAll requests will be sent with the call object among other things. You can find more details in the Server URL documentation.\n\nThis overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } ] } } }, - "UpdateComputerToolDTO": { + "UpdateGoogleCalendarCreateEventToolDTO": { "type": "object", "properties": { "async": { @@ -23294,13 +24585,6 @@ ] } }, - "subType": { - "type": "string", - "enum": [ - "computer_20241022" - ], - "description": "The sub type of tool." - }, "function": { "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", "allOf": [ @@ -23316,30 +24600,10 @@ "$ref": "#/components/schemas/Server" } ] - }, - "name": { - "type": "string", - "description": "The name of the tool, fixed to 'computer'", - "default": "computer", - "enum": [ - "computer" - ] - }, - "displayWidthPx": { - "type": "number", - "description": "The display width in pixels" - }, - "displayHeightPx": { - "type": "number", - "description": "The display height in pixels" - }, - "displayNumber": { - "type": "number", - "description": "Optional display number" } } }, - "UpdateTextEditorToolDTO": { + "UpdateGoogleSheetsRowAppendToolDTO": { "type": "object", "properties": { "async": { @@ -23371,13 +24635,6 @@ ] } }, - "subType": { - "type": "string", - "enum": [ - "text_editor_20241022" - ], - "description": "The sub type of tool." - }, "function": { "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", "allOf": [ @@ -23393,18 +24650,10 @@ "$ref": "#/components/schemas/Server" } ] - }, - "name": { - "type": "string", - "description": "The name of the tool, fixed to 'str_replace_editor'", - "default": "str_replace_editor", - "enum": [ - "str_replace_editor" - ] } } }, - "UpdateQueryToolDTO": { + "UpdateGoogleCalendarCheckAvailabilityToolDTO": { "type": "object", "properties": { "async": { @@ -23436,13 +24685,6 @@ ] } }, - "knowledgeBases": { - "description": "The knowledge bases to query", - "type": "array", - "items": { - "$ref": "#/components/schemas/KnowledgeBase" - } - }, "function": { "description": "This is the function definition of the tool.\n\nFor `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.\n\nAn example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument \"reason\". Then, in `messages` array, you can have many \"request-complete\" messages. One of these messages will be triggered if the `messages[].conditions` matches the \"reason\" argument.", "allOf": [ @@ -23461,7 +24703,7 @@ } } }, - "UpdateGoogleCalendarCreateEventToolDTO": { + "UpdateSlackSendMessageToolDTO": { "type": "object", "properties": { "async": { @@ -23511,7 +24753,7 @@ } } }, - "UpdateGoogleSheetsRowAppendToolDTO": { + "UpdateMcpToolDTO": { "type": "object", "properties": { "async": { @@ -23958,6 +25200,67 @@ ] } }, + "model": { + "description": "These are the options for the workflow's LLM.", + "oneOf": [ + { + "$ref": "#/components/schemas/AnthropicModel", + "title": "Anthropic" + }, + { + "$ref": "#/components/schemas/AnyscaleModel", + "title": "Anyscale" + }, + { + "$ref": "#/components/schemas/CerebrasModel", + "title": "Cerebras" + }, + { + "$ref": "#/components/schemas/CustomLLMModel", + "title": "CustomLLM" + }, + { + "$ref": "#/components/schemas/DeepInfraModel", + "title": "DeepInfra" + }, + { + "$ref": "#/components/schemas/DeepSeekModel", + "title": "DeepSeek" + }, + { + "$ref": "#/components/schemas/GoogleModel", + "title": "Google" + }, + { + "$ref": "#/components/schemas/GroqModel", + "title": "Groq" + }, + { + "$ref": "#/components/schemas/InflectionAIModel", + "title": "InflectionAI" + }, + { + "$ref": "#/components/schemas/OpenAIModel", + "title": "OpenAI" + }, + { + "$ref": "#/components/schemas/OpenRouterModel", + "title": "OpenRouter" + }, + { + "$ref": "#/components/schemas/PerplexityAIModel", + "title": "PerplexityAI" + }, + { + "$ref": "#/components/schemas/TogetherAIModel", + "title": "Together" + }, + { + "$ref": "#/components/schemas/XaiModel", + "title": "XAI" + } + ] + }, "name": { "type": "string", "maxLength": 80 @@ -24659,7 +25962,7 @@ "type": "object", "properties": { "artifact": { - "description": "This is the artifact associated with the call.", + "description": "This is the artifact of the call.", "allOf": [ { "$ref": "#/components/schemas/Artifact" @@ -24671,6 +25974,18 @@ "artifact" ] }, + "TestSuiteRunTestAttemptMetadata": { + "type": "object", + "properties": { + "sessionId": { + "type": "string", + "description": "This is the session ID for the test attempt." + } + }, + "required": [ + "sessionId" + ] + }, "TestSuiteRunTestAttempt": { "type": "object", "properties": { @@ -24693,11 +26008,22 @@ "$ref": "#/components/schemas/TestSuiteRunTestAttemptCall" } ] + }, + "callId": { + "type": "string", + "description": "This is the call ID for the test attempt." + }, + "metadata": { + "description": "This is the metadata for the test attempt.", + "allOf": [ + { + "$ref": "#/components/schemas/TestSuiteRunTestAttemptMetadata" + } + ] } }, "required": [ - "scorerResults", - "call" + "scorerResults" ] }, "TestSuiteRunTestResult": { @@ -28383,6 +29709,100 @@ "updatedAt" ] }, + "GoogleSheetsOAuth2AuthorizationCredential": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "google.sheets.oauth2-authorization" + ] + }, + "authorizationId": { + "type": "string", + "description": "The authorization ID for the OAuth2 authorization" + }, + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this credential belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the credential was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "authorizationId", + "id", + "orgId", + "createdAt", + "updatedAt" + ] + }, + "SlackOAuth2AuthorizationCredential": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "slack.oauth2-authorization" + ] + }, + "authorizationId": { + "type": "string", + "description": "The authorization ID for the OAuth2 authorization" + }, + "id": { + "type": "string", + "description": "This is the unique identifier for the credential." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this credential belongs to." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the credential was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the assistant was last updated." + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + }, + "required": [ + "provider", + "authorizationId", + "id", + "orgId", + "createdAt", + "updatedAt" + ] + }, "CreateCerebrasCredentialDTO": { "type": "object", "properties": { @@ -29481,7 +30901,37 @@ } } }, - "UpdateGoogleCalendarOAuth2AuthorizationCredentialDTO": { + "UpdateGoogleCalendarOAuth2AuthorizationCredentialDTO": { + "type": "object", + "properties": { + "authorizationId": { + "type": "string", + "description": "The authorization ID for the OAuth2 authorization" + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + } + }, + "UpdateGoogleSheetsOAuth2AuthorizationCredentialDTO": { + "type": "object", + "properties": { + "authorizationId": { + "type": "string", + "description": "The authorization ID for the OAuth2 authorization" + }, + "name": { + "type": "string", + "description": "This is the name of credential. This is just for your reference.", + "minLength": 1, + "maxLength": 40 + } + } + }, + "UpdateSlackOAuth2AuthorizationCredentialDTO": { "type": "object", "properties": { "authorizationId": { @@ -29625,7 +31075,8 @@ "enum": [ "google.calendar.oauth2-client", "google.calendar.oauth2-authorization", - "google.sheets.oauth2-authorization" + "google.sheets.oauth2-authorization", + "slack.oauth2-authorization" ], "description": "The type of credential to generate a session for. Only Nango user-facing providers are supported." } @@ -30541,6 +31992,10 @@ "assistant", "user" ] + }, + "turn": { + "type": "number", + "description": "This is the turn number of the speech update (0-indexed)." } }, "required": [ @@ -30925,8 +32380,8 @@ ] }, "timestamp": { - "type": "string", - "description": "This is the ISO-8601 formatted timestamp of when the message was sent." + "type": "number", + "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." }, "artifact": { "description": "This is a live version of the `call.artifact`.\n\nThis matches what is stored on `call.artifact` after the call.", @@ -31032,8 +32487,8 @@ } }, "timestamp": { - "type": "string", - "description": "This is the ISO-8601 formatted timestamp of when the message was sent." + "type": "number", + "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." }, "artifact": { "description": "This is a live version of the `call.artifact`.\n\nThis matches what is stored on `call.artifact` after the call.", @@ -31108,8 +32563,6 @@ "type": "string", "description": "This is the reason the call ended. This can also be found at `call.endedReason` on GET /call/:id.", "enum": [ - "assistant-not-valid", - "assistant-not-provided", "call-start-error-neither-assistant-nor-server-set", "assistant-request-failed", "assistant-request-returned-error", @@ -31117,22 +32570,18 @@ "assistant-request-returned-invalid-assistant", "assistant-request-returned-no-assistant", "assistant-request-returned-forwarding-phone-number", - "assistant-ended-call", - "assistant-said-end-call-phrase", - "assistant-ended-call-with-hangup-task", - "assistant-forwarded-call", - "assistant-join-timed-out", - "customer-busy", - "customer-ended-call", - "customer-did-not-answer", - "customer-did-not-give-microphone-permission", - "assistant-said-message-with-end-call-enabled", - "exceeded-max-duration", - "manually-canceled", - "phone-call-provider-closed-websocket", - "db-error", + "call.start.error-get-org", + "call.start.error-get-subscription", + "call.start.error-get-assistant", + "call.start.error-get-phone-number", + "call.start.error-get-customer", + "call.start.error-get-resources-validation", + "call.start.error-vapi-number-international", + "call.start.error-vapi-number-outbound-daily-limit", + "call.start.error-get-transport", + "assistant-not-valid", + "database-error", "assistant-not-found", - "license-check-failed", "pipeline-error-openai-voice-failed", "pipeline-error-cartesia-voice-failed", "pipeline-error-deepgram-voice-failed", @@ -31165,12 +32614,14 @@ "pipeline-error-vapi-403-model-access-denied", "pipeline-error-vapi-429-exceeded-quota", "pipeline-error-vapi-500-server-error", + "pipeline-error-vapi-503-server-overloaded-error", "call.in-progress.error-vapifault-vapi-llm-failed", "call.in-progress.error-vapifault-vapi-400-bad-request-validation-failed", "call.in-progress.error-vapifault-vapi-401-unauthorized", "call.in-progress.error-vapifault-vapi-403-model-access-denied", "call.in-progress.error-vapifault-vapi-429-exceeded-quota", - "call.in-progress.error-vapifault-vapi-500-server-error", + "call.in-progress.error-providerfault-vapi-500-server-error", + "call.in-progress.error-providerfault-vapi-503-server-overloaded-error", "pipeline-error-deepgram-transcriber-failed", "call.in-progress.error-vapifault-deepgram-transcriber-failed", "pipeline-error-gladia-transcriber-failed", @@ -31178,25 +32629,28 @@ "pipeline-error-speechmatics-transcriber-failed", "call.in-progress.error-vapifault-speechmatics-transcriber-failed", "pipeline-error-assembly-ai-transcriber-failed", + "pipeline-error-assembly-ai-returning-400-insufficent-funds", + "pipeline-error-assembly-ai-returning-400-paid-only-feature", + "pipeline-error-assembly-ai-returning-401-invalid-credentials", + "pipeline-error-assembly-ai-returning-500-invalid-schema", + "pipeline-error-assembly-ai-returning-500-word-boost-parsing-failed", "call.in-progress.error-vapifault-assembly-ai-transcriber-failed", + "call.in-progress.error-vapifault-assembly-ai-returning-400-insufficent-funds", + "call.in-progress.error-vapifault-assembly-ai-returning-400-paid-only-feature", + "call.in-progress.error-vapifault-assembly-ai-returning-401-invalid-credentials", + "call.in-progress.error-vapifault-assembly-ai-returning-500-invalid-schema", + "call.in-progress.error-vapifault-assembly-ai-returning-500-word-boost-parsing-failed", "pipeline-error-talkscriber-transcriber-failed", "call.in-progress.error-vapifault-talkscriber-transcriber-failed", "pipeline-error-azure-speech-transcriber-failed", "call.in-progress.error-vapifault-azure-speech-transcriber-failed", - "pipeline-no-available-model", + "call.in-progress.error-pipeline-no-available-llm-model", "worker-shutdown", "unknown-error", "vonage-disconnected", "vonage-failed-to-connect-call", "vonage-completed", "phone-call-provider-bypass-enabled-but-no-call-received", - "vapifault-phone-call-worker-setup-socket-error", - "vapifault-phone-call-worker-worker-setup-socket-timeout", - "vapifault-transport-never-connected", - "vapifault-transport-connected-but-call-not-active", - "vapifault-call-started-but-connection-to-transport-missing", - "call.in-progress.error-vapifault-phone-call-worker-setup-socket-error", - "call.in-progress.error-vapifault-phone-call-worker-worker-setup-socket-timeout", "call.in-progress.error-vapifault-transport-never-connected", "call.in-progress.error-vapifault-transport-connected-but-call-not-active", "call.in-progress.error-vapifault-call-started-but-connection-to-transport-missing", @@ -31209,201 +32663,241 @@ "call.in-progress.error-vapifault-inflection-ai-llm-failed", "call.in-progress.error-vapifault-cerebras-llm-failed", "call.in-progress.error-vapifault-deep-seek-llm-failed", - "pipeline-error-openai-llm-failed", - "pipeline-error-azure-openai-llm-failed", - "pipeline-error-groq-llm-failed", - "pipeline-error-google-llm-failed", - "pipeline-error-xai-llm-failed", - "pipeline-error-mistral-llm-failed", - "pipeline-error-inflection-ai-llm-failed", - "pipeline-error-cerebras-llm-failed", - "pipeline-error-deep-seek-llm-failed", "pipeline-error-openai-400-bad-request-validation-failed", "pipeline-error-openai-401-unauthorized", + "pipeline-error-openai-401-incorrect-api-key", + "pipeline-error-openai-401-account-not-in-organization", "pipeline-error-openai-403-model-access-denied", "pipeline-error-openai-429-exceeded-quota", + "pipeline-error-openai-429-rate-limit-reached", "pipeline-error-openai-500-server-error", + "pipeline-error-openai-503-server-overloaded-error", + "pipeline-error-openai-llm-failed", "call.in-progress.error-vapifault-openai-400-bad-request-validation-failed", "call.in-progress.error-vapifault-openai-401-unauthorized", + "call.in-progress.error-vapifault-openai-401-incorrect-api-key", + "call.in-progress.error-vapifault-openai-401-account-not-in-organization", "call.in-progress.error-vapifault-openai-403-model-access-denied", "call.in-progress.error-vapifault-openai-429-exceeded-quota", - "call.in-progress.error-vapifault-openai-500-server-error", + "call.in-progress.error-vapifault-openai-429-rate-limit-reached", + "call.in-progress.error-providerfault-openai-500-server-error", + "call.in-progress.error-providerfault-openai-503-server-overloaded-error", + "pipeline-error-azure-openai-400-bad-request-validation-failed", + "pipeline-error-azure-openai-401-unauthorized", + "pipeline-error-azure-openai-403-model-access-denied", + "pipeline-error-azure-openai-429-exceeded-quota", + "pipeline-error-azure-openai-500-server-error", + "pipeline-error-azure-openai-503-server-overloaded-error", + "pipeline-error-azure-openai-llm-failed", + "call.in-progress.error-vapifault-azure-openai-400-bad-request-validation-failed", + "call.in-progress.error-vapifault-azure-openai-401-unauthorized", + "call.in-progress.error-vapifault-azure-openai-403-model-access-denied", + "call.in-progress.error-vapifault-azure-openai-429-exceeded-quota", + "call.in-progress.error-providerfault-azure-openai-500-server-error", + "call.in-progress.error-providerfault-azure-openai-503-server-overloaded-error", "pipeline-error-google-400-bad-request-validation-failed", "pipeline-error-google-401-unauthorized", "pipeline-error-google-403-model-access-denied", "pipeline-error-google-429-exceeded-quota", "pipeline-error-google-500-server-error", + "pipeline-error-google-503-server-overloaded-error", + "pipeline-error-google-llm-failed", "call.in-progress.error-vapifault-google-400-bad-request-validation-failed", "call.in-progress.error-vapifault-google-401-unauthorized", "call.in-progress.error-vapifault-google-403-model-access-denied", "call.in-progress.error-vapifault-google-429-exceeded-quota", - "call.in-progress.error-vapifault-google-500-server-error", + "call.in-progress.error-providerfault-google-500-server-error", + "call.in-progress.error-providerfault-google-503-server-overloaded-error", "pipeline-error-xai-400-bad-request-validation-failed", "pipeline-error-xai-401-unauthorized", "pipeline-error-xai-403-model-access-denied", "pipeline-error-xai-429-exceeded-quota", "pipeline-error-xai-500-server-error", + "pipeline-error-xai-503-server-overloaded-error", + "pipeline-error-xai-llm-failed", "call.in-progress.error-vapifault-xai-400-bad-request-validation-failed", "call.in-progress.error-vapifault-xai-401-unauthorized", "call.in-progress.error-vapifault-xai-403-model-access-denied", "call.in-progress.error-vapifault-xai-429-exceeded-quota", - "call.in-progress.error-vapifault-xai-500-server-error", + "call.in-progress.error-providerfault-xai-500-server-error", + "call.in-progress.error-providerfault-xai-503-server-overloaded-error", "pipeline-error-mistral-400-bad-request-validation-failed", "pipeline-error-mistral-401-unauthorized", "pipeline-error-mistral-403-model-access-denied", "pipeline-error-mistral-429-exceeded-quota", "pipeline-error-mistral-500-server-error", + "pipeline-error-mistral-503-server-overloaded-error", + "pipeline-error-mistral-llm-failed", "call.in-progress.error-vapifault-mistral-400-bad-request-validation-failed", "call.in-progress.error-vapifault-mistral-401-unauthorized", "call.in-progress.error-vapifault-mistral-403-model-access-denied", "call.in-progress.error-vapifault-mistral-429-exceeded-quota", - "call.in-progress.error-vapifault-mistral-500-server-error", + "call.in-progress.error-providerfault-mistral-500-server-error", + "call.in-progress.error-providerfault-mistral-503-server-overloaded-error", "pipeline-error-inflection-ai-400-bad-request-validation-failed", "pipeline-error-inflection-ai-401-unauthorized", "pipeline-error-inflection-ai-403-model-access-denied", "pipeline-error-inflection-ai-429-exceeded-quota", "pipeline-error-inflection-ai-500-server-error", + "pipeline-error-inflection-ai-503-server-overloaded-error", + "pipeline-error-inflection-ai-llm-failed", "call.in-progress.error-vapifault-inflection-ai-400-bad-request-validation-failed", "call.in-progress.error-vapifault-inflection-ai-401-unauthorized", "call.in-progress.error-vapifault-inflection-ai-403-model-access-denied", "call.in-progress.error-vapifault-inflection-ai-429-exceeded-quota", - "call.in-progress.error-vapifault-inflection-ai-500-server-error", + "call.in-progress.error-providerfault-inflection-ai-500-server-error", + "call.in-progress.error-providerfault-inflection-ai-503-server-overloaded-error", "pipeline-error-deep-seek-400-bad-request-validation-failed", "pipeline-error-deep-seek-401-unauthorized", "pipeline-error-deep-seek-403-model-access-denied", "pipeline-error-deep-seek-429-exceeded-quota", "pipeline-error-deep-seek-500-server-error", + "pipeline-error-deep-seek-503-server-overloaded-error", + "pipeline-error-deep-seek-llm-failed", "call.in-progress.error-vapifault-deep-seek-400-bad-request-validation-failed", "call.in-progress.error-vapifault-deep-seek-401-unauthorized", "call.in-progress.error-vapifault-deep-seek-403-model-access-denied", "call.in-progress.error-vapifault-deep-seek-429-exceeded-quota", - "call.in-progress.error-vapifault-deep-seek-500-server-error", - "pipeline-error-azure-openai-400-bad-request-validation-failed", - "pipeline-error-azure-openai-401-unauthorized", - "pipeline-error-azure-openai-403-model-access-denied", - "pipeline-error-azure-openai-429-exceeded-quota", - "pipeline-error-azure-openai-500-server-error", - "call.in-progress.error-vapifault-azure-openai-400-bad-request-validation-failed", - "call.in-progress.error-vapifault-azure-openai-401-unauthorized", - "call.in-progress.error-vapifault-azure-openai-403-model-access-denied", - "call.in-progress.error-vapifault-azure-openai-429-exceeded-quota", - "call.in-progress.error-vapifault-azure-openai-500-server-error", + "call.in-progress.error-providerfault-deep-seek-500-server-error", + "call.in-progress.error-providerfault-deep-seek-503-server-overloaded-error", "pipeline-error-groq-400-bad-request-validation-failed", "pipeline-error-groq-401-unauthorized", "pipeline-error-groq-403-model-access-denied", "pipeline-error-groq-429-exceeded-quota", "pipeline-error-groq-500-server-error", + "pipeline-error-groq-503-server-overloaded-error", + "pipeline-error-groq-llm-failed", "call.in-progress.error-vapifault-groq-400-bad-request-validation-failed", "call.in-progress.error-vapifault-groq-401-unauthorized", "call.in-progress.error-vapifault-groq-403-model-access-denied", "call.in-progress.error-vapifault-groq-429-exceeded-quota", - "call.in-progress.error-vapifault-groq-500-server-error", + "call.in-progress.error-providerfault-groq-500-server-error", + "call.in-progress.error-providerfault-groq-503-server-overloaded-error", "pipeline-error-cerebras-400-bad-request-validation-failed", "pipeline-error-cerebras-401-unauthorized", "pipeline-error-cerebras-403-model-access-denied", "pipeline-error-cerebras-429-exceeded-quota", "pipeline-error-cerebras-500-server-error", + "pipeline-error-cerebras-503-server-overloaded-error", + "pipeline-error-cerebras-llm-failed", "call.in-progress.error-vapifault-cerebras-400-bad-request-validation-failed", "call.in-progress.error-vapifault-cerebras-401-unauthorized", "call.in-progress.error-vapifault-cerebras-403-model-access-denied", "call.in-progress.error-vapifault-cerebras-429-exceeded-quota", - "call.in-progress.error-vapifault-cerebras-500-server-error", + "call.in-progress.error-providerfault-cerebras-500-server-error", + "call.in-progress.error-providerfault-cerebras-503-server-overloaded-error", "pipeline-error-anthropic-400-bad-request-validation-failed", "pipeline-error-anthropic-401-unauthorized", "pipeline-error-anthropic-403-model-access-denied", "pipeline-error-anthropic-429-exceeded-quota", "pipeline-error-anthropic-500-server-error", + "pipeline-error-anthropic-503-server-overloaded-error", "pipeline-error-anthropic-llm-failed", + "call.in-progress.error-vapifault-anthropic-llm-failed", "call.in-progress.error-vapifault-anthropic-400-bad-request-validation-failed", "call.in-progress.error-vapifault-anthropic-401-unauthorized", "call.in-progress.error-vapifault-anthropic-403-model-access-denied", "call.in-progress.error-vapifault-anthropic-429-exceeded-quota", - "call.in-progress.error-vapifault-anthropic-500-server-error", - "call.in-progress.error-vapifault-anthropic-llm-failed", + "call.in-progress.error-providerfault-anthropic-500-server-error", + "call.in-progress.error-providerfault-anthropic-503-server-overloaded-error", "pipeline-error-together-ai-400-bad-request-validation-failed", "pipeline-error-together-ai-401-unauthorized", "pipeline-error-together-ai-403-model-access-denied", "pipeline-error-together-ai-429-exceeded-quota", "pipeline-error-together-ai-500-server-error", + "pipeline-error-together-ai-503-server-overloaded-error", "pipeline-error-together-ai-llm-failed", + "call.in-progress.error-vapifault-together-ai-llm-failed", "call.in-progress.error-vapifault-together-ai-400-bad-request-validation-failed", "call.in-progress.error-vapifault-together-ai-401-unauthorized", "call.in-progress.error-vapifault-together-ai-403-model-access-denied", "call.in-progress.error-vapifault-together-ai-429-exceeded-quota", - "call.in-progress.error-vapifault-together-ai-500-server-error", - "call.in-progress.error-vapifault-together-ai-llm-failed", + "call.in-progress.error-providerfault-together-ai-500-server-error", + "call.in-progress.error-providerfault-together-ai-503-server-overloaded-error", "pipeline-error-anyscale-400-bad-request-validation-failed", "pipeline-error-anyscale-401-unauthorized", "pipeline-error-anyscale-403-model-access-denied", "pipeline-error-anyscale-429-exceeded-quota", "pipeline-error-anyscale-500-server-error", + "pipeline-error-anyscale-503-server-overloaded-error", "pipeline-error-anyscale-llm-failed", + "call.in-progress.error-vapifault-anyscale-llm-failed", "call.in-progress.error-vapifault-anyscale-400-bad-request-validation-failed", "call.in-progress.error-vapifault-anyscale-401-unauthorized", "call.in-progress.error-vapifault-anyscale-403-model-access-denied", "call.in-progress.error-vapifault-anyscale-429-exceeded-quota", - "call.in-progress.error-vapifault-anyscale-500-server-error", - "call.in-progress.error-vapifault-anyscale-llm-failed", + "call.in-progress.error-providerfault-anyscale-500-server-error", + "call.in-progress.error-providerfault-anyscale-503-server-overloaded-error", "pipeline-error-openrouter-400-bad-request-validation-failed", "pipeline-error-openrouter-401-unauthorized", "pipeline-error-openrouter-403-model-access-denied", "pipeline-error-openrouter-429-exceeded-quota", "pipeline-error-openrouter-500-server-error", + "pipeline-error-openrouter-503-server-overloaded-error", "pipeline-error-openrouter-llm-failed", + "call.in-progress.error-vapifault-openrouter-llm-failed", "call.in-progress.error-vapifault-openrouter-400-bad-request-validation-failed", "call.in-progress.error-vapifault-openrouter-401-unauthorized", "call.in-progress.error-vapifault-openrouter-403-model-access-denied", "call.in-progress.error-vapifault-openrouter-429-exceeded-quota", - "call.in-progress.error-vapifault-openrouter-500-server-error", - "call.in-progress.error-vapifault-openrouter-llm-failed", + "call.in-progress.error-providerfault-openrouter-500-server-error", + "call.in-progress.error-providerfault-openrouter-503-server-overloaded-error", "pipeline-error-perplexity-ai-400-bad-request-validation-failed", "pipeline-error-perplexity-ai-401-unauthorized", "pipeline-error-perplexity-ai-403-model-access-denied", "pipeline-error-perplexity-ai-429-exceeded-quota", "pipeline-error-perplexity-ai-500-server-error", + "pipeline-error-perplexity-ai-503-server-overloaded-error", "pipeline-error-perplexity-ai-llm-failed", + "call.in-progress.error-vapifault-perplexity-ai-llm-failed", "call.in-progress.error-vapifault-perplexity-ai-400-bad-request-validation-failed", "call.in-progress.error-vapifault-perplexity-ai-401-unauthorized", "call.in-progress.error-vapifault-perplexity-ai-403-model-access-denied", "call.in-progress.error-vapifault-perplexity-ai-429-exceeded-quota", - "call.in-progress.error-vapifault-perplexity-ai-500-server-error", - "call.in-progress.error-vapifault-perplexity-ai-llm-failed", + "call.in-progress.error-providerfault-perplexity-ai-500-server-error", + "call.in-progress.error-providerfault-perplexity-ai-503-server-overloaded-error", "pipeline-error-deepinfra-400-bad-request-validation-failed", "pipeline-error-deepinfra-401-unauthorized", "pipeline-error-deepinfra-403-model-access-denied", "pipeline-error-deepinfra-429-exceeded-quota", "pipeline-error-deepinfra-500-server-error", + "pipeline-error-deepinfra-503-server-overloaded-error", "pipeline-error-deepinfra-llm-failed", + "call.in-progress.error-vapifault-deepinfra-llm-failed", "call.in-progress.error-vapifault-deepinfra-400-bad-request-validation-failed", "call.in-progress.error-vapifault-deepinfra-401-unauthorized", "call.in-progress.error-vapifault-deepinfra-403-model-access-denied", "call.in-progress.error-vapifault-deepinfra-429-exceeded-quota", - "call.in-progress.error-vapifault-deepinfra-500-server-error", - "call.in-progress.error-vapifault-deepinfra-llm-failed", + "call.in-progress.error-providerfault-deepinfra-500-server-error", + "call.in-progress.error-providerfault-deepinfra-503-server-overloaded-error", "pipeline-error-runpod-400-bad-request-validation-failed", "pipeline-error-runpod-401-unauthorized", "pipeline-error-runpod-403-model-access-denied", "pipeline-error-runpod-429-exceeded-quota", "pipeline-error-runpod-500-server-error", + "pipeline-error-runpod-503-server-overloaded-error", "pipeline-error-runpod-llm-failed", + "call.in-progress.error-vapifault-runpod-llm-failed", "call.in-progress.error-vapifault-runpod-400-bad-request-validation-failed", "call.in-progress.error-vapifault-runpod-401-unauthorized", "call.in-progress.error-vapifault-runpod-403-model-access-denied", "call.in-progress.error-vapifault-runpod-429-exceeded-quota", - "call.in-progress.error-vapifault-runpod-500-server-error", - "call.in-progress.error-vapifault-runpod-llm-failed", + "call.in-progress.error-providerfault-runpod-500-server-error", + "call.in-progress.error-providerfault-runpod-503-server-overloaded-error", "pipeline-error-custom-llm-400-bad-request-validation-failed", "pipeline-error-custom-llm-401-unauthorized", "pipeline-error-custom-llm-403-model-access-denied", "pipeline-error-custom-llm-429-exceeded-quota", "pipeline-error-custom-llm-500-server-error", + "pipeline-error-custom-llm-503-server-overloaded-error", "pipeline-error-custom-llm-llm-failed", + "call.in-progress.error-vapifault-custom-llm-llm-failed", "call.in-progress.error-vapifault-custom-llm-400-bad-request-validation-failed", "call.in-progress.error-vapifault-custom-llm-401-unauthorized", "call.in-progress.error-vapifault-custom-llm-403-model-access-denied", "call.in-progress.error-vapifault-custom-llm-429-exceeded-quota", - "call.in-progress.error-vapifault-custom-llm-500-server-error", - "call.in-progress.error-vapifault-custom-llm-llm-failed", + "call.in-progress.error-providerfault-custom-llm-500-server-error", + "call.in-progress.error-providerfault-custom-llm-503-server-overloaded-error", "pipeline-error-custom-voice-failed", "pipeline-error-cartesia-socket-hang-up", "pipeline-error-cartesia-requested-payment", @@ -31412,9 +32906,9 @@ "pipeline-error-cartesia-522-server-error", "call.in-progress.error-vapifault-cartesia-socket-hang-up", "call.in-progress.error-vapifault-cartesia-requested-payment", - "call.in-progress.error-vapifault-cartesia-500-server-error", - "call.in-progress.error-vapifault-cartesia-503-server-error", - "call.in-progress.error-vapifault-cartesia-522-server-error", + "call.in-progress.error-providerfault-cartesia-500-server-error", + "call.in-progress.error-providerfault-cartesia-503-server-error", + "call.in-progress.error-providerfault-cartesia-522-server-error", "pipeline-error-eleven-labs-voice-not-found", "pipeline-error-eleven-labs-quota-exceeded", "pipeline-error-eleven-labs-unauthorized-access", @@ -31433,9 +32927,9 @@ "pipeline-error-eleven-labs-missing-samples-for-voice-clone", "pipeline-error-eleven-labs-voice-not-fine-tuned-and-cannot-be-used", "pipeline-error-eleven-labs-voice-not-allowed-for-free-users", - "pipeline-error-eleven-labs-500-server-error", "pipeline-error-eleven-labs-max-character-limit-exceeded", "pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification", + "pipeline-error-eleven-labs-500-server-error", "call.in-progress.error-vapifault-eleven-labs-voice-not-found", "call.in-progress.error-vapifault-eleven-labs-quota-exceeded", "call.in-progress.error-vapifault-eleven-labs-unauthorized-access", @@ -31454,9 +32948,9 @@ "call.in-progress.error-vapifault-eleven-labs-missing-samples-for-voice-clone", "call.in-progress.error-vapifault-eleven-labs-voice-not-fine-tuned-and-cannot-be-used", "call.in-progress.error-vapifault-eleven-labs-voice-not-allowed-for-free-users", - "call.in-progress.error-vapifault-eleven-labs-500-server-error", "call.in-progress.error-vapifault-eleven-labs-max-character-limit-exceeded", "call.in-progress.error-vapifault-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification", + "call.in-progress.error-providerfault-eleven-labs-500-server-error", "pipeline-error-playht-request-timed-out", "pipeline-error-playht-invalid-voice", "pipeline-error-playht-unexpected-error", @@ -31479,41 +32973,46 @@ "call.in-progress.error-vapifault-playht-403-forbidden-out-of-characters", "call.in-progress.error-vapifault-playht-403-forbidden-api-access-not-available", "call.in-progress.error-vapifault-playht-429-exceeded-quota", - "call.in-progress.error-vapifault-playht-502-gateway-error", - "call.in-progress.error-vapifault-playht-504-gateway-error", + "call.in-progress.error-providerfault-playht-502-gateway-error", + "call.in-progress.error-providerfault-playht-504-gateway-error", "pipeline-error-custom-transcriber-failed", "call.in-progress.error-vapifault-custom-transcriber-failed", "pipeline-error-11labs-transcriber-failed", "call.in-progress.error-vapifault-11labs-transcriber-failed", - "pipeline-error-deepgram-returning-403-model-access-denied", + "pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination", "pipeline-error-deepgram-returning-401-invalid-credentials", + "pipeline-error-deepgram-returning-403-model-access-denied", "pipeline-error-deepgram-returning-404-not-found", - "pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination", "pipeline-error-deepgram-returning-500-invalid-json", "pipeline-error-deepgram-returning-502-network-error", "pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach", - "call.in-progress.error-vapifault-deepgram-returning-403-model-access-denied", + "call.in-progress.error-vapifault-deepgram-returning-400-no-such-model-language-tier-combination", "call.in-progress.error-vapifault-deepgram-returning-401-invalid-credentials", "call.in-progress.error-vapifault-deepgram-returning-404-not-found", - "call.in-progress.error-vapifault-deepgram-returning-400-no-such-model-language-tier-combination", - "call.in-progress.error-vapifault-deepgram-returning-500-invalid-json", - "call.in-progress.error-vapifault-deepgram-returning-502-network-error", - "call.in-progress.error-vapifault-deepgram-returning-502-bad-gateway-ehostunreach", + "call.in-progress.error-vapifault-deepgram-returning-403-model-access-denied", + "call.in-progress.error-providerfault-deepgram-returning-500-invalid-json", + "call.in-progress.error-providerfault-deepgram-returning-502-network-error", + "call.in-progress.error-providerfault-deepgram-returning-502-bad-gateway-ehostunreach", "pipeline-error-google-transcriber-failed", "call.in-progress.error-vapifault-google-transcriber-failed", "pipeline-error-openai-transcriber-failed", "call.in-progress.error-vapifault-openai-transcriber-failed", - "call.start.error-get-org", - "call.start.error-get-subscription", - "call.start.error-get-assistant", - "call.start.error-get-phone-number", - "call.start.error-get-customer", - "call.start.error-get-resources-validation", - "call.start.error-vapi-number-international", - "call.start.error-vapi-number-outbound-daily-limit", - "call.start.error-get-transport", + "assistant-ended-call", + "assistant-said-end-call-phrase", + "assistant-ended-call-with-hangup-task", + "assistant-ended-call-after-message-spoken", + "assistant-forwarded-call", + "assistant-join-timed-out", + "call.in-progress.error-assistant-did-not-receive-customer-audio", + "customer-busy", + "customer-ended-call", + "customer-did-not-answer", + "customer-did-not-give-microphone-permission", + "exceeded-max-duration", + "manually-canceled", + "phone-call-provider-closed-websocket", "silence-timed-out", - "sip-gateway-failed-to-connect-call", + "call.in-progress.error-sip-telephony-provider-failed-to-connect-call", "twilio-failed-to-connect-call", "twilio-reported-customer-misdialed", "vonage-rejected", @@ -31561,8 +33060,8 @@ } }, "timestamp": { - "type": "string", - "description": "This is the ISO-8601 formatted timestamp of when the message was sent." + "type": "number", + "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." }, "artifact": { "description": "These are the artifacts from the call. This can also be found at `call.artifact` on GET /call/:id.", @@ -31654,8 +33153,8 @@ ] }, "timestamp": { - "type": "string", - "description": "This is the ISO-8601 formatted timestamp of when the message was sent." + "type": "number", + "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." }, "artifact": { "description": "This is a live version of the `call.artifact`.\n\nThis matches what is stored on `call.artifact` after the call.", @@ -31761,8 +33260,8 @@ } }, "timestamp": { - "type": "string", - "description": "This is the ISO-8601 formatted timestamp of when the message was sent." + "type": "number", + "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." }, "artifact": { "description": "This is a live version of the `call.artifact`.\n\nThis matches what is stored on `call.artifact` after the call.", @@ -31834,8 +33333,8 @@ ] }, "timestamp": { - "type": "string", - "description": "This is the ISO-8601 formatted timestamp of when the message was sent." + "type": "number", + "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." }, "artifact": { "description": "This is a live version of the `call.artifact`.\n\nThis matches what is stored on `call.artifact` after the call.", @@ -31932,8 +33431,8 @@ ] }, "timestamp": { - "type": "string", - "description": "This is the ISO-8601 formatted timestamp of when the message was sent." + "type": "number", + "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." }, "artifact": { "description": "This is a live version of the `call.artifact`.\n\nThis matches what is stored on `call.artifact` after the call.", @@ -32020,9 +33519,13 @@ "user" ] }, + "turn": { + "type": "number", + "description": "This is the turn number of the speech update (0-indexed)." + }, "timestamp": { - "type": "string", - "description": "This is the ISO-8601 formatted timestamp of when the message was sent." + "type": "number", + "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." }, "artifact": { "description": "This is a live version of the `call.artifact`.\n\nThis matches what is stored on `call.artifact` after the call.", @@ -32110,8 +33613,6 @@ "type": "string", "description": "This is the reason the call ended. This is only sent if the status is \"ended\".", "enum": [ - "assistant-not-valid", - "assistant-not-provided", "call-start-error-neither-assistant-nor-server-set", "assistant-request-failed", "assistant-request-returned-error", @@ -32119,22 +33620,18 @@ "assistant-request-returned-invalid-assistant", "assistant-request-returned-no-assistant", "assistant-request-returned-forwarding-phone-number", - "assistant-ended-call", - "assistant-said-end-call-phrase", - "assistant-ended-call-with-hangup-task", - "assistant-forwarded-call", - "assistant-join-timed-out", - "customer-busy", - "customer-ended-call", - "customer-did-not-answer", - "customer-did-not-give-microphone-permission", - "assistant-said-message-with-end-call-enabled", - "exceeded-max-duration", - "manually-canceled", - "phone-call-provider-closed-websocket", - "db-error", + "call.start.error-get-org", + "call.start.error-get-subscription", + "call.start.error-get-assistant", + "call.start.error-get-phone-number", + "call.start.error-get-customer", + "call.start.error-get-resources-validation", + "call.start.error-vapi-number-international", + "call.start.error-vapi-number-outbound-daily-limit", + "call.start.error-get-transport", + "assistant-not-valid", + "database-error", "assistant-not-found", - "license-check-failed", "pipeline-error-openai-voice-failed", "pipeline-error-cartesia-voice-failed", "pipeline-error-deepgram-voice-failed", @@ -32167,12 +33664,14 @@ "pipeline-error-vapi-403-model-access-denied", "pipeline-error-vapi-429-exceeded-quota", "pipeline-error-vapi-500-server-error", + "pipeline-error-vapi-503-server-overloaded-error", "call.in-progress.error-vapifault-vapi-llm-failed", "call.in-progress.error-vapifault-vapi-400-bad-request-validation-failed", "call.in-progress.error-vapifault-vapi-401-unauthorized", "call.in-progress.error-vapifault-vapi-403-model-access-denied", "call.in-progress.error-vapifault-vapi-429-exceeded-quota", - "call.in-progress.error-vapifault-vapi-500-server-error", + "call.in-progress.error-providerfault-vapi-500-server-error", + "call.in-progress.error-providerfault-vapi-503-server-overloaded-error", "pipeline-error-deepgram-transcriber-failed", "call.in-progress.error-vapifault-deepgram-transcriber-failed", "pipeline-error-gladia-transcriber-failed", @@ -32180,25 +33679,28 @@ "pipeline-error-speechmatics-transcriber-failed", "call.in-progress.error-vapifault-speechmatics-transcriber-failed", "pipeline-error-assembly-ai-transcriber-failed", + "pipeline-error-assembly-ai-returning-400-insufficent-funds", + "pipeline-error-assembly-ai-returning-400-paid-only-feature", + "pipeline-error-assembly-ai-returning-401-invalid-credentials", + "pipeline-error-assembly-ai-returning-500-invalid-schema", + "pipeline-error-assembly-ai-returning-500-word-boost-parsing-failed", "call.in-progress.error-vapifault-assembly-ai-transcriber-failed", + "call.in-progress.error-vapifault-assembly-ai-returning-400-insufficent-funds", + "call.in-progress.error-vapifault-assembly-ai-returning-400-paid-only-feature", + "call.in-progress.error-vapifault-assembly-ai-returning-401-invalid-credentials", + "call.in-progress.error-vapifault-assembly-ai-returning-500-invalid-schema", + "call.in-progress.error-vapifault-assembly-ai-returning-500-word-boost-parsing-failed", "pipeline-error-talkscriber-transcriber-failed", "call.in-progress.error-vapifault-talkscriber-transcriber-failed", "pipeline-error-azure-speech-transcriber-failed", "call.in-progress.error-vapifault-azure-speech-transcriber-failed", - "pipeline-no-available-model", + "call.in-progress.error-pipeline-no-available-llm-model", "worker-shutdown", "unknown-error", "vonage-disconnected", "vonage-failed-to-connect-call", "vonage-completed", "phone-call-provider-bypass-enabled-but-no-call-received", - "vapifault-phone-call-worker-setup-socket-error", - "vapifault-phone-call-worker-worker-setup-socket-timeout", - "vapifault-transport-never-connected", - "vapifault-transport-connected-but-call-not-active", - "vapifault-call-started-but-connection-to-transport-missing", - "call.in-progress.error-vapifault-phone-call-worker-setup-socket-error", - "call.in-progress.error-vapifault-phone-call-worker-worker-setup-socket-timeout", "call.in-progress.error-vapifault-transport-never-connected", "call.in-progress.error-vapifault-transport-connected-but-call-not-active", "call.in-progress.error-vapifault-call-started-but-connection-to-transport-missing", @@ -32211,201 +33713,241 @@ "call.in-progress.error-vapifault-inflection-ai-llm-failed", "call.in-progress.error-vapifault-cerebras-llm-failed", "call.in-progress.error-vapifault-deep-seek-llm-failed", - "pipeline-error-openai-llm-failed", - "pipeline-error-azure-openai-llm-failed", - "pipeline-error-groq-llm-failed", - "pipeline-error-google-llm-failed", - "pipeline-error-xai-llm-failed", - "pipeline-error-mistral-llm-failed", - "pipeline-error-inflection-ai-llm-failed", - "pipeline-error-cerebras-llm-failed", - "pipeline-error-deep-seek-llm-failed", "pipeline-error-openai-400-bad-request-validation-failed", "pipeline-error-openai-401-unauthorized", + "pipeline-error-openai-401-incorrect-api-key", + "pipeline-error-openai-401-account-not-in-organization", "pipeline-error-openai-403-model-access-denied", "pipeline-error-openai-429-exceeded-quota", + "pipeline-error-openai-429-rate-limit-reached", "pipeline-error-openai-500-server-error", + "pipeline-error-openai-503-server-overloaded-error", + "pipeline-error-openai-llm-failed", "call.in-progress.error-vapifault-openai-400-bad-request-validation-failed", "call.in-progress.error-vapifault-openai-401-unauthorized", + "call.in-progress.error-vapifault-openai-401-incorrect-api-key", + "call.in-progress.error-vapifault-openai-401-account-not-in-organization", "call.in-progress.error-vapifault-openai-403-model-access-denied", "call.in-progress.error-vapifault-openai-429-exceeded-quota", - "call.in-progress.error-vapifault-openai-500-server-error", + "call.in-progress.error-vapifault-openai-429-rate-limit-reached", + "call.in-progress.error-providerfault-openai-500-server-error", + "call.in-progress.error-providerfault-openai-503-server-overloaded-error", + "pipeline-error-azure-openai-400-bad-request-validation-failed", + "pipeline-error-azure-openai-401-unauthorized", + "pipeline-error-azure-openai-403-model-access-denied", + "pipeline-error-azure-openai-429-exceeded-quota", + "pipeline-error-azure-openai-500-server-error", + "pipeline-error-azure-openai-503-server-overloaded-error", + "pipeline-error-azure-openai-llm-failed", + "call.in-progress.error-vapifault-azure-openai-400-bad-request-validation-failed", + "call.in-progress.error-vapifault-azure-openai-401-unauthorized", + "call.in-progress.error-vapifault-azure-openai-403-model-access-denied", + "call.in-progress.error-vapifault-azure-openai-429-exceeded-quota", + "call.in-progress.error-providerfault-azure-openai-500-server-error", + "call.in-progress.error-providerfault-azure-openai-503-server-overloaded-error", "pipeline-error-google-400-bad-request-validation-failed", "pipeline-error-google-401-unauthorized", "pipeline-error-google-403-model-access-denied", "pipeline-error-google-429-exceeded-quota", "pipeline-error-google-500-server-error", + "pipeline-error-google-503-server-overloaded-error", + "pipeline-error-google-llm-failed", "call.in-progress.error-vapifault-google-400-bad-request-validation-failed", "call.in-progress.error-vapifault-google-401-unauthorized", "call.in-progress.error-vapifault-google-403-model-access-denied", "call.in-progress.error-vapifault-google-429-exceeded-quota", - "call.in-progress.error-vapifault-google-500-server-error", + "call.in-progress.error-providerfault-google-500-server-error", + "call.in-progress.error-providerfault-google-503-server-overloaded-error", "pipeline-error-xai-400-bad-request-validation-failed", "pipeline-error-xai-401-unauthorized", "pipeline-error-xai-403-model-access-denied", "pipeline-error-xai-429-exceeded-quota", "pipeline-error-xai-500-server-error", + "pipeline-error-xai-503-server-overloaded-error", + "pipeline-error-xai-llm-failed", "call.in-progress.error-vapifault-xai-400-bad-request-validation-failed", "call.in-progress.error-vapifault-xai-401-unauthorized", "call.in-progress.error-vapifault-xai-403-model-access-denied", "call.in-progress.error-vapifault-xai-429-exceeded-quota", - "call.in-progress.error-vapifault-xai-500-server-error", + "call.in-progress.error-providerfault-xai-500-server-error", + "call.in-progress.error-providerfault-xai-503-server-overloaded-error", "pipeline-error-mistral-400-bad-request-validation-failed", "pipeline-error-mistral-401-unauthorized", "pipeline-error-mistral-403-model-access-denied", "pipeline-error-mistral-429-exceeded-quota", "pipeline-error-mistral-500-server-error", + "pipeline-error-mistral-503-server-overloaded-error", + "pipeline-error-mistral-llm-failed", "call.in-progress.error-vapifault-mistral-400-bad-request-validation-failed", "call.in-progress.error-vapifault-mistral-401-unauthorized", "call.in-progress.error-vapifault-mistral-403-model-access-denied", "call.in-progress.error-vapifault-mistral-429-exceeded-quota", - "call.in-progress.error-vapifault-mistral-500-server-error", + "call.in-progress.error-providerfault-mistral-500-server-error", + "call.in-progress.error-providerfault-mistral-503-server-overloaded-error", "pipeline-error-inflection-ai-400-bad-request-validation-failed", "pipeline-error-inflection-ai-401-unauthorized", "pipeline-error-inflection-ai-403-model-access-denied", "pipeline-error-inflection-ai-429-exceeded-quota", "pipeline-error-inflection-ai-500-server-error", + "pipeline-error-inflection-ai-503-server-overloaded-error", + "pipeline-error-inflection-ai-llm-failed", "call.in-progress.error-vapifault-inflection-ai-400-bad-request-validation-failed", "call.in-progress.error-vapifault-inflection-ai-401-unauthorized", "call.in-progress.error-vapifault-inflection-ai-403-model-access-denied", "call.in-progress.error-vapifault-inflection-ai-429-exceeded-quota", - "call.in-progress.error-vapifault-inflection-ai-500-server-error", + "call.in-progress.error-providerfault-inflection-ai-500-server-error", + "call.in-progress.error-providerfault-inflection-ai-503-server-overloaded-error", "pipeline-error-deep-seek-400-bad-request-validation-failed", "pipeline-error-deep-seek-401-unauthorized", "pipeline-error-deep-seek-403-model-access-denied", "pipeline-error-deep-seek-429-exceeded-quota", "pipeline-error-deep-seek-500-server-error", + "pipeline-error-deep-seek-503-server-overloaded-error", + "pipeline-error-deep-seek-llm-failed", "call.in-progress.error-vapifault-deep-seek-400-bad-request-validation-failed", "call.in-progress.error-vapifault-deep-seek-401-unauthorized", "call.in-progress.error-vapifault-deep-seek-403-model-access-denied", "call.in-progress.error-vapifault-deep-seek-429-exceeded-quota", - "call.in-progress.error-vapifault-deep-seek-500-server-error", - "pipeline-error-azure-openai-400-bad-request-validation-failed", - "pipeline-error-azure-openai-401-unauthorized", - "pipeline-error-azure-openai-403-model-access-denied", - "pipeline-error-azure-openai-429-exceeded-quota", - "pipeline-error-azure-openai-500-server-error", - "call.in-progress.error-vapifault-azure-openai-400-bad-request-validation-failed", - "call.in-progress.error-vapifault-azure-openai-401-unauthorized", - "call.in-progress.error-vapifault-azure-openai-403-model-access-denied", - "call.in-progress.error-vapifault-azure-openai-429-exceeded-quota", - "call.in-progress.error-vapifault-azure-openai-500-server-error", + "call.in-progress.error-providerfault-deep-seek-500-server-error", + "call.in-progress.error-providerfault-deep-seek-503-server-overloaded-error", "pipeline-error-groq-400-bad-request-validation-failed", "pipeline-error-groq-401-unauthorized", "pipeline-error-groq-403-model-access-denied", "pipeline-error-groq-429-exceeded-quota", "pipeline-error-groq-500-server-error", + "pipeline-error-groq-503-server-overloaded-error", + "pipeline-error-groq-llm-failed", "call.in-progress.error-vapifault-groq-400-bad-request-validation-failed", "call.in-progress.error-vapifault-groq-401-unauthorized", "call.in-progress.error-vapifault-groq-403-model-access-denied", "call.in-progress.error-vapifault-groq-429-exceeded-quota", - "call.in-progress.error-vapifault-groq-500-server-error", + "call.in-progress.error-providerfault-groq-500-server-error", + "call.in-progress.error-providerfault-groq-503-server-overloaded-error", "pipeline-error-cerebras-400-bad-request-validation-failed", "pipeline-error-cerebras-401-unauthorized", "pipeline-error-cerebras-403-model-access-denied", "pipeline-error-cerebras-429-exceeded-quota", "pipeline-error-cerebras-500-server-error", + "pipeline-error-cerebras-503-server-overloaded-error", + "pipeline-error-cerebras-llm-failed", "call.in-progress.error-vapifault-cerebras-400-bad-request-validation-failed", "call.in-progress.error-vapifault-cerebras-401-unauthorized", "call.in-progress.error-vapifault-cerebras-403-model-access-denied", "call.in-progress.error-vapifault-cerebras-429-exceeded-quota", - "call.in-progress.error-vapifault-cerebras-500-server-error", + "call.in-progress.error-providerfault-cerebras-500-server-error", + "call.in-progress.error-providerfault-cerebras-503-server-overloaded-error", "pipeline-error-anthropic-400-bad-request-validation-failed", "pipeline-error-anthropic-401-unauthorized", "pipeline-error-anthropic-403-model-access-denied", "pipeline-error-anthropic-429-exceeded-quota", "pipeline-error-anthropic-500-server-error", + "pipeline-error-anthropic-503-server-overloaded-error", "pipeline-error-anthropic-llm-failed", + "call.in-progress.error-vapifault-anthropic-llm-failed", "call.in-progress.error-vapifault-anthropic-400-bad-request-validation-failed", "call.in-progress.error-vapifault-anthropic-401-unauthorized", "call.in-progress.error-vapifault-anthropic-403-model-access-denied", "call.in-progress.error-vapifault-anthropic-429-exceeded-quota", - "call.in-progress.error-vapifault-anthropic-500-server-error", - "call.in-progress.error-vapifault-anthropic-llm-failed", + "call.in-progress.error-providerfault-anthropic-500-server-error", + "call.in-progress.error-providerfault-anthropic-503-server-overloaded-error", "pipeline-error-together-ai-400-bad-request-validation-failed", "pipeline-error-together-ai-401-unauthorized", "pipeline-error-together-ai-403-model-access-denied", "pipeline-error-together-ai-429-exceeded-quota", "pipeline-error-together-ai-500-server-error", + "pipeline-error-together-ai-503-server-overloaded-error", "pipeline-error-together-ai-llm-failed", + "call.in-progress.error-vapifault-together-ai-llm-failed", "call.in-progress.error-vapifault-together-ai-400-bad-request-validation-failed", "call.in-progress.error-vapifault-together-ai-401-unauthorized", "call.in-progress.error-vapifault-together-ai-403-model-access-denied", "call.in-progress.error-vapifault-together-ai-429-exceeded-quota", - "call.in-progress.error-vapifault-together-ai-500-server-error", - "call.in-progress.error-vapifault-together-ai-llm-failed", + "call.in-progress.error-providerfault-together-ai-500-server-error", + "call.in-progress.error-providerfault-together-ai-503-server-overloaded-error", "pipeline-error-anyscale-400-bad-request-validation-failed", "pipeline-error-anyscale-401-unauthorized", "pipeline-error-anyscale-403-model-access-denied", "pipeline-error-anyscale-429-exceeded-quota", "pipeline-error-anyscale-500-server-error", + "pipeline-error-anyscale-503-server-overloaded-error", "pipeline-error-anyscale-llm-failed", + "call.in-progress.error-vapifault-anyscale-llm-failed", "call.in-progress.error-vapifault-anyscale-400-bad-request-validation-failed", "call.in-progress.error-vapifault-anyscale-401-unauthorized", "call.in-progress.error-vapifault-anyscale-403-model-access-denied", "call.in-progress.error-vapifault-anyscale-429-exceeded-quota", - "call.in-progress.error-vapifault-anyscale-500-server-error", - "call.in-progress.error-vapifault-anyscale-llm-failed", + "call.in-progress.error-providerfault-anyscale-500-server-error", + "call.in-progress.error-providerfault-anyscale-503-server-overloaded-error", "pipeline-error-openrouter-400-bad-request-validation-failed", "pipeline-error-openrouter-401-unauthorized", "pipeline-error-openrouter-403-model-access-denied", "pipeline-error-openrouter-429-exceeded-quota", "pipeline-error-openrouter-500-server-error", + "pipeline-error-openrouter-503-server-overloaded-error", "pipeline-error-openrouter-llm-failed", + "call.in-progress.error-vapifault-openrouter-llm-failed", "call.in-progress.error-vapifault-openrouter-400-bad-request-validation-failed", "call.in-progress.error-vapifault-openrouter-401-unauthorized", "call.in-progress.error-vapifault-openrouter-403-model-access-denied", "call.in-progress.error-vapifault-openrouter-429-exceeded-quota", - "call.in-progress.error-vapifault-openrouter-500-server-error", - "call.in-progress.error-vapifault-openrouter-llm-failed", + "call.in-progress.error-providerfault-openrouter-500-server-error", + "call.in-progress.error-providerfault-openrouter-503-server-overloaded-error", "pipeline-error-perplexity-ai-400-bad-request-validation-failed", "pipeline-error-perplexity-ai-401-unauthorized", "pipeline-error-perplexity-ai-403-model-access-denied", "pipeline-error-perplexity-ai-429-exceeded-quota", "pipeline-error-perplexity-ai-500-server-error", + "pipeline-error-perplexity-ai-503-server-overloaded-error", "pipeline-error-perplexity-ai-llm-failed", + "call.in-progress.error-vapifault-perplexity-ai-llm-failed", "call.in-progress.error-vapifault-perplexity-ai-400-bad-request-validation-failed", "call.in-progress.error-vapifault-perplexity-ai-401-unauthorized", "call.in-progress.error-vapifault-perplexity-ai-403-model-access-denied", "call.in-progress.error-vapifault-perplexity-ai-429-exceeded-quota", - "call.in-progress.error-vapifault-perplexity-ai-500-server-error", - "call.in-progress.error-vapifault-perplexity-ai-llm-failed", + "call.in-progress.error-providerfault-perplexity-ai-500-server-error", + "call.in-progress.error-providerfault-perplexity-ai-503-server-overloaded-error", "pipeline-error-deepinfra-400-bad-request-validation-failed", "pipeline-error-deepinfra-401-unauthorized", "pipeline-error-deepinfra-403-model-access-denied", "pipeline-error-deepinfra-429-exceeded-quota", "pipeline-error-deepinfra-500-server-error", + "pipeline-error-deepinfra-503-server-overloaded-error", "pipeline-error-deepinfra-llm-failed", + "call.in-progress.error-vapifault-deepinfra-llm-failed", "call.in-progress.error-vapifault-deepinfra-400-bad-request-validation-failed", "call.in-progress.error-vapifault-deepinfra-401-unauthorized", "call.in-progress.error-vapifault-deepinfra-403-model-access-denied", "call.in-progress.error-vapifault-deepinfra-429-exceeded-quota", - "call.in-progress.error-vapifault-deepinfra-500-server-error", - "call.in-progress.error-vapifault-deepinfra-llm-failed", + "call.in-progress.error-providerfault-deepinfra-500-server-error", + "call.in-progress.error-providerfault-deepinfra-503-server-overloaded-error", "pipeline-error-runpod-400-bad-request-validation-failed", "pipeline-error-runpod-401-unauthorized", "pipeline-error-runpod-403-model-access-denied", "pipeline-error-runpod-429-exceeded-quota", "pipeline-error-runpod-500-server-error", + "pipeline-error-runpod-503-server-overloaded-error", "pipeline-error-runpod-llm-failed", + "call.in-progress.error-vapifault-runpod-llm-failed", "call.in-progress.error-vapifault-runpod-400-bad-request-validation-failed", "call.in-progress.error-vapifault-runpod-401-unauthorized", "call.in-progress.error-vapifault-runpod-403-model-access-denied", "call.in-progress.error-vapifault-runpod-429-exceeded-quota", - "call.in-progress.error-vapifault-runpod-500-server-error", - "call.in-progress.error-vapifault-runpod-llm-failed", + "call.in-progress.error-providerfault-runpod-500-server-error", + "call.in-progress.error-providerfault-runpod-503-server-overloaded-error", "pipeline-error-custom-llm-400-bad-request-validation-failed", "pipeline-error-custom-llm-401-unauthorized", "pipeline-error-custom-llm-403-model-access-denied", "pipeline-error-custom-llm-429-exceeded-quota", "pipeline-error-custom-llm-500-server-error", + "pipeline-error-custom-llm-503-server-overloaded-error", "pipeline-error-custom-llm-llm-failed", + "call.in-progress.error-vapifault-custom-llm-llm-failed", "call.in-progress.error-vapifault-custom-llm-400-bad-request-validation-failed", "call.in-progress.error-vapifault-custom-llm-401-unauthorized", "call.in-progress.error-vapifault-custom-llm-403-model-access-denied", "call.in-progress.error-vapifault-custom-llm-429-exceeded-quota", - "call.in-progress.error-vapifault-custom-llm-500-server-error", - "call.in-progress.error-vapifault-custom-llm-llm-failed", + "call.in-progress.error-providerfault-custom-llm-500-server-error", + "call.in-progress.error-providerfault-custom-llm-503-server-overloaded-error", "pipeline-error-custom-voice-failed", "pipeline-error-cartesia-socket-hang-up", "pipeline-error-cartesia-requested-payment", @@ -32414,9 +33956,9 @@ "pipeline-error-cartesia-522-server-error", "call.in-progress.error-vapifault-cartesia-socket-hang-up", "call.in-progress.error-vapifault-cartesia-requested-payment", - "call.in-progress.error-vapifault-cartesia-500-server-error", - "call.in-progress.error-vapifault-cartesia-503-server-error", - "call.in-progress.error-vapifault-cartesia-522-server-error", + "call.in-progress.error-providerfault-cartesia-500-server-error", + "call.in-progress.error-providerfault-cartesia-503-server-error", + "call.in-progress.error-providerfault-cartesia-522-server-error", "pipeline-error-eleven-labs-voice-not-found", "pipeline-error-eleven-labs-quota-exceeded", "pipeline-error-eleven-labs-unauthorized-access", @@ -32435,9 +33977,9 @@ "pipeline-error-eleven-labs-missing-samples-for-voice-clone", "pipeline-error-eleven-labs-voice-not-fine-tuned-and-cannot-be-used", "pipeline-error-eleven-labs-voice-not-allowed-for-free-users", - "pipeline-error-eleven-labs-500-server-error", "pipeline-error-eleven-labs-max-character-limit-exceeded", "pipeline-error-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification", + "pipeline-error-eleven-labs-500-server-error", "call.in-progress.error-vapifault-eleven-labs-voice-not-found", "call.in-progress.error-vapifault-eleven-labs-quota-exceeded", "call.in-progress.error-vapifault-eleven-labs-unauthorized-access", @@ -32456,9 +33998,9 @@ "call.in-progress.error-vapifault-eleven-labs-missing-samples-for-voice-clone", "call.in-progress.error-vapifault-eleven-labs-voice-not-fine-tuned-and-cannot-be-used", "call.in-progress.error-vapifault-eleven-labs-voice-not-allowed-for-free-users", - "call.in-progress.error-vapifault-eleven-labs-500-server-error", "call.in-progress.error-vapifault-eleven-labs-max-character-limit-exceeded", "call.in-progress.error-vapifault-eleven-labs-blocked-voice-potentially-against-terms-of-service-and-awaiting-verification", + "call.in-progress.error-providerfault-eleven-labs-500-server-error", "pipeline-error-playht-request-timed-out", "pipeline-error-playht-invalid-voice", "pipeline-error-playht-unexpected-error", @@ -32481,41 +34023,46 @@ "call.in-progress.error-vapifault-playht-403-forbidden-out-of-characters", "call.in-progress.error-vapifault-playht-403-forbidden-api-access-not-available", "call.in-progress.error-vapifault-playht-429-exceeded-quota", - "call.in-progress.error-vapifault-playht-502-gateway-error", - "call.in-progress.error-vapifault-playht-504-gateway-error", + "call.in-progress.error-providerfault-playht-502-gateway-error", + "call.in-progress.error-providerfault-playht-504-gateway-error", "pipeline-error-custom-transcriber-failed", "call.in-progress.error-vapifault-custom-transcriber-failed", "pipeline-error-11labs-transcriber-failed", "call.in-progress.error-vapifault-11labs-transcriber-failed", - "pipeline-error-deepgram-returning-403-model-access-denied", + "pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination", "pipeline-error-deepgram-returning-401-invalid-credentials", + "pipeline-error-deepgram-returning-403-model-access-denied", "pipeline-error-deepgram-returning-404-not-found", - "pipeline-error-deepgram-returning-400-no-such-model-language-tier-combination", "pipeline-error-deepgram-returning-500-invalid-json", "pipeline-error-deepgram-returning-502-network-error", "pipeline-error-deepgram-returning-502-bad-gateway-ehostunreach", - "call.in-progress.error-vapifault-deepgram-returning-403-model-access-denied", + "call.in-progress.error-vapifault-deepgram-returning-400-no-such-model-language-tier-combination", "call.in-progress.error-vapifault-deepgram-returning-401-invalid-credentials", "call.in-progress.error-vapifault-deepgram-returning-404-not-found", - "call.in-progress.error-vapifault-deepgram-returning-400-no-such-model-language-tier-combination", - "call.in-progress.error-vapifault-deepgram-returning-500-invalid-json", - "call.in-progress.error-vapifault-deepgram-returning-502-network-error", - "call.in-progress.error-vapifault-deepgram-returning-502-bad-gateway-ehostunreach", + "call.in-progress.error-vapifault-deepgram-returning-403-model-access-denied", + "call.in-progress.error-providerfault-deepgram-returning-500-invalid-json", + "call.in-progress.error-providerfault-deepgram-returning-502-network-error", + "call.in-progress.error-providerfault-deepgram-returning-502-bad-gateway-ehostunreach", "pipeline-error-google-transcriber-failed", "call.in-progress.error-vapifault-google-transcriber-failed", "pipeline-error-openai-transcriber-failed", "call.in-progress.error-vapifault-openai-transcriber-failed", - "call.start.error-get-org", - "call.start.error-get-subscription", - "call.start.error-get-assistant", - "call.start.error-get-phone-number", - "call.start.error-get-customer", - "call.start.error-get-resources-validation", - "call.start.error-vapi-number-international", - "call.start.error-vapi-number-outbound-daily-limit", - "call.start.error-get-transport", + "assistant-ended-call", + "assistant-said-end-call-phrase", + "assistant-ended-call-with-hangup-task", + "assistant-ended-call-after-message-spoken", + "assistant-forwarded-call", + "assistant-join-timed-out", + "call.in-progress.error-assistant-did-not-receive-customer-audio", + "customer-busy", + "customer-ended-call", + "customer-did-not-answer", + "customer-did-not-give-microphone-permission", + "exceeded-max-duration", + "manually-canceled", + "phone-call-provider-closed-websocket", "silence-timed-out", - "sip-gateway-failed-to-connect-call", + "call.in-progress.error-sip-telephony-provider-failed-to-connect-call", "twilio-failed-to-connect-call", "twilio-reported-customer-misdialed", "vonage-rejected", @@ -32571,8 +34118,8 @@ ] }, "timestamp": { - "type": "string", - "description": "This is the ISO-8601 formatted timestamp of when the message was sent." + "type": "number", + "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." }, "artifact": { "description": "This is a live version of the `call.artifact`.\n\nThis matches what is stored on `call.artifact` after the call.", @@ -32692,8 +34239,8 @@ } }, "timestamp": { - "type": "string", - "description": "This is the ISO-8601 formatted timestamp of when the message was sent." + "type": "number", + "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." }, "artifact": { "description": "This is a live version of the `call.artifact`.\n\nThis matches what is stored on `call.artifact` after the call.", @@ -32772,8 +34319,8 @@ ] }, "timestamp": { - "type": "string", - "description": "This is the ISO-8601 formatted timestamp of when the message was sent." + "type": "number", + "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." }, "artifact": { "description": "This is a live version of the `call.artifact`.\n\nThis matches what is stored on `call.artifact` after the call.", @@ -32865,8 +34412,8 @@ ] }, "timestamp": { - "type": "string", - "description": "This is the ISO-8601 formatted timestamp of when the message was sent." + "type": "number", + "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." }, "artifact": { "description": "This is a live version of the `call.artifact`.\n\nThis matches what is stored on `call.artifact` after the call.", @@ -32962,8 +34509,8 @@ ] }, "timestamp": { - "type": "string", - "description": "This is the ISO-8601 formatted timestamp of when the message was sent." + "type": "number", + "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." }, "artifact": { "description": "This is a live version of the `call.artifact`.\n\nThis matches what is stored on `call.artifact` after the call.", @@ -33057,8 +34604,8 @@ ] }, "timestamp": { - "type": "string", - "description": "This is the ISO-8601 formatted timestamp of when the message was sent." + "type": "number", + "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." }, "artifact": { "description": "This is a live version of the `call.artifact`.\n\nThis matches what is stored on `call.artifact` after the call.", @@ -33129,8 +34676,8 @@ ] }, "timestamp": { - "type": "string", - "description": "This is the ISO-8601 formatted timestamp of when the message was sent." + "type": "number", + "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." }, "artifact": { "description": "This is a live version of the `call.artifact`.\n\nThis matches what is stored on `call.artifact` after the call.", @@ -33206,8 +34753,8 @@ ] }, "timestamp": { - "type": "string", - "description": "This is the ISO-8601 formatted timestamp of when the message was sent." + "type": "number", + "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." }, "artifact": { "description": "This is a live version of the `call.artifact`.\n\nThis matches what is stored on `call.artifact` after the call.", @@ -33283,8 +34830,8 @@ ] }, "timestamp": { - "type": "string", - "description": "This is the ISO-8601 formatted timestamp of when the message was sent." + "type": "number", + "description": "This is the timestamp of when the message was sent in milliseconds since Unix Epoch." }, "artifact": { "description": "This is a live version of the `call.artifact`.\n\nThis matches what is stored on `call.artifact` after the call.",