POST
POST /v1/convai/realtime/client_secrets — ElevenLabs API
ElevenLabs APICreate Realtime Client Secret
- Base URL
- https://api.elevenlabs.io
- Auth
- xi-api-key: <ELEVENLABS_API_KEY>
- Last verified
- 2026-10-20 · upstream hash matched
Actions Try in browser→
Agents: curl -H "Accept: text/markdown" this URL
→ 186 tokens · Vary: Accept
→ 186 tokens · Vary: Accept
Critical gotchas
Authentication uses the non-standard xi-api-key header, not Authorization: Bearer. Sending a Bearer token returns HTTP 401.
Text-to-speech responses are raw binary audio, not JSON. Write the body to a file (--output speech.mp3) rather than parsing it.
cURL
curl -X POST 'https://api.elevenlabs.io/v1/convai/realtime/client_secrets' \ -H "xi-api-key: $ELEVENLABS_API_KEY" \ -H 'Content-Type: application/json' \ -d '{ "session": { "type": "realtime", "model": "eleven_realtime_v1_mini", "instructions": "", "output_modalities": [ "example-output-modalities" ], "audio": { "input": { "format": { "type": "audio/pcm", "rate": 24000 }, "transcription": { "language": "example-language" }, "turn_detection": { "type": "semantic_vad", "eagerness": "medium", "create_response": true, "interrupt_response": true, "threshold": 0, "prefix_padding_ms": 0, "silence_duration_ms": 0, "turn_timeout": -1 }, "pacing": "realtime" }, "output": { "format": { "type": "audio/pcm" }, "voice": "brian" } }, "tools": [ { "type": "function", "name": "example-name", "description": "", "parameters": {} } ], "tool_choice": "auto", "temperature": 0.7, "max_response_output_tokens": 4096, "max_duration_seconds": 600, "turn_detection": "__unset__", "tracing": "example-tracing", "include": [ "example-include" ], "parallel_tool_calls": true, "reasoning": {}, "truncation": "example-truncation", "prompt": {} }, "expires_after": { "anchor": "created_at", "seconds": 0 }}'
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| session | body | object | No | Request body field session. |
| expires_after | body | object | No | Request body field expires_after. |
Response 200 OK
{
"value": "string",
"expires_at": 0,
"session": {
"type": "realtime",
"model": "eleven_realtime_v1_mini",
"instructions": "",
"output_modalities": [
"string"
],
"audio": {
"input": {
"format": {
"type": "audio/pcm",
"rate": 24000
},
"transcription": {
"language": "string"
},
"turn_detection": {
"type": "semantic_vad",
"eagerness": "medium",
"create_response": true,
"interrupt_response": true,
"threshold": 0,
"prefix_padding_ms": 0,
"silence_duration_ms": 0,
"turn_timeout": -1
},
"pacing": "realtime"
},
"output": {
"format": {
"type": "audio/pcm"
},
"voice": "brian"
}
},
"tools": [
{
"type": "function",
"name": "string",
"description": "",
"parameters": {}
}
],
"tool_choice": "auto",
"temperature": 0.7,
"max_response_output_tokens": 4096,
"max_duration_seconds": 600,
"tracing": "string"
}
} Get a free ElevenLabs API key → sponsored Affiliate link - we may earn a commission, at no extra cost to you.