> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

import { YoutubeEmbed } from "../../../components/YoutubeEmbed";

### Eleven Realtime

Eleven Realtime is a new family of models for ElevenAgents voice agents, rolling out gradually across workspaces. Each one is a complete voice agent configuration. You pick one model, and ElevenLabs handles the LLM, Speech to Text and Text to Speech settings behind it. Your agent's system prompt, voice, tools and knowledge base work the same as before.

There are two to choose from. Eleven Realtime v1 Mini (`eleven_realtime_v1_mini`) is the default, and it's the fastest and cheapest. Eleven Realtime v1 Max (`eleven_realtime_v1_max`) reasons before it answers, so use it when your agent has complex instructions or multi-step tool calls.

If you've already built on OpenAI's Realtime API, you don't need to rewrite your client. The events and the WebSocket transport are the same, so you change the endpoint and the session configuration. Your backend calls [Create realtime client secret](/docs/api-reference/conversations/create-client-secret) to get a short-lived secret, and the browser uses it to connect directly.

<YoutubeEmbed id="M36FyDpvCWk" />

<CardGroup cols={3}>
  <Card
    title="Realtime models"
    icon="duotone waveform-lines"
    href="/docs/eleven-agents/customization/realtime-models"
  >
    Choose a Realtime model and configure an agent's voice mode.
  </Card>
  <Card
    title="OpenAI Realtime API compatibility"
    icon="duotone plug"
    href="/docs/eleven-agents/guides/openai-realtime-compatibility"
  >
    Connect an existing OpenAI Realtime client to ElevenLabs.
  </Card>
  <Card
    title="Create realtime client secret"
    icon="duotone code"
    href="/docs/api-reference/conversations/create-client-secret"
  >
    Review the request and response for minting client secrets.
  </Card>
</CardGroup>

### Realtime Translation

Realtime Translation turns speech in one language into speech in another while the speaker is still talking. It's a [WebSocket API](/docs/api-reference/realtime-translation/v-1-translation-realtime), available now for enterprise workspaces.

You open a connection with a `target_language` and a `voice_id`, then stream audio in. You get translated speech back in that voice. You don't have to say which language the speaker is using, because it's detected automatically, but you can set `source_language` if you know it. Along the way, the server also sends live transcripts of the original speech and the translated text, for example to show captions.

`eagerness` controls the tradeoff between speed and quality. `high` starts translating soonest, and `low` waits for more of the sentence. The translated voice uses Eleven v4 Turbo by default, and you can switch to `eleven_v3` or `eleven_flash_v2_5` with `tts_model_id`. For sensitive conversations, set `enable_zrm=true` to use [Zero Retention Mode](/docs/eleven-api/resources/zero-retention-mode).

<YoutubeEmbed id="sB15uXTYHvA" />

<CardGroup cols={3}>
  <Card
    title="Realtime Translation WebSocket"
    icon="duotone language"
    href="/docs/api-reference/realtime-translation/v-1-translation-realtime"
  >
    Review the connection parameters and message types.
  </Card>
  <Card title="Models" icon="duotone microphone-lines" href="/docs/overview/models">
    Compare the TTS models available for translated speech.
  </Card>
  <Card
    title="Zero Retention Mode"
    icon="duotone shield-check"
    href="/docs/eleven-api/resources/zero-retention-mode"
  >
    Keep transcripts and translations out of logs and history.
  </Card>
</CardGroup>

### Video to Music

Video to Music writes a soundtrack for your video. The [Video to music](/docs/api-reference/music/video-to-music) API is now available: you upload a video and get back music that fits it, without writing a music prompt from scratch. Use it to score product videos, ads and social clips.

You can send up to 10 video files (200 MB combined). They're joined in order and scored as one video. To steer the result, add a text `description` and up to 10 style `tags`.

Three options are worth knowing. `use_audio_as_reference` takes the genre, BPM, instruments and mood from the video's own audio. `add_sfx` adds sound effects that match the video. `separate_tracks` returns the music and the sound effects as separate files in a ZIP, so you can mix them yourself.

<YoutubeEmbed id="dAfDxcJxkBc" />

<CardGroup cols={2}>
  <Card
    title="Video to music API reference"
    icon="duotone code"
    href="/docs/api-reference/music/video-to-music"
  >
    Review the request parameters and response format.
  </Card>
  <Card title="Music overview" icon="duotone music" href="/docs/overview/capabilities/music">
    Learn what Eleven Music can generate and how it can be used.
  </Card>
</CardGroup>

