Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions fern/calls/assistant-based-warm-transfer.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -318,6 +318,6 @@ Configure your transfer assistant to:
## Next steps

Now that you've configured assistant-based warm transfers:
- **[Call forwarding](mdc:docs/call-forwarding):** Learn about other transfer modes and options
- **[Assistant configuration](mdc:docs/assistants):** Configure assistant models and prompts
- **[Custom tools](mdc:docs/tools/custom-tools):** Add custom tools to your assistants
- **[Call forwarding](../call-forwarding):** Learn about other transfer modes and options
- **[Assistant configuration](../assistants):** Configure assistant models and prompts
- **[Custom tools](../tools/custom-tools):** Add custom tools to your assistants
10 changes: 5 additions & 5 deletions fern/customization/custom-transcriber.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -408,9 +408,9 @@ You'll learn how to:
"transcriber": {
"provider": "custom-transcriber",
"server": {
"url": "wss://your-server.ngrok.io/api/custom-transcriber"
},
"secret": "your_optional_secret_value"
"url": "wss://your-server.ngrok.io/api/custom-transcriber",
"credentialId": "cred_transcriber_auth_123"
}
},
"firstMessage": "Hello! I am using a custom transcriber with Deepgram."
},
Expand Down Expand Up @@ -438,8 +438,8 @@ You'll learn how to:

- **Streaming support requirement:**
The custom transcriber must support streaming. Vapi sends continuous audio data over the WebSocket, and your server must handle this stream in real time.
- **Secret header:**
The custom transcriber configuration accepts an optional field called **`secret`**. When set, Vapi will send this value with every request as an HTTP header named `x-vapi-secret`. This can also be configured via a headers field.
- **Authentication:**
For secure transcriber endpoints, use **Custom Credentials** with `credentialId`. Create [Custom Credentials](../server-url/server-authentication) in the dashboard to manage Bearer Token, OAuth 2.0, or HMAC authentication. For backward compatibility, the legacy `secret` field is still supported and sends the value as an `x-vapi-secret` HTTP header.
- **Buffering:**
The solution buffers PCM audio and performs simple validation (e.g. ensuring stereo PCM data length is a multiple of 4). If the audio data is malformed, it is trimmed to a valid length.
- **Channel detection:**
Expand Down
18 changes: 11 additions & 7 deletions fern/customization/custom-tts.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -53,30 +53,34 @@ VAPI's custom TTS system operates through a webhook pattern:

## Authentication setup

VAPI needs secure communication with your TTS endpoint. Choose from these authentication options:
VAPI needs secure communication with your TTS endpoint. Use **Custom Credentials** for authentication:

### Secret header authentication
### Using Custom Credentials (Recommended)

The most common approach uses a secret token in the `X-VAPI-SECRET` header:
Create authentication credentials in the dashboard and reference them by ID:

<CodeBlocks>
```json title="Assistant Configuration"
```json title="Assistant Configuration with Custom Credentials"
{
"voice": {
"provider": "custom-voice",
"server": {
"url": "https://your-tts-api.com/synthesize",
"secret": "your-secret-token-here",
"credentialId": "cred_tts_auth_123",
"timeoutSeconds": 30
}
}
}
```
</CodeBlocks>

### Enhanced authentication with custom headers
<Note>
Create [Custom Credentials](../server-url/server-authentication) in the Vapi dashboard for better security and credential management.
</Note>

### Legacy Authentication Methods

Add extra headers for API versioning or enhanced security:
For backward compatibility, you can still use inline authentication:

<CodeBlocks>
```json title="Assistant Configuration with Custom Headers"
Expand Down
Loading
Loading