diff --git a/fern/apis/api/openapi.json b/fern/apis/api/openapi.json index 929febfd..bb495bbb 100644 --- a/fern/apis/api/openapi.json +++ b/fern/apis/api/openapi.json @@ -5278,6 +5278,10 @@ "type": "number", "description": "This is the cost of Vapi." }, + "chat": { + "type": "number", + "description": "This is the cost of chat interactions." + }, "total": { "type": "number", "description": "This is the total cost of the call." @@ -5623,6 +5627,10 @@ { "$ref": "#/components/schemas/FallbackOpenAITranscriber", "title": "OpenAI" + }, + { + "$ref": "#/components/schemas/FallbackCartesiaTranscriber", + "title": "Cartesia" } ] } @@ -5661,6 +5669,30 @@ "description": "Uses Assembly AI's new Universal Streaming API. See: https://www.assemblyai.com/docs/speech-to-text/universal-streaming\n\n@default false", "example": false }, + "endOfTurnConfidenceThreshold": { + "type": "number", + "minimum": 0, + "maximum": 1, + "example": 0.7 + }, + "minEndOfTurnSilenceWhenConfident": { + "type": "number", + "description": "The minimum amount of silence in milliseconds required to detect end of turn when confident. Only used when `enableUniversalStreamingApi` is true.\n\n@default 160", + "minimum": 0, + "example": 160 + }, + "wordFinalizationMaxWaitTime": { + "type": "number", + "description": "The maximum wait time for word finalization. Only used when `enableUniversalStreamingApi` is true.\n\n@default 160", + "minimum": 0, + "example": 160 + }, + "maxTurnSilence": { + "type": "number", + "description": "The maximum amount of silence in milliseconds allowed in a turn before end of turn is triggered. Only used when `enableUniversalStreamingApi` is true.\n\n@default 400", + "minimum": 0, + "example": 400 + }, "realtimeUrl": { "type": "string", "description": "The WebSocket URL that the transcriber connects to." @@ -5866,6 +5898,224 @@ "provider" ] }, + "CartesiaTranscriber": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "cartesia" + ] + }, + "model": { + "type": "string", + "enum": [ + "ink-whisper" + ] + }, + "language": { + "type": "string", + "enum": [ + "aa", + "ab", + "ae", + "af", + "ak", + "am", + "an", + "ar", + "as", + "av", + "ay", + "az", + "ba", + "be", + "bg", + "bh", + "bi", + "bm", + "bn", + "bo", + "br", + "bs", + "ca", + "ce", + "ch", + "co", + "cr", + "cs", + "cu", + "cv", + "cy", + "da", + "de", + "dv", + "dz", + "ee", + "el", + "en", + "eo", + "es", + "et", + "eu", + "fa", + "ff", + "fi", + "fj", + "fo", + "fr", + "fy", + "ga", + "gd", + "gl", + "gn", + "gu", + "gv", + "ha", + "he", + "hi", + "ho", + "hr", + "ht", + "hu", + "hy", + "hz", + "ia", + "id", + "ie", + "ig", + "ii", + "ik", + "io", + "is", + "it", + "iu", + "ja", + "jv", + "ka", + "kg", + "ki", + "kj", + "kk", + "kl", + "km", + "kn", + "ko", + "kr", + "ks", + "ku", + "kv", + "kw", + "ky", + "la", + "lb", + "lg", + "li", + "ln", + "lo", + "lt", + "lu", + "lv", + "mg", + "mh", + "mi", + "mk", + "ml", + "mn", + "mr", + "ms", + "mt", + "my", + "na", + "nb", + "nd", + "ne", + "ng", + "nl", + "nn", + "no", + "nr", + "nv", + "ny", + "oc", + "oj", + "om", + "or", + "os", + "pa", + "pi", + "pl", + "ps", + "pt", + "qu", + "rm", + "rn", + "ro", + "ru", + "rw", + "sa", + "sc", + "sd", + "se", + "sg", + "si", + "sk", + "sl", + "sm", + "sn", + "so", + "sq", + "sr", + "ss", + "st", + "su", + "sv", + "sw", + "ta", + "te", + "tg", + "th", + "ti", + "tk", + "tl", + "tn", + "to", + "tr", + "ts", + "tt", + "tw", + "ty", + "ug", + "uk", + "ur", + "uz", + "ve", + "vi", + "vo", + "wa", + "wo", + "xh", + "yi", + "yue", + "yo", + "za", + "zh", + "zu" + ] + }, + "fallbackPlan": { + "description": "This is the plan for voice provider fallbacks in the event that the primary voice provider fails.", + "allOf": [ + { + "$ref": "#/components/schemas/FallbackTranscriberPlan" + } + ] + } + }, + "required": [ + "provider" + ] + }, "BackoffPlan": { "type": "object", "properties": { @@ -7101,6 +7351,30 @@ "description": "Uses Assembly AI's new Universal Streaming API. See: https://www.assemblyai.com/docs/speech-to-text/universal-streaming\n\n@default false", "example": false }, + "endOfTurnConfidenceThreshold": { + "type": "number", + "minimum": 0, + "maximum": 1, + "example": 0.7 + }, + "minEndOfTurnSilenceWhenConfident": { + "type": "number", + "description": "The minimum amount of silence in milliseconds required to detect end of turn when confident. Only used when `enableUniversalStreamingApi` is true.\n\n@default 160", + "minimum": 0, + "example": 160 + }, + "wordFinalizationMaxWaitTime": { + "type": "number", + "description": "The maximum wait time for word finalization. Only used when `enableUniversalStreamingApi` is true.\n\n@default 160", + "minimum": 0, + "example": 160 + }, + "maxTurnSilence": { + "type": "number", + "description": "The maximum amount of silence in milliseconds allowed in a turn before end of turn is triggered. Only used when `enableUniversalStreamingApi` is true.\n\n@default 400", + "minimum": 0, + "example": 400 + }, "realtimeUrl": { "type": "string", "description": "The WebSocket URL that the transcriber connects to." @@ -7290,6 +7564,216 @@ "provider" ] }, + "FallbackCartesiaTranscriber": { + "type": "object", + "properties": { + "provider": { + "type": "string", + "enum": [ + "cartesia" + ] + }, + "model": { + "type": "string", + "enum": [ + "ink-whisper" + ] + }, + "language": { + "type": "string", + "enum": [ + "aa", + "ab", + "ae", + "af", + "ak", + "am", + "an", + "ar", + "as", + "av", + "ay", + "az", + "ba", + "be", + "bg", + "bh", + "bi", + "bm", + "bn", + "bo", + "br", + "bs", + "ca", + "ce", + "ch", + "co", + "cr", + "cs", + "cu", + "cv", + "cy", + "da", + "de", + "dv", + "dz", + "ee", + "el", + "en", + "eo", + "es", + "et", + "eu", + "fa", + "ff", + "fi", + "fj", + "fo", + "fr", + "fy", + "ga", + "gd", + "gl", + "gn", + "gu", + "gv", + "ha", + "he", + "hi", + "ho", + "hr", + "ht", + "hu", + "hy", + "hz", + "ia", + "id", + "ie", + "ig", + "ii", + "ik", + "io", + "is", + "it", + "iu", + "ja", + "jv", + "ka", + "kg", + "ki", + "kj", + "kk", + "kl", + "km", + "kn", + "ko", + "kr", + "ks", + "ku", + "kv", + "kw", + "ky", + "la", + "lb", + "lg", + "li", + "ln", + "lo", + "lt", + "lu", + "lv", + "mg", + "mh", + "mi", + "mk", + "ml", + "mn", + "mr", + "ms", + "mt", + "my", + "na", + "nb", + "nd", + "ne", + "ng", + "nl", + "nn", + "no", + "nr", + "nv", + "ny", + "oc", + "oj", + "om", + "or", + "os", + "pa", + "pi", + "pl", + "ps", + "pt", + "qu", + "rm", + "rn", + "ro", + "ru", + "rw", + "sa", + "sc", + "sd", + "se", + "sg", + "si", + "sk", + "sl", + "sm", + "sn", + "so", + "sq", + "sr", + "ss", + "st", + "su", + "sv", + "sw", + "ta", + "te", + "tg", + "th", + "ti", + "tk", + "tl", + "tn", + "to", + "tr", + "ts", + "tt", + "tw", + "ty", + "ug", + "uk", + "ur", + "uz", + "ve", + "vi", + "vo", + "wa", + "wo", + "xh", + "yi", + "yue", + "yo", + "za", + "zh", + "zu" + ] + } + }, + "required": [ + "provider" + ] + }, "FallbackCustomTranscriber": { "type": "object", "properties": { @@ -12895,7 +13379,16 @@ }, "VariableExtractionPlan": { "type": "object", - "properties": {} + "properties": { + "schema": { + "description": "This is the schema of parameters we want to extract from the response", + "allOf": [ + { + "$ref": "#/components/schemas/JsonSchema" + } + ] + } + } }, "ConversationNode": { "type": "object", @@ -12962,6 +13455,10 @@ { "$ref": "#/components/schemas/OpenAITranscriber", "title": "OpenAITranscriber" + }, + { + "$ref": "#/components/schemas/CartesiaTranscriber", + "title": "CartesiaTranscriber" } ] }, @@ -13314,6 +13811,14 @@ "globalPrompt": { "type": "string", "maxLength": 5000 + }, + "server": { + "description": "This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.\n\nThe order of precedence is:\n\n1. tool.server\n2. workflow.server / assistant.server\n3. phoneNumber.server\n4. org.server", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] } }, "required": [ @@ -16652,6 +17157,85 @@ "provider" ] }, + "SmartDenoisingPlan": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Whether smart denoising using Krisp is enabled.", + "default": false + } + } + }, + "FourierDenoisingPlan": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Whether Fourier denoising is enabled. Note that this is experimental and may not work as expected.", + "default": false + }, + "mediaDetectionEnabled": { + "type": "boolean", + "description": "Whether automatic media detection is enabled. When enabled, the filter will automatically\ndetect consistent background TV/music/radio and switch to more aggressive filtering settings.\nOnly applies when enabled is true.", + "example": true, + "default": true + }, + "staticThreshold": { + "type": "number", + "description": "Static threshold in dB used as fallback when no baseline is established.", + "example": -35, + "minimum": -80, + "maximum": 0, + "default": -35 + }, + "baselineOffsetDb": { + "type": "number", + "description": "How far below the rolling baseline to filter audio, in dB.\nLower values (e.g., -10) are more aggressive, higher values (e.g., -20) are more conservative.", + "example": -15, + "minimum": -30, + "maximum": -5, + "default": -15 + }, + "windowSizeMs": { + "type": "number", + "description": "Rolling window size in milliseconds for calculating the audio baseline.\nLarger windows adapt more slowly but are more stable.", + "example": 3000, + "minimum": 1000, + "maximum": 30000, + "default": 3000 + }, + "baselinePercentile": { + "type": "number", + "description": "Percentile to use for baseline calculation (1-99).\nHigher percentiles (e.g., 85) focus on louder speech, lower percentiles (e.g., 50) include quieter speech.", + "example": 85, + "minimum": 1, + "maximum": 99, + "default": 85 + } + } + }, + "BackgroundSpeechDenoisingPlan": { + "type": "object", + "properties": { + "smartDenoisingPlan": { + "description": "Whether smart denoising using Krisp is enabled.", + "allOf": [ + { + "$ref": "#/components/schemas/SmartDenoisingPlan" + } + ] + }, + "fourierDenoisingPlan": { + "description": "Whether Fourier denoising is enabled. Note that this is experimental and may not work as expected.\n\nThis can be combined with smart denoising, and will be run afterwards.", + "allOf": [ + { + "$ref": "#/components/schemas/FourierDenoisingPlan" + } + ] + } + } + }, "CreateAnthropicCredentialDTO": { "type": "object", "properties": { @@ -19291,6 +19875,10 @@ { "$ref": "#/components/schemas/OpenAITranscriber", "title": "OpenAITranscriber" + }, + { + "$ref": "#/components/schemas/CartesiaTranscriber", + "title": "CartesiaTranscriber" } ] }, @@ -19609,7 +20197,6 @@ }, "backgroundDenoisingEnabled": { "type": "boolean", - "description": "This enables filtering of noise and background speech while the user is talking.\n\nDefault `false` while in beta.\n\n@default false", "example": false }, "modelOutputInMessagesEnabled": { @@ -19947,6 +20534,14 @@ "type": "object", "description": "This is for metadata you want to store on the assistant." }, + "backgroundSpeechDenoisingPlan": { + "description": "This enables filtering of noise and background speech while the user is talking.\n\nFeatures:\n- Smart denoising using Krisp\n- Fourier denoising\n\nSmart denoising can be combined with or used independently of Fourier denoising.\n\nOrder of precedence:\n- Smart denoising\n- Fourier denoising", + "allOf": [ + { + "$ref": "#/components/schemas/BackgroundSpeechDenoisingPlan" + } + ] + }, "analysisPlan": { "description": "This is the plan for analysis of assistant's calls. Stored in `call.analysis`.", "allOf": [ @@ -20060,6 +20655,10 @@ { "$ref": "#/components/schemas/OpenAITranscriber", "title": "OpenAITranscriber" + }, + { + "$ref": "#/components/schemas/CartesiaTranscriber", + "title": "CartesiaTranscriber" } ] }, @@ -20378,7 +20977,6 @@ }, "backgroundDenoisingEnabled": { "type": "boolean", - "description": "This enables filtering of noise and background speech while the user is talking.\n\nDefault `false` while in beta.\n\n@default false", "example": false }, "modelOutputInMessagesEnabled": { @@ -20720,6 +21318,14 @@ "type": "object", "description": "This is for metadata you want to store on the assistant." }, + "backgroundSpeechDenoisingPlan": { + "description": "This enables filtering of noise and background speech while the user is talking.\n\nFeatures:\n- Smart denoising using Krisp\n- Fourier denoising\n\nSmart denoising can be combined with or used independently of Fourier denoising.\n\nOrder of precedence:\n- Smart denoising\n- Fourier denoising", + "allOf": [ + { + "$ref": "#/components/schemas/BackgroundSpeechDenoisingPlan" + } + ] + }, "analysisPlan": { "description": "This is the plan for analysis of assistant's calls. Stored in `call.analysis`.", "allOf": [ @@ -20891,6 +21497,14 @@ "globalPrompt": { "type": "string", "maxLength": 5000 + }, + "server": { + "description": "This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.\n\nThe order of precedence is:\n\n1. tool.server\n2. workflow.server / assistant.server\n3. phoneNumber.server\n4. org.server", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] } }, "required": [ @@ -21254,8 +21868,9 @@ "assistant-request-returned-invalid-assistant", "assistant-request-returned-no-assistant", "assistant-request-returned-forwarding-phone-number", - "call.start.error-get-org", - "call.start.error-get-subscription", + "scheduled-call-deleted", + "call.start.error-vapifault-get-org", + "call.start.error-vapifault-get-subscription", "call.start.error-get-assistant", "call.start.error-get-phone-number", "call.start.error-get-customer", @@ -21263,6 +21878,11 @@ "call.start.error-vapi-number-international", "call.start.error-vapi-number-outbound-daily-limit", "call.start.error-get-transport", + "call.start.error-subscription-wallet-does-not-exist", + "call.start.error-subscription-frozen", + "call.start.error-subscription-insufficient-credits", + "call.start.error-subscription-upgrade-failed", + "call.start.error-subscription-concurrency-limit-reached", "assistant-not-valid", "database-error", "assistant-not-found", @@ -21330,7 +21950,6 @@ "call.in-progress.error-vapifault-azure-speech-transcriber-failed", "call.in-progress.error-pipeline-no-available-llm-model", "worker-shutdown", - "unknown-error", "vonage-disconnected", "vonage-failed-to-connect-call", "vonage-completed", @@ -21341,6 +21960,8 @@ "call.in-progress.error-vapifault-transport-connected-but-call-not-active", "call.in-progress.error-vapifault-call-started-but-connection-to-transport-missing", "call.in-progress.error-vapifault-worker-died", + "call.in-progress.twilio-completed-call", + "call.in-progress.sip-completed-call", "call.in-progress.error-vapifault-openai-llm-failed", "call.in-progress.error-vapifault-azure-openai-llm-failed", "call.in-progress.error-vapifault-groq-llm-failed", @@ -21350,6 +21971,7 @@ "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", + "call.in-progress.error-vapifault-chat-pipeline-failed-to-start", "pipeline-error-openai-400-bad-request-validation-failed", "pipeline-error-openai-401-unauthorized", "pipeline-error-openai-401-incorrect-api-key", @@ -21617,6 +22239,7 @@ "pipeline-error-cartesia-socket-hang-up", "pipeline-error-cartesia-requested-payment", "pipeline-error-cartesia-500-server-error", + "pipeline-error-cartesia-502-server-error", "pipeline-error-cartesia-503-server-error", "pipeline-error-cartesia-522-server-error", "call.in-progress.error-vapifault-cartesia-socket-hang-up", @@ -21720,6 +22343,7 @@ "assistant-forwarded-call", "assistant-join-timed-out", "call.in-progress.error-assistant-did-not-receive-customer-audio", + "call.in-progress.error-transfer-failed", "customer-busy", "customer-ended-call", "customer-did-not-answer", @@ -22662,6 +23286,26 @@ "format": "date-time", "type": "string", "description": "This is the ISO 8601 date-time string of when the chat was last updated." + }, + "costs": { + "type": "array", + "description": "These are the costs of individual components of the chat in USD.", + "items": { + "oneOf": [ + { + "$ref": "#/components/schemas/ModelCost", + "title": "ModelCost" + }, + { + "$ref": "#/components/schemas/ChatCost", + "title": "ChatCost" + } + ] + } + }, + "cost": { + "type": "number", + "description": "This is the cost of the chat in USD." } }, "required": [ @@ -23607,6 +24251,10 @@ { "$ref": "#/components/schemas/OpenAITranscriber", "title": "OpenAITranscriber" + }, + { + "$ref": "#/components/schemas/CartesiaTranscriber", + "title": "CartesiaTranscriber" } ] }, @@ -23925,7 +24573,6 @@ }, "backgroundDenoisingEnabled": { "type": "boolean", - "description": "This enables filtering of noise and background speech while the user is talking.\n\nDefault `false` while in beta.\n\n@default false", "example": false }, "modelOutputInMessagesEnabled": { @@ -24263,6 +24910,14 @@ "type": "object", "description": "This is for metadata you want to store on the assistant." }, + "backgroundSpeechDenoisingPlan": { + "description": "This enables filtering of noise and background speech while the user is talking.\n\nFeatures:\n- Smart denoising using Krisp\n- Fourier denoising\n\nSmart denoising can be combined with or used independently of Fourier denoising.\n\nOrder of precedence:\n- Smart denoising\n- Fourier denoising", + "allOf": [ + { + "$ref": "#/components/schemas/BackgroundSpeechDenoisingPlan" + } + ] + }, "analysisPlan": { "description": "This is the plan for analysis of assistant's calls. Stored in `call.analysis`.", "allOf": [ @@ -24436,6 +25091,10 @@ { "$ref": "#/components/schemas/OpenAITranscriber", "title": "OpenAITranscriber" + }, + { + "$ref": "#/components/schemas/CartesiaTranscriber", + "title": "CartesiaTranscriber" } ] }, @@ -24754,7 +25413,6 @@ }, "backgroundDenoisingEnabled": { "type": "boolean", - "description": "This enables filtering of noise and background speech while the user is talking.\n\nDefault `false` while in beta.\n\n@default false", "example": false }, "modelOutputInMessagesEnabled": { @@ -25092,6 +25750,14 @@ "type": "object", "description": "This is for metadata you want to store on the assistant." }, + "backgroundSpeechDenoisingPlan": { + "description": "This enables filtering of noise and background speech while the user is talking.\n\nFeatures:\n- Smart denoising using Krisp\n- Fourier denoising\n\nSmart denoising can be combined with or used independently of Fourier denoising.\n\nOrder of precedence:\n- Smart denoising\n- Fourier denoising", + "allOf": [ + { + "$ref": "#/components/schemas/BackgroundSpeechDenoisingPlan" + } + ] + }, "analysisPlan": { "description": "This is the plan for analysis of assistant's calls. Stored in `call.analysis`.", "allOf": [ @@ -28250,8 +28916,9 @@ }, "name": { "type": "string", - "description": "This is the name of the tool. This will be passed to the model.", - "maxLength": 40 + "description": "This is the name of the tool. This will be passed to the model.\n\nMust be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 40.", + "maxLength": 40, + "pattern": "/^[a-zA-Z0-9_-]{1,40}$/" }, "description": { "type": "string", @@ -28286,6 +28953,14 @@ } ] }, + "variableExtractionPlan": { + "description": "This is the plan that controls the variable extraction from the tool's response.", + "allOf": [ + { + "$ref": "#/components/schemas/VariableExtractionPlan" + } + ] + }, "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": [ @@ -29961,6 +30636,14 @@ "globalPrompt": { "type": "string", "maxLength": 5000 + }, + "server": { + "description": "This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.\n\nThe order of precedence is:\n\n1. tool.server\n2. workflow.server / assistant.server\n3. phoneNumber.server\n4. org.server", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] } }, "required": [ @@ -30016,6 +30699,14 @@ "globalPrompt": { "type": "string", "maxLength": 5000 + }, + "server": { + "description": "This is where Vapi will send webhooks. You can find all webhooks available along with their shape in ServerMessage schema.\n\nThe order of precedence is:\n\n1. tool.server\n2. workflow.server / assistant.server\n3. phoneNumber.server\n4. org.server", + "allOf": [ + { + "$ref": "#/components/schemas/Server" + } + ] } } }, @@ -38354,8 +39045,9 @@ "assistant-request-returned-invalid-assistant", "assistant-request-returned-no-assistant", "assistant-request-returned-forwarding-phone-number", - "call.start.error-get-org", - "call.start.error-get-subscription", + "scheduled-call-deleted", + "call.start.error-vapifault-get-org", + "call.start.error-vapifault-get-subscription", "call.start.error-get-assistant", "call.start.error-get-phone-number", "call.start.error-get-customer", @@ -38363,6 +39055,11 @@ "call.start.error-vapi-number-international", "call.start.error-vapi-number-outbound-daily-limit", "call.start.error-get-transport", + "call.start.error-subscription-wallet-does-not-exist", + "call.start.error-subscription-frozen", + "call.start.error-subscription-insufficient-credits", + "call.start.error-subscription-upgrade-failed", + "call.start.error-subscription-concurrency-limit-reached", "assistant-not-valid", "database-error", "assistant-not-found", @@ -38430,7 +39127,6 @@ "call.in-progress.error-vapifault-azure-speech-transcriber-failed", "call.in-progress.error-pipeline-no-available-llm-model", "worker-shutdown", - "unknown-error", "vonage-disconnected", "vonage-failed-to-connect-call", "vonage-completed", @@ -38441,6 +39137,8 @@ "call.in-progress.error-vapifault-transport-connected-but-call-not-active", "call.in-progress.error-vapifault-call-started-but-connection-to-transport-missing", "call.in-progress.error-vapifault-worker-died", + "call.in-progress.twilio-completed-call", + "call.in-progress.sip-completed-call", "call.in-progress.error-vapifault-openai-llm-failed", "call.in-progress.error-vapifault-azure-openai-llm-failed", "call.in-progress.error-vapifault-groq-llm-failed", @@ -38450,6 +39148,7 @@ "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", + "call.in-progress.error-vapifault-chat-pipeline-failed-to-start", "pipeline-error-openai-400-bad-request-validation-failed", "pipeline-error-openai-401-unauthorized", "pipeline-error-openai-401-incorrect-api-key", @@ -38717,6 +39416,7 @@ "pipeline-error-cartesia-socket-hang-up", "pipeline-error-cartesia-requested-payment", "pipeline-error-cartesia-500-server-error", + "pipeline-error-cartesia-502-server-error", "pipeline-error-cartesia-503-server-error", "pipeline-error-cartesia-522-server-error", "call.in-progress.error-vapifault-cartesia-socket-hang-up", @@ -38820,6 +39520,7 @@ "assistant-forwarded-call", "assistant-join-timed-out", "call.in-progress.error-assistant-did-not-receive-customer-audio", + "call.in-progress.error-transfer-failed", "customer-busy", "customer-ended-call", "customer-did-not-answer", @@ -39474,8 +40175,9 @@ "assistant-request-returned-invalid-assistant", "assistant-request-returned-no-assistant", "assistant-request-returned-forwarding-phone-number", - "call.start.error-get-org", - "call.start.error-get-subscription", + "scheduled-call-deleted", + "call.start.error-vapifault-get-org", + "call.start.error-vapifault-get-subscription", "call.start.error-get-assistant", "call.start.error-get-phone-number", "call.start.error-get-customer", @@ -39483,6 +40185,11 @@ "call.start.error-vapi-number-international", "call.start.error-vapi-number-outbound-daily-limit", "call.start.error-get-transport", + "call.start.error-subscription-wallet-does-not-exist", + "call.start.error-subscription-frozen", + "call.start.error-subscription-insufficient-credits", + "call.start.error-subscription-upgrade-failed", + "call.start.error-subscription-concurrency-limit-reached", "assistant-not-valid", "database-error", "assistant-not-found", @@ -39550,7 +40257,6 @@ "call.in-progress.error-vapifault-azure-speech-transcriber-failed", "call.in-progress.error-pipeline-no-available-llm-model", "worker-shutdown", - "unknown-error", "vonage-disconnected", "vonage-failed-to-connect-call", "vonage-completed", @@ -39561,6 +40267,8 @@ "call.in-progress.error-vapifault-transport-connected-but-call-not-active", "call.in-progress.error-vapifault-call-started-but-connection-to-transport-missing", "call.in-progress.error-vapifault-worker-died", + "call.in-progress.twilio-completed-call", + "call.in-progress.sip-completed-call", "call.in-progress.error-vapifault-openai-llm-failed", "call.in-progress.error-vapifault-azure-openai-llm-failed", "call.in-progress.error-vapifault-groq-llm-failed", @@ -39570,6 +40278,7 @@ "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", + "call.in-progress.error-vapifault-chat-pipeline-failed-to-start", "pipeline-error-openai-400-bad-request-validation-failed", "pipeline-error-openai-401-unauthorized", "pipeline-error-openai-401-incorrect-api-key", @@ -39837,6 +40546,7 @@ "pipeline-error-cartesia-socket-hang-up", "pipeline-error-cartesia-requested-payment", "pipeline-error-cartesia-500-server-error", + "pipeline-error-cartesia-502-server-error", "pipeline-error-cartesia-503-server-error", "pipeline-error-cartesia-522-server-error", "call.in-progress.error-vapifault-cartesia-socket-hang-up", @@ -39940,6 +40650,7 @@ "assistant-forwarded-call", "assistant-join-timed-out", "call.in-progress.error-assistant-did-not-receive-customer-audio", + "call.in-progress.error-transfer-failed", "customer-busy", "customer-ended-call", "customer-did-not-answer", @@ -41701,6 +42412,26 @@ "cost" ] }, + "ChatCost": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "This is the type of cost, always 'chat' for this class.", + "enum": [ + "chat" + ] + }, + "cost": { + "type": "number", + "description": "This is the cost of the component in USD." + } + }, + "required": [ + "type", + "cost" + ] + }, "FunctionToolWithToolCall": { "type": "object", "properties": {