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

### Developer Resources

- **ElevenLabs Devs YouTube channel**: A new developer-focused [YouTube channel](https://www.youtube.com/@elevenlabsdevs) is now live, featuring tutorials, API walkthroughs, and technical deep dives to help you get the most out of the ElevenLabs platform.

### ElevenAgents

- **Workflow starting node override**: Conversations can now be started at a specific workflow node by passing `starting_workflow_node_id` in the [conversation initiation client data](/docs/api-reference/agents/create). This is gated by an opt-in `enable_starting_workflow_node_id_from_client` field in the agent's platform override settings. When enabled, clients can specify which node to begin a conversation at, which is useful for agent memory and longer-term WebSocket use cases. If the specified node does not exist, the conversation falls back to the default entry point.

- **Post-call analysis LLM configuration**: Agent platform settings now include an `analysis_llm` field (default: `gemini-2.5-flash`) that sets the default LLM for post-call analysis, including evaluation criteria and data collection. Individual data collection properties can override this default with a per-item `llm` field via the new `AnalysisProperty` schema, giving fine-grained control over which model processes each analysis item.

- **New LLM options**: Added `gpt-5.4` to the list of available LLM providers for agent configuration. Added `xhigh` to the `LLMReasoningEffort` enum for extended reasoning on supported models.

- **Null literal in workflow expressions**: Workflow conditional expressions now support null comparisons via the new `ASTNullNode` type, enabling branches like "if variable is null" in workflow logic.

- **Get secret by ID**: A new [get secret](/docs/api-reference/workspace/secrets/get) endpoint (`GET /v1/convai/secrets/{secret_id}`) retrieves a single workspace secret by its ID. The [list secrets](/docs/api-reference/workspace/secrets/list) endpoint also now accepts a `search` query parameter to filter secrets by name prefix.

- **Searchable phone numbers in batch calling**: The batch calling form in the dashboard now includes a searchable phone number selector, making it easier to find the right outbound number when configuring batch calls.

### Speech to Text

- **Speaker role detection**: The [convert speech to text](/docs/api-reference/speech-to-text/convert) endpoint now accepts a `detect_speaker_roles` parameter (boolean, default `false`). When enabled alongside `diarize=true`, speaker labels are returned as `agent` and `customer` instead of `speaker_0`, `speaker_1`. This cannot be used with `use_multi_channel=true`. Usage incurs an additional 10% surcharge on the base transcription cost.

### Text to Dialogue

- **Input character limit guidance**: The [text to dialogue](/docs/api-reference/text-to-dialogue/convert) endpoints now document a recommended limit of 2,000 characters across all `inputs[].text` values per request. Longer requests may terminate early in streaming responses or return a validation error.

### Workspaces

- **Usage analytics endpoint**: A new [usage by product over time](/docs/api-reference/workspace/usage/get-usage-by-product-over-time) endpoint (`POST /v1/workspace/analytics/query/usage-by-product-over-time`) returns credit usage broken down by product type over time. Results are returned in a tabular structure with configurable `interval_seconds`, `group_by` dimensions, and `filters`. The previous `GET /v1/usage/character-stats` endpoint has been deprecated in favor of this new endpoint.

### SDK Releases

#### Packages

- [@elevenlabs/client@1.2.1](https://github.com/elevenlabs/packages/releases/tag/@elevenlabs/client@1.2.1) - Fixed conversation startup readiness so `onConnect` runs after the session is marked connected and React has synchronized `conversationRef`. Also exposed and forwarded `onConversationCreated` for consumers that need the created `Conversation` instance before `onConnect`.

- [@elevenlabs/react@1.1.1](https://github.com/elevenlabs/packages/releases/tag/@elevenlabs/react@1.1.1) - Fixed conversation startup readiness and exposed `onConversationCreated` callback, matching the `@elevenlabs/client@1.2.1` changes.

- [@elevenlabs/react-native@1.1.1](https://github.com/elevenlabs/packages/releases/tag/@elevenlabs/react-native@1.1.1), [@elevenlabs/convai-widget-core@0.11.4](https://github.com/elevenlabs/packages/releases/tag/@elevenlabs/convai-widget-core@0.11.4), [@elevenlabs/convai-widget-embed@0.11.4](https://github.com/elevenlabs/packages/releases/tag/@elevenlabs/convai-widget-embed@0.11.4) - Updated to `@elevenlabs/client@1.2.1` with conversation startup fixes.

### API

<Accordion title="View API changes">

## New Endpoints

- [Get secret](/docs/api-reference/workspace/secrets/get) - `GET /v1/convai/secrets/{secret_id}`
- `POST /v1/workspace/analytics/query/usage-by-product-over-time` - Get workspace credit usage by product over time

## Deprecated Endpoints

- `GET /v1/usage/character-stats` - Deprecated in favor of `POST /v1/workspace/analytics/query/usage-by-product-over-time`
- All dubbing resource editing endpoints (`POST /v1/dubbing/resource/{dubbing_id}/language`, `POST /v1/dubbing/resource/{dubbing_id}/speaker/{speaker_id}/segment`, `PATCH /v1/dubbing/resource/{dubbing_id}/segment/{segment_id}/{language}`, and others) are now deprecated

## Updated Endpoints

### ElevenAgents

- [Create agent](/docs/api-reference/agents/create), [Get agent](/docs/api-reference/agents/get), [Update agent](/docs/api-reference/agents/update)

  - Added `analysis_llm` field (LLM enum, default: `gemini-2.5-flash`) to `AgentPlatformSettings` for configuring the default post-call analysis model
  - Data collection properties now use the `AnalysisProperty` schema with an optional per-item `llm` override field

- [Simulate conversation](/docs/api-reference/agents/simulate-conversation)

  - Added `starting_workflow_node_id` field (string, nullable) to conversation initiation client data
  - Added `enable_starting_workflow_node_id_from_client` field (boolean, default `false`) to `ConversationInitiationClientDataConfig`

- [Submit batch calling](/docs/api-reference/batch-calling/create)

  - Added `external_link` field (string, nullable) to batch call records

- [List secrets](/docs/api-reference/workspace/secrets/list)

  - Added optional `search` query parameter (string) for filtering secrets by name prefix

- `LLM` enum

  - Added `gpt-5.4`, `gpt-5.4-2026-03-05`

- `LLMReasoningEffort` enum

  - Added `xhigh`

- Workflow expressions (`ASTNode`)

  - Added `null_literal` discriminator value and `ASTNullNode` schema for null comparisons

- Array tool parameters (`ArrayJsonSchemaProperty`)

  - Added `dynamic_variable` field (string, optional) for populating arrays from dynamic variables at runtime
  - Added `constant_value` field (array, nullable) for setting constant array values
  - `items` field is no longer required (has a default schema)

- MCP tool config overrides

  - Response now uses `MCPToolConfigOverride-Output` schema (input/output split)

### Speech to Text

- [Convert speech to text](/docs/api-reference/speech-to-text/convert)

  - Added `detect_speaker_roles` field (boolean, default `false`) for agent/customer speaker role detection

### Text to Dialogue

- [Convert text to dialogue](/docs/api-reference/text-to-dialogue/convert), [Stream text to dialogue](/docs/api-reference/text-to-dialogue/stream)

  - Updated `inputs` description with 2,000 character per-request recommendation
  - Removed `avatar_context` field from request body

### Text to Speech

- Quality preset fields on TTS and dialogue endpoints now reference the `QualityPresetType` enum schema. The `highest` value has been removed from dialogue quality presets; use `ultra` instead.

### Other

- `AudioNativeResponse` - Removed `transcription` field from response
- `UserResponseModel` - Backward compatible schema update

</Accordion>