> 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. ### ElevenAgents - **MCP tool scoping in agent workflows**: Agent workflow nodes can now restrict which MCP tools a sub-agent is permitted to call. When tool inheritance is disabled on a node, only the explicitly selected MCP tools are loaded for that sub-agent, giving teams precise control over tool access per workflow step. - **Conversation file uploads**: The [create agent](/docs/api-reference/agents/create) and [update agent](/docs/api-reference/agents/update) endpoints now support a `file_input` field on `ConversationConfig`. When enabled, end users can attach images or PDFs in chat (requires an LLM with multimodal input support). Configurable with `enabled` (boolean) and `max_files_per_conversation` (integer). - **Re-run conversation analysis**: New [run conversation analysis](/docs/api-reference/conversations/analysis/run-analysis) endpoint (`POST /v1/convai/conversations/{conversation_id}/analysis/run`) re-evaluates a completed conversation using the agent's current evaluation criteria and data collection settings, without needing a new call. - **Tool response mocking for tests**: Agent simulation tests and test suite invocations now support a `tool_mock_config` field to control how tool calls are handled during testing. Use `MockingStrategy` (`all`, `selected`, `none`) to choose which tools are mocked and `MockNoMatchBehavior` (`call_real_tool`, `raise_error`) to set the fallback when no mock matches. - **Text search sort order**: The [text search conversations](/docs/api-reference/conversations/messages/text-search) endpoint now accepts a `sort_by` query parameter with values `search_score` (default) or `created_at`, allowing you to control whether results are ordered by relevance or recency. - **mTLS auth connections**: Agent auth connections now support mutual TLS (`mtls`) as an `auth_type`, in addition to the existing options. New `CreateMTLSAuthRequest` and `MTLSAuthResponse` schemas are available for creating and retrieving mTLS-authenticated connections. - **Max duration message**: Added `max_conversation_duration_message` field to agent configuration. When set to a non-empty string, the agent will send this message to the user when the maximum conversation duration is reached. - **Branch and environment in conversation initiation**: Added `branch_id` and `environment` optional fields to the conversation initiation client data (`ConversationInitiationClientDataRequest`) and [submit batch call](/docs/api-reference/batch-calling/create) request body, enabling routing to specific agent branches and environments. ### Music - **Video to music**: New `POST /v1/music/video-to-music` endpoint generates background music from one or more video files. Videos are combined in sequence. Accepts optional `description` (up to 1,000 characters) and `tags` (up to 10 style tags such as `upbeat` or `cinematic`) to influence the generated track. ### Speech to Text - **Transcribe from URL**: The [convert speech to text](/docs/api-reference/speech-to-text/convert) endpoint now accepts a `source_url` parameter (string, optional) for transcribing audio or video from a hosted URL, including YouTube videos, TikTok videos, and other video hosting services. This can be used as an alternative to uploading a file directly. ### Voices - **Total count in shared voices list**: The [list shared voices](/docs/api-reference/voices/voice-library/get-shared) response now includes a `total_count` field, making it easier to implement pagination and display result counts. ### SDK Releases #### JavaScript SDK - [v2.41.0](https://github.com/elevenlabs/elevenlabs-js/releases/tag/v2.41.0) - Added support for the `multimodal_message` WebSocket event type in ElevenAgents real-time conversations. Includes Fern regeneration for the latest API schema updates. - [v2.41.1](https://github.com/elevenlabs/elevenlabs-js/releases/tag/v2.41.1) - Fern regeneration to match the April 1, 2026 API schema. #### Python SDK - [v2.41.0](https://github.com/elevenlabs/elevenlabs-python/releases/tag/v2.41.0) - Fixed `audio_interface` to be optional in text-only conversation mode, resolving a runtime error when starting a session without audio. Includes Fern regeneration for the latest API schema. #### Packages This release includes the new v1.0.0 of the client side Agent SDKs. It features major breaking changes to `@elevenlabs/client`, `@elevenlabs/react`, and `@elevenlabs/react-native`. Review the migration guidance below before upgrading. To help upgrade, we released a Skill to help your agents upgrade for you. Install it with ``` npx skills add elevenlabs/packages ``` You can read more about the v1 release and its improvements on our [developer blog](https://elevenlabs.io/blog/elevenagents-react-sdk-v1-0). - [@elevenlabs/client@1.0.0](https://github.com/elevenlabs/packages/releases/tag/@elevenlabs/client@1.0.0) — **Breaking changes:** - `Input` and `Output` classes are no longer exported. Use the `InputController` and `OutputController` interfaces from `@elevenlabs/client` instead. - `Conversation` is no longer a class — it is now a namespace object and a type alias for `TextConversation | VoiceConversation`. Remove any `instanceof Conversation` checks and subclasses. - The default `connectionType` is now inferred from the conversation mode: voice conversations use `"webrtc"` by default, and text-only conversations use `"websocket"`. To keep the previous behavior for voice, pass `connectionType: "websocket"` explicitly. - `VoiceConversation.wakeLock` is now private. Pass `useWakeLock: false` in session options to suppress wake lock management. - `changeInputDevice()` and `changeOutputDevice()` now return `Promise` instead of `Promise` or `Promise`. - Replace `conversation.input.analyser.getByteFrequencyData(data)` with `conversation.getInputByteFrequencyData()`. - Replace `conversation.input.setMuted(v)` with `conversation.setMicMuted(v)`. - Replace `conversation.output.gain.gain.value = v` with `conversation.setVolume({ volume: v })`. - `getInputVolume()`, `getOutputVolume()`, `getInputByteFrequencyData()`, and `getOutputByteFrequencyData()` now return `0` or an empty `Uint8Array` instead of throwing when no conversation is active. - [@elevenlabs/react@1.0.0](https://github.com/elevenlabs/packages/releases/tag/@elevenlabs/react@1.0.0) — **Breaking changes:** - `useConversation` now requires a `ConversationProvider` ancestor. Wrap your component tree in `` and move options to the provider or to the hook. - `DeviceFormatConfig` and `DeviceInputConfig` exports are removed. Use `FormatConfig` and `InputDeviceConfig` from `@elevenlabs/client` instead. - New granular hooks replace the monolithic `useConversation` for better render performance: `useConversationControls()`, `useConversationStatus()`, `useConversationInput()`, `useConversationMode()`, `useConversationFeedback()`, and `useRawConversation()`. Each hook subscribes only to the state it needs, preventing unnecessary re-renders. - New `useConversationClientTool(name, handler)` hook for registering client tools that agents can invoke, with automatic cleanup on unmount. - Added controlled mute support via `isMuted` and `onMutedChange` props on `ConversationProvider`. - [@elevenlabs/react-native@1.0.0](https://github.com/elevenlabs/packages/releases/tag/@elevenlabs/react-native@1.0.0) — **Breaking changes:** - The previous `ElevenLabsProvider` and `useConversation` API have been removed and replaced with re-exports from `@elevenlabs/react`. Replace `ElevenLabsProvider` with `ConversationProvider` and `useConversation` with the granular hooks (`useConversationControls`, `useConversationStatus`, etc.). - On React Native, the package now polyfills WebRTC globals, configures the native `AudioSession`, and registers a platform-specific voice session strategy on import. - [@elevenlabs/types@0.8.0](https://github.com/elevenlabs/packages/releases/tag/@elevenlabs/types@0.8.0) - Exports the `CALLBACK_KEYS` runtime array containing all keys from the `Callbacks` interface, used internally by the React SDK for callback composition. - [@elevenlabs/client@0.16.0](https://github.com/elevenlabs/packages/releases/tag/@elevenlabs/client@0.16.0) - Added the `guardrail_triggered` server-to-client WebSocket event and the `onGuardrailTriggered` callback, which fires when the server detects a guardrail violation during a conversation. Also added type discriminants to `TextConversation` and `VoiceConversation` to enable discriminated union narrowing, and added `startSession` overloads that narrow the return type based on the `textOnly` option. - [@elevenlabs/react-native@0.6.0](https://github.com/elevenlabs/packages/releases/tag/@elevenlabs/react-native@0.6.0) - Added the `guardrail_triggered` WebSocket event and `onGuardrailTriggered` callback, consistent with `@elevenlabs/client@0.16.0`. - [@elevenlabs/client@1.1.0](https://github.com/elevenlabs/packages/releases/tag/@elevenlabs/client@1.1.0) - Added client-side support for mocking tool responses in agent conversations, enabling test scenarios that simulate tool call outcomes without invoking real tools. - [@elevenlabs/types@0.9.0](https://github.com/elevenlabs/packages/releases/tag/@elevenlabs/types@0.9.0) - Added type definitions for tool response mocking in agent conversations. - [@elevenlabs/react@1.0.1](https://github.com/elevenlabs/packages/releases/tag/@elevenlabs/react@1.0.1) - Updated to depend on `@elevenlabs/client@1.1.0`. - [@elevenlabs/react-native@1.0.1](https://github.com/elevenlabs/packages/releases/tag/@elevenlabs/react-native@1.0.1) - Updated to depend on `@elevenlabs/client@1.1.0` and `@elevenlabs/react@1.0.1`. ### API ## New Endpoints - [Run conversation analysis](/docs/api-reference/conversations/analysis/run-analysis) - `POST /v1/convai/conversations/{conversation_id}/analysis/run` - Re-runs the analysis for a completed conversation using the agent's current evaluation criteria and data collection settings. - `POST /v1/music/video-to-music` - Generates background music from one or more video files supplied as multipart form data. ## Updated Endpoints ### ElevenAgents - [Create agent](/docs/api-reference/agents/create), [Update agent](/docs/api-reference/agents/update) - Added `file_input` field (`FileInputConfig`, optional) to `ConversationConfig`, enabling file upload support (images, PDFs) in chat conversations when the LLM supports multimodal input - Added `max_conversation_duration_message` field (string, optional) to agent configuration — the agent sends this message when the session time limit is reached - [Create test](/docs/api-reference/tests/create), [Update test](/docs/api-reference/tests/update) - Added `tool_mock_config` field (object, optional) — a map of tool names to `ToolResponseMockConfig` entries for controlling tool mocking behavior during simulation - [Text search conversations](/docs/api-reference/conversations/messages/text-search) - Added `sort_by` query parameter (string, optional) — accepts `search_score` (default) or `created_at` - [Submit batch call](/docs/api-reference/batch-calling/create) - Added `branch_id` field (string, optional) to target a specific agent branch - Added `environment` field (string, optional) to specify the target environment - [Twilio outbound call](/docs/api-reference/twilio/outbound-call), [SIP trunk outbound call](/docs/api-reference/sip-trunk/outbound-call) - Conversation initiation client data now accepts `branch_id` and `environment` optional fields ### Speech to Text - [Convert speech to text](/docs/api-reference/speech-to-text/convert) - Added `source_url` parameter (string, optional) — accepts a URL to an audio or video file, YouTube video, TikTok video, or other hosted media as an alternative to a file upload ### Voices - [List shared voices](/docs/api-reference/voices/voice-library/get-shared) - Added `total_count` field (integer) to the response model ### Forced Alignment - [Create forced alignment](/docs/api-reference/forced-alignment/create) - Removed `enabled_spooled_file` parameter from the multipart form data request body > ElevenLabs provides APIs and SDKs for text to speech, voice cloning, speech to text, sound effects, voice isolator, voice changer, and conversational AI agents. Build voice-enabled applications with lifelike audio generation.