### ElevenAgents

- **Alerts**: [Alerts](/docs/eleven-agents/operate/alerts) notify a workspace when agent error rates exceed a threshold or rise sharply above their recent baseline. Monitors cover conversation failures, tool failures, webhook errors, guardrail triggers, call initiation errors and evaluation success scores, and run with default thresholds without any setup. Agent-level thresholds and notifiers can be set through `platform_settings.alerting` on [Update agent](/docs/api-reference/agents/update). Notifications can be delivered as webhooks, to Slack or to PagerDuty.
- **Guardrails generally available**: [Guardrails](/docs/eleven-agents/best-practices/guardrails) are no longer in alpha.
- **Workspace environments**: Environments for [environment variables](/docs/eleven-agents/integrate/environment-variables) can now be managed through the API with [List environments](/docs/api-reference/environments/list), [Create environment](/docs/api-reference/environments/create) and [Delete environment](/docs/api-reference/environments/delete). A variable without a value for an environment falls back to its `production` value. Deleting an environment removes its values from all variables, and `production` cannot be deleted.
- **Answering machine detection actions**: Twilio answering machine detection settings on [Outbound call](/docs/api-reference/twilio/outbound-call) and [Submit batch call](/docs/api-reference/batch-calling/create) accept `actions`, a list of rules that pair an `action` (`hang_up`) with the `answered_by` verdicts that trigger it, such as `machine_start` or `fax`. Verdicts without a rule leave the call running.
- **New LLMs**: Agents can use `gemini-4-argon`, `claude-opus-4-6` and the ElevenLabs-hosted `nemotron-35-super-vl-nvfp4`. See [Models](/docs/eleven-agents/customization/llm).
- **Authored-only workflow reads**: [Get agent](/docs/api-reference/agents/get) and [Update agent](/docs/api-reference/agents/update) accept `include_procedure_generated_workflow_elements`. Set it to `false` to receive only the workflow nodes and edges you authored, excluding the ones compiled from [structured procedures](/docs/eleven-agents/customization/procedures/structured-procedures). Defaults to `true`, so existing callers are unchanged.
- **Branch rebasing from any branch**: [Rebase branch](/docs/api-reference/agents/branches/rebase) and [Preview rebase](/docs/api-reference/agents/branches/preview-rebase) accept an optional `source_branch_id` to pull changes from a branch other than main.
- **Delete agents used as subagents**: [Delete agent](/docs/api-reference/agents/delete) accepts `force`. When `true`, the agent is deleted even if other agents use it as a subagent, and it is removed from those agents and their branches.
- **Sort agents by last update**: [List agents](/docs/api-reference/agents/list) accepts `sort_by=updated_at`, and each agent summary includes `updated_at_unix_secs`, the last time the main branch or agent-level settings changed.
- **Google Calendar event updates**: The [Google Calendar integration](/docs/eleven-agents/customization/integrations/google_calendar) adds `google_calendar_update_event` and `google_calendar_delete_event` tools. Both are privileged tools that can change or cancel any event on the connected calendar.

### Music and Sound Effects

- **Zero Retention Mode**: Music generation, composition plan, stem separation and video to music endpoints, plus [Sound Effects](/docs/api-reference/text-to-sound-effects/convert), accept `enable_logging=false` to use [Zero Retention Mode](/docs/eleven-api/resources/zero-retention-mode). Zero Retention Mode is available to enterprise customers. Music requests that set `store_for_inpainting=true` are rejected in this mode.
- **WAV output for sound effects**: [Sound Effects](/docs/api-reference/text-to-sound-effects/convert) accepts `wav_8000`, `wav_16000`, `wav_22050`, `wav_24000`, `wav_32000`, `wav_44100` and `wav_48000` output formats.

### Speech Engine

- **40-minute conversations**: [Speech Engine](/docs/overview/capabilities/speech-engine) supports conversations of up to 40 minutes. The default limit remains 10 minutes. Raise `conversation.max_duration_seconds` to allow longer conversations.
- **Sort by last update**: [List Speech Engines](/docs/api-reference/speech-engine/list) accepts `sort_by=updated_at`, and each summary includes `updated_at_unix_secs`.

### Dubbing

- **Subtitles for dubbed languages**: Dubbing project language outputs (`GET /v1/dubbing/project/{project_id}/language/{language_id}`) include `subtitles`, a signed URL to the translated lines as WebVTT subtitles timed to the source speech. The URL expires one hour after it is issued.

### Voices

