# Release notes (/en/ai/release-notes)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

This document tracks notable changes and improvements to the Conversational AI Engine.

## Releases [#releases]

### v2.9 [#v29]

Released on July 1, 2026.

#### New features [#new-features]

Included in this release:

* **Manual turn control**

  You can now explicitly control when a user's speech starts and ends by sending manual Start of Speech (SoS) and End of Speech (EoS) requests over Signaling (RTM), instead of relying on automatic detection. This supports scenarios with strict turn-boundary requirements, such as AI interviews, interactive quizzes, or push-to-talk. Set [`start_of_speech.mode`](/en/api-reference/api-ref/conversational-ai/join#properties-turn-detection-config-start-of-speech-mode) and [`end_of_speech.mode`](/en/api-reference/api-ref/conversational-ai/join#properties-turn-detection-config-end-of-speech-mode) to `manual` when starting the agent. For details, see [Manually control start and end of speech](/en/ai/best-practices/manual-turn-control).

* **Agent state notifications over RTM Message**

  You can now track agent state changes in real time using Signaling (RTM) Message events. The agent pushes `state.listening`, `state.thinking`, and `state.speaking` events as individual RTM messages, making it easier to record state change timestamps, process events sequentially, or consume state events alongside other RTM Message events. For details, see [Get agent state](/en/ai/best-practices/get-agent-state).

* **Pre-recorded greeting audio**

  You can now play a pre-recorded audio file as the agent's greeting instead of synthesizing it with TTS. Set [`properties.llm.greeting_audio_url`](/en/api-reference/api-ref/conversational-ai/join#properties-llm-greeting-audio-url) to the URL of an `mp3`, `wav`, or `pcm` file when starting the agent. If the audio fails to download, decode, or is in an unsupported format, the agent automatically falls back to TTS synthesis using `greeting_message`.

