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.
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.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.total_count field, making it easier to implement pagination and display result counts.multimodal_message WebSocket event type in ElevenAgents real-time conversations. Includes Fern regeneration for the latest API schema updates.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.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
You can read more about the v1 release and its improvements on our developer blog.
@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.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>.conversation.input.analyser.getByteFrequencyData(data) with conversation.getInputByteFrequencyData().conversation.input.setMuted(v) with conversation.setMicMuted(v).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 — Breaking 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.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.useConversationClientTool(name, handler) hook for registering client tools that agents can invoke, with automatic cleanup on unmount.isMuted and onMutedChange props on ConversationProvider.@elevenlabs/react-native@1.0.0 — Breaking changes:
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.).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.
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.
file_input field (FileInputConfig, optional) to ConversationConfig, enabling file upload support (images, PDFs) in chat conversations when the LLM supports multimodal inputmax_conversation_duration_message field (string, optional) to agent configuration — the agent sends this message when the session time limit is reachedtool_mock_config field (object, optional) — a map of tool names to ToolResponseMockConfig entries for controlling tool mocking behavior during simulationsort_by query parameter (string, optional) — accepts search_score (default) or created_atbranch_id field (string, optional) to target a specific agent branchenvironment field (string, optional) to specify the target environmentTwilio outbound call, SIP trunk outbound call
branch_id and environment optional fieldssource_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 uploadtotal_count field (integer) to the response modelenabled_spooled_file parameter from the multipart form data request body