- **Resubmittable voice reviews**: Voice sharing `review_status` adds `declined_resubmittable` for declined voices that can be resubmitted for review.

### Workspaces

- **Disable service account API keys**: [Disable service account API key](/docs/api-reference/service-accounts/api-keys/disable) disables a service account API key without changing its other settings. It remains available after a workspace downgrades from a plan that includes service accounts.
- **Group concurrency limits**: [List workspace groups](/docs/api-reference/workspace/groups/list) and [List service accounts](/docs/api-reference/service-accounts/list) return `group_concurrency_limit`, `group_dubbing_concurrency_limit` and `group_music_concurrency_limit` for each group, and group permissions add `all_resources_access`.

### SDK releases

#### JavaScript SDK

- [v2.74.0](https://github.com/elevenlabs/elevenlabs-js/releases/tag/v2.74.0) - Added `client.conversationalAi.realtime.createClientSecret` for the Realtime API, with the `RealtimeModel` and OpenAI-compatible session configuration types, and an `environments` client with `list`, `create` and `delete`. Also adds `force` on agent deletion, `sourceBranchId` on branch rebase and rebase preview, `includeProcedureGeneratedWorkflowElements` on agent reads, `enableLogging` on Music and Sound Effects methods, WAV output formats for Sound Effects, service account API key `disable`, and Twilio answering machine detection `actions`.
- [v2.73.0](https://github.com/elevenlabs/elevenlabs-js/releases/tag/v2.73.0) - Added `createAndWait` helpers for Flows image, video and Text to Speech generations and template runs (`client.flows.templates.runs.createAndWait`). They create the request and poll until it completes or fails, pacing requests with the server's `Retry-After` header. A `failed` result is returned rather than thrown, and `waitTimeoutInSeconds` throws `FlowsWaitTimeoutError` if the work is not finished in time. The regenerated client adds the Video to music `add_sfx`, `separate_tracks` and `use_audio_as_reference` options.

#### Python SDK

- [v2.74.1](https://github.com/elevenlabs/elevenlabs-python/releases/tag/v2.74.1) - `music.compose_detailed` now accepts and forwards `enable_logging`, which the custom wrapper previously dropped, so Zero Retention Mode works with this method.
- [v2.74.0](https://github.com/elevenlabs/elevenlabs-python/releases/tag/v2.74.0) - Added `client.conversational_ai.realtime.create_client_secret` for the Realtime API and an `environments` client, with the same regenerated API changes as JavaScript SDK v2.74.0.
- [v2.73.0](https://github.com/elevenlabs/elevenlabs-python/releases/tag/v2.73.0) - Added `create_and_wait` helpers for Flows image, video and Text to Speech generations and template runs, for both sync and async clients, with `wait_timeout_in_seconds` and `min_poll_interval_in_seconds` options and a `FlowsWaitTimeoutError` exported from `elevenlabs.flows_custom`. Type checkers such as pyright now resolve `client.webhooks.construct_event`, `client.speech_to_text.realtime`, `client.text_to_speech.convert_realtime` and the custom Music methods. Includes the same regenerated API changes as the JavaScript SDK.
- [v2.73.1](https://github.com/elevenlabs/elevenlabs-python/releases/tag/v2.73.1) - Fixed the test suite on Python 3.13 and later, and added Python 3.13 and 3.14 to CI.

#### ElevenLabs CLI

- [v1.7.0](https://github.com/elevenlabs/cli/releases/tag/v1.7.0) - Regenerated API commands, adding environments, realtime client secrets and service account API key disabling.
- [v1.6.0](https://github.com/elevenlabs/cli/releases/tag/v1.6.0) - Added `create-and-wait` commands for `flows image`, `flows video`, `flows text-to-speech` and `flows templates runs`. Each command returns a finished result, with `--wait-timeout` and `--min-poll-interval` options.
- [v1.5.1](https://github.com/elevenlabs/cli/releases/tag/v1.5.1), [v1.5.2](https://github.com/elevenlabs/cli/releases/tag/v1.5.2), [v1.5.3](https://github.com/elevenlabs/cli/releases/tag/v1.5.3) and [v1.6.1](https://github.com/elevenlabs/cli/releases/tag/v1.6.1) - Bug fixes for onboarding, including Windows support.

#### Packages

- [@elevenlabs/client@1.28.0](https://github.com/elevenlabs/packages/releases/tag/%40elevenlabs%2Fclient%401.28.0) - Added the experimental `persistentSession` option for resumable text conversations over WebSocket, and the `onConversationHistory` callback for the transcript the server replays on resume. WebSocket sessions now also emit `onConversationMetadata`.
- [@elevenlabs/react@1.18.0](https://github.com/elevenlabs/packages/releases/tag/%40elevenlabs%2Freact%401.18.0) - Forwards the experimental `onConversationHistory` callback to `@elevenlabs/client`.
- [@elevenlabs/types@0.25.0](https://github.com/elevenlabs/packages/releases/tag/%40elevenlabs%2Ftypes%400.25.0) - Added the `conversation_history` server event and the `persistent_session_token` field on `conversation_initiation_metadata`.
- [@elevenlabs/react-native@1.2.30](https://github.com/elevenlabs/packages/releases/tag/%40elevenlabs%2Freact-native%401.2.30) - Updated to `@elevenlabs/client@1.28.0` and `@elevenlabs/react@1.18.0`.
- [@elevenlabs/convai-widget-core@0.20.0](https://github.com/elevenlabs/packages/releases/tag/%40elevenlabs%2Fconvai-widget-core%400.20.0) and [@elevenlabs/convai-widget-embed@0.20.0](https://github.com/elevenlabs/packages/releases/tag/%40elevenlabs%2Fconvai-widget-embed%400.20.0) - Added the `persistent-session` attribute. Text conversations survive a dropped connection or a page reload: the widget keeps the transcript, reopens the chat, renders the history replayed by the server and resumes the conversation. **End chat** discards the stored conversation. Workspaces without persistent sessions fall back to a standard conversation.
- [@elevenlabs/convai-widget-core@0.19.1](https://github.com/elevenlabs/packages/releases/tag/%40elevenlabs%2Fconvai-widget-core%400.19.1) and [@elevenlabs/convai-widget-embed@0.19.1](https://github.com/elevenlabs/packages/releases/tag/%40elevenlabs%2Fconvai-widget-embed%400.19.1) - First message quick replies are shown below the first message in voice calls.

### API

<Accordion title="View API changes">

## New endpoints

### ElevenAgents

- [Create realtime client secret](/docs/api-reference/conversations/create-client-secret) - `POST /v1/convai/realtime/client_secrets` - Create an ephemeral client secret for browser-based Realtime API sessions. Accepts an optional `session` (OpenAI-compatible session configuration with `model` of `eleven_realtime_v1_mini` (default) or `eleven_realtime_v1_max`, `instructions`, `audio`, `tools`, `turn_detection` and `max_duration_seconds` from 60 to 7,200, default 600) and optional `expires_after` with required `seconds` (integer). Returns `value` (string), `expires_at` (integer) and the echoed `session`.

- [List environments](/docs/api-reference/environments/list) - `GET /v1/convai/environments` - List the workspace environments, including `production`. Each environment has `name`, nullable `updated_at_unix_secs` and nullable `created_by_user_id`.
- [Create environment](/docs/api-reference/environments/create) - `POST /v1/convai/environments` - Create an environment with a required, unique `name` (string). Returns `409` if the name is taken.
- [Delete environment](/docs/api-reference/environments/delete) - `DELETE /v1/convai/environments/{environment}` - Delete an environment and remove its values from all environment variables. Returns `204`.

### Workspaces

- [Disable service account API key](/docs/api-reference/service-accounts/api-keys/disable) - `POST /v1/service-accounts/{service_account_user_id}/api-keys/{api_key_id}/disable` - Disable a service account API key without changing its other settings.

## Updated endpoints

### ElevenAgents

- [Get agent](/docs/api-reference/agents/get), [Update agent](/docs/api-reference/agents/update), [Preview rebase](/docs/api-reference/agents/branches/preview-rebase) and [Preview merge](/docs/api-reference/agents/branches/preview-merge)
  - Added optional `include_procedure_generated_workflow_elements` (boolean, default `true`). When `false`, the returned workflow contains only authored nodes and edges, without those generated from structured procedures.
- [Create agent](/docs/api-reference/agents/create), [Get agent](/docs/api-reference/agents/get) and [Update agent](/docs/api-reference/agents/update)
  - The `llm` enum adds `gemini-4-argon`, `claude-opus-4-6` and `nemotron-35-super-vl-nvfp4`.
  - TTS configuration `effects` removes the deprecated `seed` field.
- [Delete agent](/docs/api-reference/agents/delete) - Added optional `force` (boolean, default `false`).
- [List agents](/docs/api-reference/agents/list) - `sort_by` adds `updated_at`. Agent summaries add required `updated_at_unix_secs` (integer).
- [Rebase branch](/docs/api-reference/agents/branches/rebase) and [Preview rebase](/docs/api-reference/agents/branches/preview-rebase) - Added optional `source_branch_id` (string). Defaults to the agent's main branch.
- [Outbound call](/docs/api-reference/twilio/outbound-call), [Submit batch call](/docs/api-reference/batch-calling/create) and [Get batch call](/docs/api-reference/batch-calling/get)
  - Twilio machine detection configuration adds `actions`, an array of rules with required `action` (`hang_up`) and required `answered_by` (array of `human`, `fax`, `unknown`, `machine_start`, `machine_end_beep`, `machine_end_silence` or `machine_end_other`). Each action can appear in at most one rule.
- [Get conversation details](/docs/api-reference/conversations/get)
  - Transcript tool calls add nullable `tool_id` (string). It is not set for tools without an ID, such as system tools.
  - Turn metrics add nullable `voice_id` (string).
  - Tool results add nullable `to_agent` and `to_node` (string).
  - WhatsApp conversation info adds nullable `recipient` with nullable `phone` and `bsuid` (string), and nullable `call_permission_request` with required `state` (`blocked`, `sent`, `accepted` or `declined`) and nullable `requested_at_unix` (integer).
  - The platform charge category enum adds `v3_addon`, `v4_addon` and `rag_addon`.
- [Get ticket](/docs/api-reference/triage-tickets/get), [List tickets](/docs/api-reference/triage-tickets/list) and [List workspace tickets](/docs/api-reference/triage-tickets/list-for-workspace)
  - Ticket responses add required `status_changes`, an array of objects with `status`, nullable `changed_by_user_id` (string) and `changed_at_unix_secs` (integer).

### Text to Speech and Text to Dialogue

- [Create speech](/docs/api-reference/text-to-speech/convert), [Stream speech](/docs/api-reference/text-to-speech/stream), [Create dialogue](/docs/api-reference/text-to-dialogue/convert) and [Stream dialogue](/docs/api-reference/text-to-dialogue/stream), including their timestamp variants - `use_pvc_as_ivc` is now nullable and no longer declares a default of `false`.

### Music

- [Compose music](/docs/api-reference/music/compose), [Compose detailed](/docs/api-reference/music/compose-detailed), [Stream music](/docs/api-reference/music/stream), [Compose detailed stream](/docs/api-reference/music/compose-detailed-stream), [Separate stems](/docs/api-reference/music/separate-stems), [Video to music](/docs/api-reference/music/video-to-music) and `POST /v1/music/plan`
  - Added optional `enable_logging` query parameter (boolean, default `true`). Set it to `false` for Zero Retention Mode.
- [Video to music](/docs/api-reference/music/video-to-music) - Added optional `add_sfx`, `separate_tracks` and `use_audio_as_reference` (boolean, default `false`).

### Sound Effects

- [Create sound effect](/docs/api-reference/text-to-sound-effects/convert)
  - Added optional `enable_logging` query parameter (boolean, default `true`).
  - `output_format` adds `wav_8000`, `wav_16000`, `wav_22050`, `wav_24000`, `wav_32000`, `wav_44100` and `wav_48000`.

### Speech Engine

- [List Speech Engines](/docs/api-reference/speech-engine/list) - `sort_by` adds `updated_at`. Summaries add required `updated_at_unix_secs` (integer).

### Speech to Text

- [Create transcript](/docs/api-reference/speech-to-text/convert) and [Get transcript](/docs/api-reference/speech-to-text/get) - Edited transcripts add required, read-only `edited_text` (string), matching `text` and the `edited_text` field of the realtime `edited_transcript` event.

### Dubbing

- `GET /v1/dubbing/project/{project_id}/language` and `GET /v1/dubbing/project/{project_id}/language/{language_id}` - Language outputs add nullable `subtitles` (string, signed URL).

### Voices

- [Get voice](/docs/api-reference/voices/get), [List voices](/docs/api-reference/voices/search) and [Get voices](/docs/api-reference/voices/get-all) - Voice sharing `review_status` adds `declined_resubmittable`.

### Workspaces

- [List workspace groups](/docs/api-reference/workspace/groups/list) and [List service accounts](/docs/api-reference/service-accounts/list)
  - Groups add nullable `group_concurrency_limit`, `group_dubbing_concurrency_limit` and `group_music_concurrency_limit` (integer or `unlimited`).
  - Group permissions add `all_resources_access`.

</Accordion>