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 and update agent 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 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 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 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 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 response now includes a total_count field, making it easier to implement pagination and display result counts.

SDK Releases

JavaScript SDK

  • 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 - Fern regeneration to match the April 1, 2026 API schema.

Python SDK

  • 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.

  • @elevenlabs/client@1.0.0Breaking 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<void> instead of Promise<Input> or Promise<Output>.
    • 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.0Breaking changes:

    • useConversation now requires a ConversationProvider ancestor. Wrap your component tree in <ConversationProvider> 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.0Breaking 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 - 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 - 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 - Added the guardrail_triggered WebSocket event and onGuardrailTriggered callback, consistent with @elevenlabs/client@0.16.0.

  • @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 - Added type definitions for tool response mocking in agent conversations.

  • @elevenlabs/react@1.0.1 - Updated to depend on @elevenlabs/client@1.1.0.

  • @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 - 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, Update agent

    • 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, Update test

    • 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

    • Added sort_by query parameter (string, optional) — accepts search_score (default) or created_at
  • Submit batch call

    • 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, SIP trunk outbound call

    • Conversation initiation client data now accepts branch_id and environment optional fields

Speech to Text

  • Convert speech to text

    • 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

Forced Alignment