vapi-tts-failureVapicriticalTTS Generation Failure
Voice synthesis failed during an active call — the caller experienced silence where assistant speech was expected.
What this error means
Root causes
Upstream TTS provider (ElevenLabs, Azure, OpenAI TTS) returned an error or timed out
Common
TTS provider API key is invalid, expired, or has exceeded its quota
Common
Configured voice_id or voice name does not exist or has been deprecated in the TTS provider
Occasional
Text content to be synthesized is empty, null, or contains only invalid characters
Occasional
TTS synthesis request timed out due to an excessively long text passage being synthesized in a single request
Occasional
Transient network disruption between Vapi's TTS orchestration layer and the TTS provider's API
Rare
How to fix it
- 1
Verify TTS provider credentials in the Vapi dashboard
Open the Vapi dashboard at https://dashboard.vapi.ai and navigate to Providers or your Assistant configuration. Verify that the TTS provider API key is current, valid, and has not expired. For ElevenLabs, check that the key has an active subscription with available character quota. For Azure Speech, confirm the region, subscription key, and endpoint are all correct.
- 2
Test the TTS provider directly outside of Vapi
Isolate whether the failure is in Vapi or in the TTS provider by making a direct API call to the TTS provider using your credentials. If the direct call also fails, the issue is with the provider or credentials. If the direct call succeeds, the issue is specific to Vapi's integration.
// Test ElevenLabs TTS directly — outside of Vapi const testElevenLabsTTS = async () => { const voiceId = 'your-voice-id-here'; const response = await fetch( `https://api.elevenlabs.io/v1/text-to-speech/${voiceId}`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'xi-api-key': process.env.ELEVENLABS_API_KEY }, body: JSON.stringify({ text: 'Hello, this is a connectivity test.', model_id: 'eleven_multilingual_v2', voice_settings: { stability: 0.5, similarity_boost: 0.75 } }) } ); if (!response.ok) { const err = await response.json(); console.error('ElevenLabs TTS direct test failed:', response.status, err); } else { console.log('ElevenLabs TTS direct test: OK'); } }; testElevenLabsTTS(); - 3
Verify the voice ID exists in your TTS provider account
If using ElevenLabs or a provider with custom voices, confirm the voice_id configured in Vapi still exists in your TTS provider account. Voices can be deleted from the provider dashboard, instantly breaking any assistants that reference them. List available voices via the provider's API and validate the configured ID.
- 4
Configure a fallback TTS provider in Vapi
Vapi supports configuring a fallback TTS provider on your assistant. Add a secondary provider (e.g., if your primary is ElevenLabs, configure Deepgram or Azure TTS as fallback). This ensures calls continue with a different voice rather than going silent when the primary provider fails.
// Vapi API — create assistant with TTS fallback configuration const assistant = await vapiClient.assistants.create({ name: 'Sales Assistant', voice: { provider: 'elevenlabs', voiceId: 'your-elevenlabs-voice-id', model: 'eleven_multilingual_v2', fallbackPlan: { voices: [ { provider: 'azure', voiceId: 'en-US-JennyNeural' }, { provider: 'openai', voiceId: 'alloy' } ] } }, // ... other assistant config }); - 5
Monitor TTS provider quota and set up alerts
ElevenLabs and other TTS providers have character quotas per billing period. When the quota is exhausted, all synthesis requests fail. Monitor your remaining quota via the provider's dashboard or API, and set up automated alerts when you reach 80% of quota so you can upgrade your plan before hitting the limit.
- 6
Review Vapi call logs for the specific error details
In the Vapi dashboard, navigate to Calls and find the affected call by its call ID. Expand the call timeline to see the exact point where TTS failed, the error message returned by the TTS provider, and any retry attempts. The call log provides the raw error from the upstream provider which is essential for diagnosis.
- 7
Configure Vapi end-of-call-report webhooks to track TTS failures
Set up a webhook for Vapi's end-of-call-report event, which includes structured data about call quality, errors, and provider failures. Parse TTS-related errors from the report and store them for trend analysis. Alert when TTS failure rate exceeds a threshold across your call volume.
// Handle Vapi end-of-call-report webhook app.post('/vapi/webhook', (req, res) => { const { message } = req.body; if (message.type === 'end-of-call-report') { const { call, analysis } = message; // Check for TTS-related errors in call artifacts const ttsErrors = call.artifact?.messages?.filter( m => m.role === 'error' && m.content?.includes('tts') ) || []; if (ttsErrors.length > 0) { logger.error('vapi_tts_failure', { callId: call.id, assistantId: call.assistantId, ttsProvider: call.assistant?.voice?.provider, errorCount: ttsErrors.length, duration: call.endedAt - call.startedAt }); } } res.sendStatus(200); }); - 8
Test your assistant's voice configuration before go-live
Before deploying an assistant to production, make a test call and verify that TTS generates correctly for the greeting and all common response patterns. Use Vapi's test call feature in the dashboard to validate the voice configuration without impacting real users.
Prevention
Prevent TTS failures by maintaining a multi-provider TTS fallback chain so that no single provider failure results in silent calls. Monitor TTS provider quota usage continuously and set automated billing alerts to upgrade plans before quota exhaustion. Validate TTS provider credentials as part of your deployment pipeline — fail the deployment if the credential check fails rather than discovering the problem on the first live call. Run synthetic monitoring calls at regular intervals (e.g., every 5 minutes) to verify end-to-end TTS functionality and alert on failures before real users are affected. Keep voice IDs in version control or a configuration store and validate their existence against the provider API during deployment.
Debugging this right now?
Sherlock diagnoses vapi-tts-failure automatically. Just ask in Slack and get an instant root-cause analysis.
Add to Slack — Free