* **Managed mode**

  You can now use supported ASR, LLM, and TTS providers with Agora-managed credentials, without supplying your own API keys. Set [`credential_mode`](/en/api-reference/api-ref/conversational-ai/join#properties-asr-credential-mode) to `"managed"` within the `asr`, `llm`, or `tts` block when starting an agent. Managed mode replaces the deprecated `preset` parameter. For details, see [Use managed mode](/en/ai/build/custom-model-integration/managed-mode).

#### Improvements [#improvements]

This release includes the following enhancements.

* **Speech captured during an uninterruptible greeting**

  When [`properties.llm.greeting_configs.interruptable`](/en/api-reference/api-ref/conversational-ai/join#properties-llm-greeting-configs-interruptable) is set to `false`, the agent now silently collects the user's ASR results while the greeting plays. After the greeting ends, the system concatenates the collected speech segments into a single user message and sends it to the LLM for a unified response, instead of discarding speech that occurs during playback.

#### API changes [#api-changes]

This release introduces the following changes to the RESTful API.

* Changes to [**Start a conversational AI agent**](/en/api-reference/api-ref/conversational-ai/join)

  * **New parameters**

    * [`properties.llm.greeting_audio_url`](/en/api-reference/api-ref/conversational-ai/join#properties-llm-greeting-audio-url): The URL of a pre-recorded audio file (`mp3`, `wav`, or `pcm`) to play as the agent's greeting instead of synthesizing it with TTS.
    * [`properties.llm.greeting_configs.audio_download_timeout_ms`](/en/api-reference/api-ref/conversational-ai/join#properties-llm-greeting-configs-audio-download-timeout-ms): The timeout in milliseconds for downloading the greeting audio file. Defaults to `1000`.
    * [`properties.llm.greeting_configs.audio_pcm_sample_rate`](/en/api-reference/api-ref/conversational-ai/join#properties-llm-greeting-configs-audio-pcm-sample-rate): The sample rate in Hz of the greeting audio file when the format is PCM. Defaults to `16000`.
    * [`properties.asr.credential_mode`](/en/api-reference/api-ref/conversational-ai/join#properties-asr-credential-mode), [`properties.llm.credential_mode`](/en/api-reference/api-ref/conversational-ai/join#properties-llm-credential-mode), and [`properties.tts.credential_mode`](/en/api-reference/api-ref/conversational-ai/join#properties-tts-credential-mode): Set to `"managed"` to use Agora-managed credentials for the provider without supplying your own API key.

  * **Updated parameters**

    * [`properties.turn_detection.config.start_of_speech.mode`](/en/api-reference/api-ref/conversational-ai/join#properties-turn-detection-config-start-of-speech-mode): Now accepts `manual`, which disables automatic start-of-speech detection so the client can explicitly signal the start of user speech over RTM.
    * [`properties.turn_detection.config.end_of_speech.mode`](/en/api-reference/api-ref/conversational-ai/join#properties-turn-detection-config-end-of-speech-mode): Now accepts `manual`, which disables automatic end-of-speech detection so the client can explicitly signal the end of user speech over RTM.
    * [`properties.llm.greeting_message`](/en/api-reference/api-ref/conversational-ai/join#properties-llm-greeting-message): In addition to serving as a standalone greeting, this field is now required as a fallback when `greeting_audio_url` is configured, and is used to maintain conversation context when an audio greeting is interrupted.

  * **Deprecated parameters**

    * [`preset`](/en/api-reference/api-ref/conversational-ai/join#preset): Deprecated in favor of setting `credential_mode` to `"managed"` within the `asr`, `llm`, or `tts` block. See [Use managed mode](/en/ai/build/custom-model-integration/managed-mode).

* Changes to [**Notification event types**](/en/ai/reference/event-types)

  * **Updated events**

    * [`110 agent error`](/en/ai/reference/event-types#110-agent-error): Now reports greeting audio URL errors when the greeting audio file fails to download, times out, is in an unsupported format, or fails to decode. The agent automatically falls back to TTS synthesis using `greeting_message`. When `parameters.enable_error_message` is `true`, these errors are also delivered to the client via the `onMessageError` RTM callback.

### v2.8 [#v28]

Released on June 11, 2026.

#### New features [#new-features-1]

Included in this release:

* **Session data retention control**

  By default, session interaction text and audio are temporarily retained for the minimum necessary period to support service operation, agent optimization, and troubleshooting. To disable data retention for a session, set [`properties.parameters.opt_out`](/en/api-reference/api-ref/conversational-ai/join#properties-parameters-opt-out) to `true` when starting an agent.

* **RTC token expiry warning**

  A new [`104 agent expire`](reference/event-types#104-agent-expire) event is triggered when the agent's RTC token is about to expire. Upon receiving this event, call the [Update agent](/en/api-reference/api-ref/conversational-ai/update) API with a new token to refresh it. The agent does not exit the channel or interrupt the session when this event is triggered.

* **New ASR provider**

  * [xAI](models/asr/xai)

* **New LLM provider**

  * [xAI Grok](models/llm/xai)

* **New TTS provider**

  * [xAI](models/tts/xai)

#### Improvements [#improvements-1]

This release includes the following enhancements.

<CalloutContainer type="warning">
  <CalloutTitle>
    Important
  </CalloutTitle>

  <CalloutDescription>
    These changes may affect your existing integration. Review each change and update your integration as needed.
  </CalloutDescription>
</CalloutContainer>

* **Idle timeout behavior change**

  Setting `properties.idle_timeout` to `0` no longer means the agent runs indefinitely. From this release, `0` only disables the channel idle timeout. Regardless of the `idle_timeout` value, the maximum running time for a single session is 72 hours, after which the agent automatically exits.

  If your integration previously relied on `idle_timeout = 0` to keep an agent running until manually stopped, update your task scheduling and lifecycle management logic to account for the 72-hour limit.

#### API changes [#api-changes-1]

This release introduces the following changes to the RESTful API.

* Changes to [**Start a conversational AI agent**](/en/api-reference/api-ref/conversational-ai/join)

  * **New parameters**

    * [`properties.parameters.opt_out`](/en/api-reference/api-ref/conversational-ai/join#properties-parameters-opt-out): Set to `true` to disable data retention for the current session.

  * **Updated parameters**

    * [`properties.idle_timeout`](/en/api-reference/api-ref/conversational-ai/join#properties-idle-timeout): Valid range is now `0` to `259200` seconds (72 hours). Regardless of the value set, the maximum running time for a single session is 72 hours.

* Changes to [**Retrieve agent history**](/en/api-reference/api-ref/conversational-ai/history)

  * **New response fields**

    * [`contents[].speech_start_ms`](/en/api-reference/api-ref/conversational-ai/history#contents-speech-start-ms): Unix timestamp in milliseconds indicating when the user started speaking or the agent started TTS playback. Only returned when `llm.vendor` is `custom`.
    * [`contents[].speech_end_ms`](/en/api-reference/api-ref/conversational-ai/history#contents-speech-end-ms): Unix timestamp in milliseconds indicating when the user stopped speaking, or when TTS playback completed or was interrupted. Only returned when `llm.vendor` is `custom`.
    * [`contents[].speech_algorithmic_delay`](/en/api-reference/api-ref/conversational-ai/history#contents-speech-algorithmic-delay): The total delay in milliseconds introduced by audio processing algorithms after audio is captured from the user's microphone. Only returned when `llm.vendor` is `custom`, `contents[].role` is `user`, and actual voice input is present.

* Changes to [**Notification event types**](reference/event-types)

  * **New events**

    * [`104 agent expire`](reference/event-types#104-agent-expire): Triggered when the agent's RTC token is about to expire. Call the Update agent API with a new token upon receiving this event.

  * **Updated events**

    * [`102 agent left`](reference/event-types#102-agent-left): Added `Task lifetime limit exceeded` as a new exit reason when the 72-hour session limit is reached.
    * [`103 agent history`](reference/event-types#103-agent-history): Added `contents[].speech_start_ms`, `contents[].speech_end_ms`, and `contents[].speech_algorithmic_delay`. Only returned when `llm.vendor` is `custom`.

* Changes to [**Retrieve a list of agents**](/en/api-reference/api-ref/conversational-ai/list)

  * **Updated parameters**

    * `state`: Now accepts a comma-separated list of values to filter by multiple agent states in a single request. For example, `state=0,1,2`.

### v2.7 [#v27]

Released on May 20, 2026.

#### New features [#new-features-2]

Included in this release:

* **New MLLM provider**

  * [xAI Grok](models/mllm/xai)

* **New Avatar providers**

  * [Generic avatar (Beta)](models/avatar/generic)

* **Greeting interruption control**

  The `properties.llm.greeting_configs` object in the [Start a conversational AI agent](/en/api-reference/api-ref/conversational-ai/join) API now supports an `interruptable` parameter, which controls whether user speech can interrupt a greeting during playback.

#### Improvements [#improvements-2]

This release includes the following enhancements:

<CalloutContainer type="warning">
  <CalloutTitle>
    Important
  </CalloutTitle>

  <CalloutDescription>
    These changes may affect your existing integration. Review each change and update your integration as needed.
  </CalloutDescription>
</CalloutContainer>

* **Response status codes updated**

  This release adjusts the HTTP response status codes and `reason` values returned by the RESTful API. New status codes `401`, `429`, and `500` are added. New `reason` values `ServiceNotEnabled`, `AccountSuspended`, and `ResourceAllocationFailed` are introduced. The existing `InvalidRequest` reason is replaced by `InvalidRequestBody`, `MissingRequiredField`, and `InvalidFieldValue`. For details, see [Status codes and error messages](/en/api-reference/api-ref/conversational-ai/status-codes).

  If your integration relies on `reason` values for error handling, retry logic, or alerting, update your logic to handle the new values accordingly.

* **Query conversation turns API now returns paginated results**

  The [Query conversation turn information](/en/api-reference/api-ref/conversational-ai/turns) API no longer returns all turns in a single response. Results are now paginated, defaulting to page 1 with up to 50 turns per page.

  This affects sessions with more than 50 conversation turns. Update your integration to handle the new `total_turn_count` and `pagination` fields in the response, and retrieve subsequent pages as needed.

  This release also adds the [112 turns finished](reference/event-types#112-turns-finished) notification event, which delivers conversation turn data in batches after a session ends as an alternative way to retrieve turn data.

* **`on_listening_action` default behavior change**

  The default value of `on_listening_action` in the [Send a custom instruction](/en/api-reference/api-ref/conversational-ai/think) API has changed from `inject` to `interrupt`. When set to `interrupt`, the API immediately interrupts the current flow and initiates a new round of dialogue. If you rely on the previous default behavior, explicitly set `on_listening_action` to `inject` in your requests.

#### API changes [#api-changes-2]

This release introduces the following changes to the RESTful API.

* Changes to [**Start a conversational AI agent**](/en/api-reference/api-ref/conversational-ai/join)

  * **New parameters**

    * [`properties.llm.greeting_configs.interruptable`](/en/api-reference/api-ref/conversational-ai/join#properties-llm-greeting-configs-interruptable): Controls whether user speech can interrupt a greeting during playback.

* Changes to [**Query conversation turn information**](/en/api-reference/api-ref/conversational-ai/turns)

  * **New query parameters**

    Adds `page_index` and `page_size` fields to [query parameters](/en/api-reference/api-ref/conversational-ai/turns#query-parameters).

  * **New response parameters**

    The [response](/en/api-reference/api-ref/conversational-ai/turns#response) now includes additional top-level fields:

    * `agent_id`: The unique identifier of the agent.
    * `name`: The name of the agent.
    * `channel`: The name of the RTC channel the agent joined.
    * `total_turn_count`: The total number of dialogue turns in the session.
    * `pagination`: Pagination details for the response, including `page_index`, `total_pages`, and `is_last_page`.

* Changes to [**Send a custom instruction**](/en/api-reference/api-ref/conversational-ai/think)

  * **Behavior changes**

    * [`on_listening_action`](/en/api-reference/api-ref/conversational-ai/think#on-listening-action): The default value has changed from `inject` to `interrupt`. When set to `interrupt`, the API immediately interrupts the current flow and initiates a new round of dialogue.

* Changes to [**Notification event types**](reference/event-types)

  * **New events**

    * `112 turns finished`: Triggered after a session ends, delivering conversation turn data in batches for post-session analysis and processing.

### v2.6 [#v26]

Released on April 22, 2026.

#### New features [#new-features-3]

Included in this release:

* **New TTS provider**

  * [Deepgram](models/tts/deepgram)

* **New endpoint: Send a custom instruction**

  Adds a new endpoint to inject a custom text instruction into the agent's current conversation pipeline. The instruction is processed as user input, enabling scenarios such as implicit instruction injection, client-side event triggering, and voice and text collaboration. For details, see [Send a custom instruction](/en/api-reference/api-ref/conversational-ai/think).

* **MLLM turn detection refactoring**

  Introduces a new [`mllm.turn_detection`](/en/api-reference/api-ref/conversational-ai/join#properties-mllm-turn-detection) object for configuring turn detection when using MLLM. When defined, this overrides the top-level `turn_detection` object. Supported modes vary by vendor:

  * OpenAI Realtime API: `agora_vad`, `server_vad`, `semantic_vad`
  * Google Gemini Live: `agora_vad`, `server_vad`

* **Interruption control**

  Adds a new top-level [`interruption`](/en/api-reference/api-ref/conversational-ai/join#properties-interruption) object for unified management of agent interruption behavior. Supports `start_of_speech` and `keywords` trigger modes, and configurable handling strategies when interruption is disabled.

#### Improvements [#improvements-3]

This release includes the following enhancements:

* **New agent state callbacks**

  Adds three callbacks to the [Android](/en/api-reference/api-ref/conversational-ai/client-toolkit/android#onagentlisteningchanged), [iOS](/en/api-reference/api-ref/conversational-ai/client-toolkit/ios#onagentlisteningchanged), and [web](/en/api-reference/api-ref/conversational-ai/client-toolkit/web#econversationalaiapievents) Toolkit event handler interface:

  * `onAgentListeningChanged`: Listen for changes in the agent's listening state to monitor when the agent starts or stops listening to user input.
  * `onAgentThinkingChanged`: Listen for changes in the agent's thinking state to monitor when the agent starts or stops processing a request.
  * `onAgentSpeakingChanged`: Listen for changes in the agent's speaking state to monitor when the agent starts or stops playing back speech.

* **Added `name` field to all [NCS event](reference/event-types) payloads**

  Returns the agent name provided when starting the agent.

#### API changes [#api-changes-3]

This release introduces the following changes to the RESTful API.

* **New endpoint**

  * [Send a custom instruction](/en/api-reference/api-ref/conversational-ai/think): `POST /v2/projects/{appid}/agents/{agentId}/think`

* Changes to [**Start a conversational AI agent**](/en/api-reference/api-ref/conversational-ai/join)

  * **New parameters**

    * [`interruption`](/en/api-reference/api-ref/conversational-ai/join#properties-interruption): Unified interruption control configuration. Supports `start_of_speech` and `keywords` trigger modes, and configurable handling strategies when interruption is disabled.
    * [`greeting_configs.delay_ms`](/en/api-reference/api-ref/conversational-ai/join#properties-llm-greeting-configs-delay-ms): Specifies the delay in milliseconds before the agent plays the greeting message after the user joins the channel.
    * [`llm.headers`](/en/api-reference/api-ref/conversational-ai/join#properties-llm-headers): Lets you pass custom headers in LLM requests, such as business-specific fields or tenant identifiers.
    * [`mllm.enable`](/en/api-reference/api-ref/conversational-ai/join#properties-mllm-enable): Enables the MLLM module. Replaces the deprecated `advanced_features.enable_mllm`.
    * [`mllm.turn_detection`](/en/api-reference/api-ref/conversational-ai/join#properties-mllm-turn-detection): Turn detection configuration for the MLLM module. When defined, overrides the top-level `turn_detection` object.
    * [`mllm.turn_detection.server_vad_config.idle_timeout_ms`](/en/api-reference/api-ref/conversational-ai/join#properties-mllm-turn-detection-server-vad-config-idle-timeout-ms): Idle timeout in milliseconds for server VAD mode. Applicable to OpenAI Realtime API only.
    * [`mllm.vendor`](/en/api-reference/api-ref/conversational-ai/join#properties-mllm-vendor) value `gemini`: Enables Google Gemini Live integration using the Gemini Developer API.

  * **Behavior changes**

    * `turn_detection` now handles SoS and EoS detection only. Interruption handling strategies have moved to the new top-level `interruption` field.
    * `turn_detection.config.start_of_speech.mode` values `keywords` and `disabled` are deprecated. Use the new `interruption` field instead.
    * When `turn_detection.end_of_speech.mode` is set to `semantic`, EOS detection supports English and Chinese only. For unsupported languages, the engine automatically falls back to VAD.

  * **Deprecated fields**

    * `advanced_features.enable_mllm`: Use `mllm.enable` instead.
    * `turn_detection.config.start_of_speech.mode` value `keywords`: Use `interruption.mode = "keywords"` instead.
    * `turn_detection.config.start_of_speech.mode` value `disabled`: Use `interruption.enable = false` with `interruption.disabled_config.strategy` instead.

  * **Removed fields**

    * `mllm.style`
    * `mllm.create_response` and `mllm.interrupt_response` for OpenAI Realtime API.

* Changes to [**Notification event types**](reference/event-types)

  * **New fields**

    * Added `name` to all [NCS event payloads](reference/event-types). Returns the agent name provided when starting the agent.

### v2.5 [#v25]

Released on March 31, 2026.

#### New features [#new-features-4]

Included in this release:

* **Preset model configurations**

  Adds a [`preset`](/en/api-reference/api-ref/conversational-ai/join#preset) parameter to the Join API. Pass a comma-separated list of preset names to apply predefined configurations for ASR, LLM, and TTS providers. When you use a preset, you do not need to provide the endpoint URL, API key, or model for the preset provider. Use the `asr`, `llm`, and `tts` fields to configure additional settings. When you use a preset, the corresponding ASR, LLM, or TTS service is provided through Agora-managed accounts. For details, see the [pricing](reference/pricing) page.

  Available presets:

  * ASR: `deepgram_nova_2`, `deepgram_nova_3`
  * LLM: `openai_gpt_4o_mini`, `openai_gpt_4_1_mini`, `openai_gpt_5_nano`, `openai_gpt_5_mini`
  * TTS: `minimax_speech_2_6_turbo`, `minimax_speech_2_8_turbo`, `openai_tts_1`

* **Pause state detection**

  When enabled, the agent uses semantic understanding to detect when a user intends to pause the conversation. For example, if the user says "hold on" or "just a moment", the agent waits for further input instead of forwarding the utterance to the LLM. Controlled by the new [`pause_state_enabled`](/en/api-reference/api-ref/conversational-ai/join#properties-turn-detection-config-end-of-speech--mode-config-pause-state-enabled) parameter.

* **Conversation turn insights**

  You can now query per-turn start, end, and latency metrics for completed agent sessions. See [Query conversation turn information](/en/api-reference/api-ref/conversational-ai/turns).

* **Real-time TTS parameter updates with custom LLM**

  In scenarios with a custom LLM integrated, this release adds support for real-time TTS parameter updates during conversations, enabling a more natural conversational experience. This feature applies to the following use cases:

  * The custom LLM detects a user request for the agent to change its voice or speaking style.
  * The custom LLM identifies a user's positive emotion and adjusts TTS volume, pitch, speech rate, and other parameters in real time to better match the user's mood.

  For implementation details, refer to [Real-time TTS parameter updates](build/custom-model-integration/custom-llm#update-tts-parameters-in-real-time).

* **New TTS provider**

  * [Murf (Beta)](models/tts/murf)

* **New Avatar provider**

  * [Anam (Beta)](models/avatar/anam)

#### Improvements [#improvements-4]

This release includes the following enhancements:

* **Migration from HeyGen API to LiveAvatar (Beta) API**

  Updates the HeyGen avatar model configuration to use the [LiveAvatar (Beta)](models/avatar/heygen) API.

#### API changes [#api-changes-4]

This release introduces the following changes to the RESTful API.

* **New endpoint: Query conversation turns**

  Adds a new GET endpoint to query conversation turn information for an agent session. After a conversation ends, use this endpoint to retrieve the start event, end event, and latency metrics for each turn within the session. For details, see [Query conversation turn information](/en/api-reference/api-ref/conversational-ai/turns).

* Changes to [**Start a conversational AI agent**](/en/api-reference/api-ref/conversational-ai/join)

  * **New parameters added**

    * [`preset`](/en/api-reference/api-ref/conversational-ai/join#preset)
    * [`pause_state_enabled`](/en/api-reference/api-ref/conversational-ai/join#properties-turn-detection-config-end-of-speech--mode-config-pause-state-enabled)

  * **Deprecated fields deleted**

    The following deprecated fields are deleted:

    * `properties.silence_timeout`
    * `properties.advanced_features.enable_aivad`
    * `properties.llm.silence_message`

### v2.4 [#v24]

Released on February 2, 2026.

#### New features [#new-features-5]

Included in this release:

* **MCP integration**

  Adds a [`llm.mcp_servers`](/en/api-reference/api-ref/conversational-ai/join#properties-llm-mcp-servers) field to the [Start a conversational AI agent](/en/api-reference/api-ref/conversational-ai/join) API to connect the LLM to an MCP (Model Context Protocol) server. Set [`advanced_features.enable_tools`](/en/api-reference/api-ref/conversational-ai/join#properties-advanced-features-enable-tools) to `true` to enable tool calls. This allows the agent to call tools provided by external services to extend functionality.

* **Filler phrases**

  Adds a [`properties.filler_words`](/en/api-reference/api-ref/conversational-ai/join#properties-filler-words) field to insert pre-set or LLM-generated filler phrases during conversations to fill periods of silence while waiting for LLM output. This feature smooths dialogue flow, reduces user anxiety, and makes agent speech sound more natural.

#### Improvements [#improvements-5]

This release includes the following enhancements:

* **Turn detection configuration optimization**

  The `turn_detection` parameter structure has been updated to provide more flexible conversation turn detection. The new structure uses a `mode` + `config` pattern with separate Start of Speech (SoS) and End of Speech (EoS) detection configurations.

  **Basic configuration**

  * `mode`: Conversation turn detection mode (currently supports `default`)
  * `config.speech_threshold`: Voice activity detection sensitivity

  **Start of Speech (SoS) detection**

  Detects when the user begins speaking. When SoS is detected while the agent is speaking, an interruption occurs.

  The [`config.start_of_speech`](/en/api-reference/api-ref/conversational-ai/join#properties-turn-detection-config-start-of-speech) parameter supports three detection modes:

  * **VAD mode** (`vad`): Triggered by voice activity detection. Supports configuration of interruption threshold, prefix padding, and ignore word list.
  * **Keyword mode (Beta)** (`keywords`): Based on keyword triggering. The agent begins conversation after detecting a specified keyword.
  * **Disabled mode** (`disabled`): Disables interruption. Supports append or ignore strategies.

  **End of Speech (EoS) detection**

  Detects when the user finishes speaking. When EoS is detected, the agent generates a response.

  The [`config.end_of_speech`](/en/api-reference/api-ref/conversational-ai/join#properties-turn-detection-config-end-of-speech) parameter supports two detection modes:

  * **VAD mode** (`vad`): Determines conversation end based on silence duration.
  * **Semantic mode** (`semantic`): Determines conversation end based on semantic understanding. Supports configurable maximum wait time.

#### API changes [#api-changes-5]

This release introduces the following changes to the RESTful API.

* Changes to [**Start a conversational AI agent**](/en/api-reference/api-ref/conversational-ai/join)

  * **[`turn_detection`](/en/api-reference/api-ref/conversational-ai/join#properties-turn-detection) has a revamped structure**

    All previous fields under `turn_detection` have been deprecated and replaced with a new data structure.

    * Deprecated

      * `turn_detection.interrupt_mode`
      * `turn_detection.interrupt_keywords`
      * `turn_detection.interrupt_duration_ms`
      * `turn_detection.prefix_padding_ms`
      * `turn_detection.silence_duration_ms`
      * `turn_detection.threshold`

  * **AIVAD activation**

    The `advanced_features.enable_aivad` field is now deprecated; to configure AIVAD activation use [`turn_detection.config.end_of_speech.mode = "semantic"`](/en/api-reference/api-ref/conversational-ai/join#properties-turn-detection-config-end-of-speech-mode).

  * **New parameters added**

    * [`advanced_features.enable_tools`](/en/api-reference/api-ref/conversational-ai/join#properties-advanced-features-enable-tools)
    * [`llm.mcp_servers`](/en/api-reference/api-ref/conversational-ai/join#properties-llm-mcp-servers)
    * [`properties.filler_words`](/en/api-reference/api-ref/conversational-ai/join#properties-filler-words)
    * [`turn_detection.mode`](/en/api-reference/api-ref/conversational-ai/join#properties-turn-detection-mode)
    * [`turn_detection.config`](/en/api-reference/api-ref/conversational-ai/join#properties-turn-detection-config)

### v2.3 [#v23]

Released on January 7, 2026.

#### New features [#new-features-6]

Included in this release:

* **Control LLM response interruption in custom LLM scenarios**

  Adds a `metadata.interruptable` field in the first chunk of the `chat.completion.custom_metadata` object to control whether user speech can interrupt the agent's TTS output when using custom LLMs with streaming response (SSE). Use this to prevent interruptions when delivering critical information such as regulations, policies, or pricing. For more information, see [Configure LLM response interruption](build/custom-model-integration/custom-llm#configure-llm-response-interruption).

* **RTC media content encryption**

  Adds an `rtc` parameter to the [Start a conversational AI agent](/en/api-reference/api-ref/conversational-ai/join) API for configuring RTC encryption.

* **New ASR provider**

  * [Sarvam (Beta)](models/asr/sarvam)

#### Improvements [#improvements-6]

This release includes the following enhancements:

* **ElevenLabs TTS compatibility optimization**

  Supports SSML parsing and forwarding to ensure ElevenLabs TTS correctly renders intended speech effects such as pauses, emphasis, and pronunciation.

* **Latency optimization best practices**

  Adds a guide to [Optimize conversation latency](best-practices/optimize-latency).

* **Cloud Recording best practices**

  Adds a guide to [Record conversations with Cloud Recording](best-practices/record-agent-conversation).

#### API changes [#api-changes-6]

This release introduces the following changes to the RESTful API.

* **Stop agent API is now asynchronous**

  The [Stop a conversational AI agent](/en/api-reference/api-ref/conversational-ai/leave) API now responds immediately after request parameters are validated. The request is processed asynchronously after the API returns.

* Changes to [**Start a conversational AI agent**](/en/api-reference/api-ref/conversational-ai/join)

  * **New parameters added**

    * `properties.rtc`

### v2.2 [#v22]

Released on December 15, 2025.

#### New features [#new-features-7]

Included in this release:

* **Geofencing**

  Use `geofence` configuration when you [Start a conversational AI agent](/en/api-reference/api-ref/conversational-ai/join) to limit which Agora servers the Conversational AI Engine can access based on geographic regions. See [Restrict agent zones](best-practices/regional-restrictions) for details.

* **Agent greeting mode**

  Adds a field `llm.greeting_configs.mode` to the [Start a conversational AI agent](/en/api-reference/api-ref/conversational-ai/join) request to set the agent's greeting broadcast mode. The following modes are supported:

  * `single_every` (Default): The agent broadcasts a greeting every time a user joins a channel where there are no other users.
  * `single_first`: The agent broadcasts a greeting only when the first user joins a channel.

* **New TTS providers**

  * [Sarvam (Beta)](models/tts/sarvam)

#### Improvements [#improvements-7]

This release includes the following enhancements:

* **TTS parameter update**

  Adds `base_url` field to the TTS parameters for [OpenAI](models/tts/openai) and [ElevenLabs](models/tts/elevenlabs). This field specifies the endpoint URL for the TTS service.

#### API changes [#api-changes-7]

This release introduces the following changes to the RESTful API.

* Changes to [**Start a conversational AI agent**](/en/api-reference/api-ref/conversational-ai/join)

  * **New parameters added**

    * `properties.geofence`
    * `llm.greeting_configs.mode`

### v2.1 [#v21]

Released on December 5, 2025.

#### New features [#new-features-8]

Included in this release:

* **Template variables**

  This version adds the `llm.template_variables` field to the [Start a conversational AI agent](/en/api-reference/api-ref/conversational-ai/join) API, used to insert variables into the agent's `system_messages`, `greeting_message`, `failure_message`, and `parameters.silence_config.content` text. By configuring these variables, the Conversational AI engine automatically replaces them with the corresponding values defined in `llm.template_variables`. Template variables, combined with prompt customization and SIP outbound calling functionality, enable you to dynamically inject content to automate processes such as automatic hang-up, voicemail recognition, automatic message leaving, and call transfer.

* **Custom labels**

  This version adds a `labels` field to the [Start a conversational AI agent](/en/api-reference/api-ref/conversational-ai/join) API, enabling agents to carry custom labels. These labels are bound to the agent and returned in the `payload` field of all message notification callbacks from the Conversational AI engine, allowing you to implement custom business logic, such as tagging activity IDs, customer groups, and business scenarios.

  In SIP outbound call scenarios, you can pass a custom label in the `properties.labels` field when calling the outbound call interface to mark the call.

#### API changes [#api-changes-8]

This release introduces the following changes to the RESTful API.

* Changes to [**Start a conversational AI agent**](/en/api-reference/api-ref/conversational-ai/join)

  * **New parameters added**

    * `properties.labels`
    * `llm.template_variables`

### v2.0 [#v20]

Released on November 15, 2025.

#### New features [#new-features-9]

Included in this release:

* **Telephony (Beta)**

  This version adds an outbound calling feature that enables the conversational AI agent to initiate an outbound call to a specified number through a POST API. After the call is answered, the agent can engage in real-time dialogue with the callee. This feature supports a wide range of outbound AI call scenarios.

  A set of phone number management APIs is also added for handling numbers connected to Conversational AI Engine. Refer to the API changes section for details.

  <CalloutContainer type="info">
    <CalloutTitle>
      Telephony pricing
    </CalloutTitle>

    <CalloutDescription>
      The telephony feature is currently in **Beta** and is provided free of charge. Pricing terms may change upon official release.
    </CalloutDescription>
  </CalloutContainer>

* **Selective attention locking (Beta)**

  This version adds the selective attention lock feature. Register voiceprints to enable the agent to identify specific speakers and suppress background voices and environmental noise, ensuring clearer, more focused conversations.

* **Graceful exit**

  This version adds a new `farewell_config` field to [Start a conversational AI agent](/en/api-reference/api-ref/conversational-ai/join) API to configure the graceful exit feature. When enabled, calling the [Stop a Conversational Agent](/en/api-reference/api-ref/conversational-ai/leave) API causes the agent to enter an `IDLE` state before leaving the channel.

* **Keyword interruption mode**

  This release adds a new option to the `turn_detection.interrupt_mode` field in the [Start a conversational AI agent](/en/api-reference/api-ref/conversational-ai/join) API. Set this field to `"keyword"` to enable keyword interruption mode.

  When this mode is enabled, the agent stops its current behavior after detecting any of the keywords specified in the `turn_detection.interrupt_keywords` field.

* **Adaptive interruption mode**

  This release adds a new option to the `turn_detection.interrupt_mode` field in the [Start a conversational AI agent](/en/api-reference/api-ref/conversational-ai/join) API. Set this field to `"adaptive"` to enable adaptive interruption mode.

  When this mode is enabled, the agent dynamically increases the voice continuity threshold while speaking to reduce accidental interruptions.

* **New ASR, LLM, MLLM, and TTS providers**

  * ASR
    * [OpenAI (Beta)](models/asr/openai)
    * [Speechmatics](models/asr/speechmatics)
    * [Google (Beta)](models/asr/google)
    * Amazon Transcribe (Beta)
    * [AssemblyAI (Beta)](models/asr/assembly-ai)
  * LLM
    * [Groq](models/llm/groq)
    * [Amazon Bedrock](models/llm/amazon)
  * MLLM
    * [Google Gemini Live](models/mllm/gemini)
  * TTS
    * [Rime (Beta)](models/tts/rime)
    * [Fish Audio (Beta)](models/tts/fish-audio)
    * [Google (Beta)](models/tts/google)
    * [Amazon Polly (Beta)](models/tts/amazon)

* **New webhook notification events**

  This release adds three new webhook notification event types to support metrics reporting and call-state monitoring:

  * `111`: [agent metrics](reference/event-types#111-agent-metrics)

    Notifies real-time performance metrics for each dialogue turn, including ASR, LLM, and TTS latency measurements.

  * `201`: [inbound call state](reference/event-types#201-inbound-call-state)

    Reports state changes for incoming calls, such as when a call starts, is answered, transferred, or hung up.

  * `202`: [outbound call state](reference/event-types#202-outbound-call-state)

    Reports state changes for outbound calls initiated by the agent, including call start, dialing, ringing, answer, and hang-up events.

#### Improvements [#improvements-8]

This release includes the following enhancements:

* **Support for avatars with MLLMs**

  Added support for using avatars with MLLMs.

#### API changes [#api-changes-9]

This release introduces the following changes to the RESTful API.

* Changes to [**Start a conversational AI agent**](/en/api-reference/api-ref/conversational-ai/join)

  * **New parameters added**

    * `properties.parameters.farewell_config`
    * `properties.advanced_features.enable_sal`
    * `properties.sal`
    * `properties.sal.sal_mode`
    * `properties.sal.sample_urls`
    * `properties.turn_detection.interrupt_mode` (supports `adaptive` and `keyword` values)
    * `properties.turn_detection.interrupt_keywords`
    * `properties.turn_detection.interrupt_duration_ms` (migrated from `vad.interrupt_duration_ms`)
    * `properties.turn_detection.prefix_padding_ms` (migrated from `vad.prefix_padding_ms`)
    * `properties.turn_detection.silence_duration_ms` (migrated from `vad.silence_duration_ms`)
    * `properties.turn_detection.threshold` (migrated from `vad.threshold`)

  * **Deprecated**

    * The `vad` interface is deprecated. All configuration items have been moved to the `turn_detection` field.

* **New APIs**

  * Telephony (Beta)
    * Initiate an outbound call
    * Retrieve call records
    * Hang-up a call
    * Retrieve call status

  * Phone number management (Beta)
    * Retrieve list of numbers
    * Import number
    * Retrieve number information
    * Update number configuration
    * Delete number

#### Toolkit API [#toolkit-api]

This release renames all APIs and parameters containing the word `transcription` in the client-side subtitle API to use `transcript`, as shown below:

#### Android [#android]

* `onTranscriptionUpdated` renamed to `onTranscriptUpdated`
* `TranscriptionRenderMode` renamed to `TranscriptRenderMode`
* `TranscriptionType` renamed to `TranscriptType`
* `TranscriptionStatus` renamed to `TranscriptStatus`
* `Transcription` renamed to `Transcript`

#### iOS [#ios]

* `onTranscriptionUpdated` renamed to `onTranscriptUpdated`
* `TranscriptionRenderMode` renamed to `TranscriptRenderMode`
* `TranscriptionType` renamed to `TranscriptType`
* `TranscriptionStatus` renamed to `TranscriptStatus`
* `Transcription` renamed to `Transcript`

#### Web [#web]

* `TRANSCRIPTION_UPDATED` renamed to `TRANSCRIPT_UPDATED`

### v1.7 [#v17]

Released on July 31, 2025.

#### New features [#new-features-10]

* **AI avatars**

  Create visual avatar representations for your conversational agents using third-party avatar providers. AI avatars provide a visual presence during voice interactions, making conversations feel more natural and engaging. Enable AI avatars by setting `avatar.enable` to `true` and configuring the `avatar.vendor` and `avatar.params` fields when calling [Start a conversational AI agent](/en/api-reference/api-ref/conversational-ai/join) to create your agent.

  <CalloutContainer type="info">
    <CalloutTitle>
      Info
    </CalloutTitle>

    <CalloutDescription>
      AI avatars require video streaming and incur additional charges. See [video calling pricing](/en/realtime-media/video/reference/pricing) for details.
    </CalloutDescription>
  </CalloutContainer>

* **Selective attention locking (Beta)**

  This version introduces the selective attention locking feature, which uses voiceprint recognition technology to identify and filter out the speaker while suppressing background noise. This enhances the efficiency of conversational AI, particularly improving speech recognition accuracy. To experience this feature, contact [technical support](mailto\:support@agora.io).

* **Send picture messages (Beta)**

  The toolkit now includes an API for [sending picture messages](build/send-multimodal-messages). You can send image URLs to the main model, which automatically references the image in future interactions to generate more relevant responses. A new callback is available to receive image message receipt details after successful transmission.

  <CalloutContainer type="info">
    <CalloutTitle>
      Info
    </CalloutTitle>

    <CalloutDescription>
      * The picture messaging feature is currently in Beta and free for a limited time.
      * Image processing depends on the capabilities of the integrated LLM. Ensure the LLM you connect to the Conversational AI Engine supports image input.
    </CalloutDescription>
  </CalloutContainer>

#### API changes [#api-changes-10]

This release introduces the following modifications to the RESTful API.

* [Start a conversational AI agent](/en/api-reference/api-ref/conversational-ai/join)

  * **New parameters added**

    * `avatar.enable`
    * `avatar.vendor`
    * `avatar.params`

##### Toolkit API [#toolkit-api-1]

* Android:
  * `chat`
  * `ImageMessage`
  * `onMessageReceiptUpdated`
  * `MessageReceipt`
* iOS:
  * `chat`
  * `ChatMessage`
  * `ChatMessageType`
  * `ImageMessage`
  * `onMessageReceiptUpdated`
  * `MessageReceipt`
* Web:
  * `chat`
  * `TMessageReceipt`
  * `EChatMessagePriority`
  * `EChatMessageType`
  * `IChatMessageBase`
  * `IChatMessageImage`

### v1.6 [#v16]

Released on July 15, 2025.

#### New features [#new-features-11]

* **Support for OpenAI Realtime API**

  Integrate Multimodal Large Language Models (MLLMs) with Conversational AI Engine to enable end-to-end real-time audio and text interactions. See [OpenAI Realtime API](models/mllm/openai) for integration details.

* **Support for more TTS vendors**

  Conversational AI Engine now supports the following additional TTS vendors:

  * [Cartesia](models/tts/cartesia)
  * [OpenAI](models/tts/openai)

* **Custom ASR provider support**

  To improve flexibility in configuring conversational agents, this release allows you to select a custom automatic speech recognition (ASR) provider. The [Start a conversational AI agent](/en/api-reference/api-ref/conversational-ai/join) API now includes the following new parameters:

  * `asr.vendor`: Specify the ASR provider
  * `asr.params`: Configure ASR parameters

  The following ASR providers are supported:

  * **ARES** (default)
  * **Microsoft Azure**
  * **Deepgram**

  **Billing update:**

  In earlier versions, the service fee included the cost of the Ares ASR provider. Starting in v1.6, the pricing is restructured as follows:

  * If you use **ARES ASR*&#x2A;, the total price remains unchanged:
    &#x2A;**Total cost = Conversational AI Engine Audio Basic Task + ARES ASR Task***
  * If you use **a different ASR provider**, you are charged **only** the new **Conversational AI Engine Audio Basic Task** fee.

  For further details, see [Pricing](reference/pricing).

* **Multi-platform toolkit**

  Agora now offers a toolkit to help you quickly build conversational agent apps. The toolkit is available for [**iOS**](/en/api-reference/api-ref/conversational-ai/client-toolkit/ios), [**Android**](/en/api-reference/api-ref/conversational-ai/client-toolkit/android), and [**Web**](/en/api-reference/api-ref/conversational-ai/client-toolkit/web), and includes APIs for common scenarios. Call these APIs to combine the capabilities of the Agora Voice SDK and Signaling SDK to achieve the following functions:

  * [**Display live transcript**](build/transcripts)
    Display real-time text output of user-agent conversations. The transcript component is now more robust, with better error handling, session management, and extensibility.
  * [**Interrupt the agent**](build/shape-the-conversation/interrupt-agent)
    Stop the agent from speaking or thinking mid-conversation.
  * [**Client-side events**](build/handle-runtime-events/event-notifications)
    Track changes in conversation state, performance metrics, and error events.
  * [**Optimize audio settings**](best-practices/audio-setup)
    Quickly apply best-practice audio configurations to improve agent responsiveness and clarity.

#### API changes [#api-changes-11]

##### REST API [#rest-api]

This release introduces several important modifications to the RESTful API.

* [Start a conversational AI agent](/en/api-reference/api-ref/conversational-ai/join)

  * **New parameters added**

    * `asr.vendor`
    * `asr.params`
    * `advanced_features.enable_mllm`
    * `properties.mllm`
    * `turn_detection.type`
    * `turn_detection.interrupt_duration_ms`
    * `turn_detection.prefix_padding_ms`
    * `turn_detection.silence_duration_ms`
    * `turn_detection.threshold`
    * `turn_detection.create_response`
    * `turn_detection.interrupt_response`
    * `turn_detection.eagerness`
    * `parameters.enable_metrics`
    * `parameters.data_channel`
    * `parameters.enable_error_message`

##### Toolkit APIs [#toolkit-apis]

* [Android SDK](/en/api-reference/api-ref/conversational-ai/client-toolkit/android)
* [iOS SDK](/en/api-reference/api-ref/conversational-ai/client-toolkit/ios)
* [Web SDK](/en/api-reference/api-ref/conversational-ai/client-toolkit/web)

### v1.5 [#v15]

Released on June 9, 2025.

#### New features [#new-features-12]

* **Voice interruption mode**

  This release adds the `turn_detection.interrupt_mode` parameter to the [Start a conversational AI agent](/en/api-reference/api-ref/conversational-ai/join) API, allowing you to control how the agent handles human voice interruptions. The following modes are supported:

  * **`interrupt`**: (Default) The human voice immediately interrupts the agent. The agent terminates the current interaction and processes the new human voice input.
  * **`append`**: The human voice does not interrupt the agent. The agent processes the newly received human voice request after the current interaction ends.
  * **`ignore`**: The agent ignores human voice requests received during speaking or thinking. These requests are discarded and not stored in the context.

* **TTS filtering**

  This release adds the `tts.skip_patterns` parameter to the [Start a conversational AI agent](/en/api-reference/api-ref/conversational-ai/join) API. This parameter controls whether the TTS module skips bracketed content when reading LLM response text. This prevents the agent from vocalizing structural prompt information like tone indicators, action descriptions, and system prompts, creating a more natural and immersive listening experience.

#### API changes [#api-changes-12]

This release introduces several important modifications to the RESTful API.

* [Start a conversational AI agent](/en/api-reference/api-ref/conversational-ai/join)

  * **New parameters added**

    * `turn_detection.interrupt_mode`
    * `parameters.silence_config`
    * `tts.skip_patterns`

### v1.4 [#v14]

Released on May 29, 2025.

#### New features [#new-features-13]

* **Metadata support for LLM requests**

  This release adds the `llm.vendor` parameter to the [Start a conversational AI agent](/en/api-reference/api-ref/conversational-ai/join) API. When set to `"custom"`, the agent includes additional metadata when calling the LLM, such as `turn_id` and `timestamp`.

* **Support for Anthropic**

  Conversational AI Engine now supports `anthropic` as a request style for chat completion. Refer to the `llm.style` parameter in [Start a conversational AI agent](/en/api-reference/api-ref/conversational-ai/join).

#### Improvements [#improvements-9]

This release includes the following enhancements:

* **Advanced LLM configuration**: The [Update agent configuration](/en/api-reference/api-ref/conversational-ai/update) API now supports:
  * `llm.system_messages` for updating system prompts
  * `llm.params` for modifying configuration parameters used when calling the large language model

#### API changes [#api-changes-13]

This release introduces several important modifications to the RESTful API.

* [Start a conversational AI agent](/en/api-reference/api-ref/conversational-ai/join)

  * **New parameters added**

    * `llm.vendor`

  * **Removed parameters:**

    * `agent_rtm_uid`

* [Update agent configuration](/en/api-reference/api-ref/conversational-ai/update)

  * **New parameters added**

    * `llm.system_messages`
    * `llm.params`

### v1.3 [#v13]

Released on April 16, 2025.

#### New features [#new-features-14]

* **Agent conversation history**: This version adds two methods to retrieve an agent's history. The history includes messages exchanged between the user and the agent and timestamps of agent creation and exit.

  * Call the RESTful API `history` endpoint to [Retrieve agent history](/en/api-reference/api-ref/conversational-ai/history).
  * Subscribe to the [agent history event](reference/event-types#103-agent-history) through the [Agora message notification service](build/handle-runtime-events/webhooks). When the agent stops, Agora automatically sends the agent's history to your business server through a Webhook callback.

#### Improvements [#improvements-10]

* **Customize the priority of broadcast information**: This version upgrades the [Broadcast a message using TTS](/en/api-reference/api-ref/conversational-ai/speak) interface and adds two new configuration parameters related to broadcast interruption logic:

  * `priority`: Sets the priority of the message broadcast. Supports setting the following priorities:
    * `INTERRUPT` High priority
    * `APPEND`: Medium priority
    * `IGNORE`: Low priority
  * `interruptable`: Configure whether to allow human voice to interrupt the agent's broadcast.

#### API changes [#api-changes-14]

* Adds the [Retrieve agent history](/en/api-reference/api-ref/conversational-ai/history) method.
* Adds `priority` and `interruptable` parameters to the [Broadcast a message using TTS](/en/api-reference/api-ref/conversational-ai/speak) method.

### v1.2 [#v12]

Released on April 10, 2025.

#### New features [#new-features-15]

* **Broadcast a message using TTS**: A new message broadcast interface enables a specified agent to deliver a custom message. When interacting with an agent, calling this interface interrupts the agent's speech and thinking process, allowing the TTS module to immediately broadcast the custom message.

* **Interrupt the agent**: The interrupt agent endpoint lets you stop the specified agent's speech and thinking process.

#### API changes [#api-changes-15]

This version adds the following APIs:

* [Broadcast a message using TTS](/en/api-reference/api-ref/conversational-ai/speak)
* [Interrupt the agent](/en/api-reference/api-ref/conversational-ai/interrupt)

### v1.1 [#v11]

Released on March 27, 2025.

#### New features [#new-features-16]

The [Start a conversational agent](/en/api-reference/api-ref/conversational-ai/join) API adds the `enable_rtm` and `agent_rtm_uid` parameters to enable Signaling integration with the conversational AI agent. When this feature is enabled, the agent can leverage the Signaling SDK to obtain a user's custom context information such as speaking status, selected text, signature, and score, and pass this data to the agent to generate more relevant content. For details, see [Transmit custom information](build/shape-the-conversation/custom-information).

#### Improvements [#improvements-11]

To help you quickly integrate a custom large language model (LLM), this version adds documentation for [Custom LLMs](build/custom-model-integration/custom-llm). Refer to the sample code in the documentation to integrate your custom model into the Conversational AI Engine and enable advanced capabilities such as Retrieval-Augmented Generation (RAG), multi-modal processing, and tool invocation.

#### API changes [#api-changes-16]

The `POST` method to [Start a conversational AI agent](/en/api-reference/api-ref/conversational-ai/join) now includes the `enable_rtm` and `agent_rtm_uid` parameters.

### v1.0 (Public Beta) [#v10-public-beta]

This version, released on March 4, 2025, adds pricing information for the Agora Conversational AI Engine. For more information, see [Pricing](reference/pricing).

#### Integration guide [#integration-guide]

To achieve the best conversation experience, use Agora Conversational AI Engine with the following Agora SDKs:

* Agora RTC Native SDK, v4.5.1 or later.
* Agora RTC Web SDK, version 4.23.2 or later.

#### New features [#new-features-17]

* **Live transcripts**: Supports real-time text output of conversations between users and the AI agent for transcript display in your app's UI. Agora provides an open-source transcript processing module. Integrate the module and call its API to implement live transcript. For details, see [Display live transcripts](build/transcripts).

* **Message Notification Service**: Introduces a new Conversational AI Engine message notification service. Configure it in the Agora console and subscribe to agent creation, stop, and error events. When a subscribed event occurs, Agora sends the details to your specified callback address. See [Receive event notifications](build/handle-runtime-events/webhooks).

* **Keywords**: Enhances recognition accuracy of Conversational AI Engine for proprietary words by adding keywords. This feature is currently in Beta stage. For details, [contact technical support](https://agoraio.zendesk.com/hc/en-us).

### v1.0 (Private Beta) [#v10-private-beta]

Released on February 18, 2025. The first beta release of the Conversational AI Engine brings natural, smooth, low-latency, and highly reliable real-time voice conversations with AI agents to Agora channels. It enables you to efficiently build intelligent and immersive interactive experiences. See [Product overview](/en/ai) for details.

#### Core features [#core-features]

* **Real-time voice conversation**

  Supports natural and smooth real-time voice conversations with AI. It delivers a low-latency, ultra-responsive interactive experience as if the user is communicating with a real person.

* **Intelligent noise suppression**

  Intelligently identifies and suppresses background noise, ensuring clear sound transmission even in noisy environments to provide users with a high-quality audio experience.

* **Background human voice suppression**

  Suppresses background voices and noise while accurately preserving the primary speaker's voice. This ensures a clear and focused interactive experience in multi-speaker environments.

* **Intelligent interruption handling**

  Allows users to interrupt AI at any time to ensure quick and natural responses. This feature enables smooth transitions and avoids mechanical interactions.

* **Intelligent transmission**

  An AI-optimized transmission algorithm ensures stable voice data delivery even in weak network conditions where packet loss reaches 80%. This guarantees conversation continuity and reliability across diverse network environments.

* **Flexible arrangement**

  Supports multiple Large Language Model (LLM) and Text-to-Speech (TTS) providers, enabling flexible orchestration to meet diverse business needs and deliver highly customizable AI dialogue solutions.

* **Multi-platform support**

  Compatible with iOS, Android, Web, and various embedded hardware platforms, providing a seamless and consistent cross-platform experience.

#### Integration guide [#integration-guide-1]

* For the best conversational experience, Agora recommends using Conversational AI Engine with specific Agora Video/Voice SDK versions. For details, [contact technical support](mailto\:support@agora.io).
* The number of Peak Concurrent Users (PCU) allowed to call the server API under a single App ID is limited to 20. If you need to increase this limit, [contact technical support](mailto\:support@agora.io).
