Get Speech Engine signed URL
/el/v1/convai/conversation/get-signed-urlReturns a short-lived, single-use WebSocket URL that a browser or mobile client can open without receiving your AllModels API key.
Tenant key (ElevenLabs SDK convention).
In: header
Query Parameters
Value in
- "0"
- "1"
- "true"
- "false"
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
const response = await fetch("https://api.allmodels.io/el/v1/convai/conversation/get-signed-url?agent_id=$SPEECH_ENGINE_ID&include_conversation_id=true", { headers: { Authorization: `Bearer ${process.env.ALLMODELS_API_KEY}` }});if (!response.ok) throw new Error(`AllModels request failed: ${response.status}`);console.log(await response.json());import osimport requestsresponse = requests.get( "https://api.allmodels.io/el/v1/convai/conversation/get-signed-url?agent_id=$SPEECH_ENGINE_ID&include_conversation_id=true", headers={"Authorization": f"Bearer {os.environ['ALLMODELS_API_KEY']}"}, timeout=30,)response.raise_for_status()print(response.json())curl "https://api.allmodels.io/el/v1/convai/conversation/get-signed-url?agent_id=$SPEECH_ENGINE_ID&include_conversation_id=true" \ -H "Authorization: Bearer $ALLMODELS_API_KEY"import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";const client = new ElevenLabsClient({ apiKey: process.env.ALLMODELS_API_KEY, baseUrl: "https://api.allmodels.io/el"});const { signedUrl, conversationId } = await client.conversationalAi.conversations.getSignedUrl({ agentId: "seng_01JZ8H4B1M4YDQ3Z4MXN8D0Q1A", includeConversationId: true });console.log({ signedUrl, conversationId });import osfrom elevenlabs.client import ElevenLabsclient = ElevenLabs( api_key=os.environ["ALLMODELS_API_KEY"], base_url="https://api.allmodels.io/el",)grant = client.conversational_ai.conversations.get_signed_url( agent_id="seng_01JZ8H4B1M4YDQ3Z4MXN8D0Q1A", include_conversation_id=True,)print(grant.signed_url){ "signed_url": "string", "conversation_id": "string"}{ "error": "missing_api_key"}{ "detail": { "message": "this organization has insufficient prepaid balance", "status": "insufficient_balance" }}{ "error": "tenant_disabled"}{ "detail": { "message": "string", "status": "string", "property1": null, "property2": null }}{ "detail": { "message": "string", "status": "string", "property1": null, "property2": null }}{ "detail": { "message": "string", "status": "string", "property1": null, "property2": null }}Delete Speech Engine DELETE
Deletes a Speech Engine so it can no longer issue new signed URLs.
Clone a voice (SDK add) POST
Clones a voice with ElevenLabs `voices.add()`. The returned `voice_id` is an AllModels voice ID and works as the `{voice_id}` path parameter on the `/el` text-to-speech endpoints. AllModels clones on ITS OWN providers, not on ElevenLabs: send `x-allmodels-provider` to choose one, or let AllModels pick the provider that needs nothing the SDK cannot send. Cloning is charged once, when the voice is created, and only clone voices you have the speaker's permission to use — sending this request is that attestation.
