# V3 gateway transport delivers no update / agent\_start\_talking / agent\_stop\_talking events to the browser — blocks Create Web Call v2 migration

**URL:** <https://community.retellai.com/t/v3-gateway-transport-delivers-no-update-agent-start-talking-agent-stop-talking-events-to-the-browser-blocks-create-web-call-v2-migration/3654>\
**Category:** Support Help\
**Tags:** bug\
**Created:** [September 16, 2026, 8:26am UTC](https://community.retellai.com/t/v3-gateway-transport-delivers-no-update-agent-start-talking-agent-stop-talking-events-to-the-browser-blocks-create-web-call-v2-migration/3654 "2026-09-16T08:26:29Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![mannan.khan](https://yyz2.discourse-cdn.com/flex008/user_avatar/community.retellai.com/mannan.khan/32/2736_2.png) [@mannan.khan](https://community.retellai.com/u/mannan.khan)\
**Post date:** [September 16, 2026, 8:26am UTC](https://community.retellai.com/t/v3-gateway-transport-delivers-no-update-agent-start-talking-agent-stop-talking-events-to-the-browser-blocks-create-web-call-v2-migration/3654/1 "2026-09-16T08:26:29Z")

</div>

We’re migrating off `POST /v2/create-web-call` ahead of the 30 Sep removal ([deprecation notice](https://docs.retellai.com/deprecation-notice/2026/09-30_create_web_call_v2)) and hit a functional regression on the v3 path that the migration guide doesn’t mention. Same root cause as #3648, which is still open (its accepted answer is only the “checking with the team” acknowledgement).

**Setup**

- Server mints the call: `retell-sdk` 5.66.1 → `POST /v3/create-web-call` → `access_token`, `call_id`, `transport: "gateway"`, `ice_servers`, `expires_at`.
- Browser joins with `retell-client-js-sdk` 3.0.1: `RetellWebClient.startCall({ accessToken, callId, transport, iceServers })`, per the guide’s field mapping. We can’t use `RetellClient.createWebCall()` — it requires an API key in the browser.
- Custom LLM over the LLM WebSocket. Four workspaces (Prod / Pre-prod / Staging / Sandbox); IDs on request.

**What changes between v2 and v3**  
On v2 (LiveKit transport) the browser received `update` (with `turntaking`), `agent_start_talking`, `agent_stop_talking` and `metadata` on the room data channel. On v3 (gateway transport) the SDK cannot deliver any of them: `src/gateway-transport.ts` creates the `control` data channel with the comment _“Not used yet — the gateway does not relay orchestrator data onto it — but wired so that stays a drop-in.”_, and `src/transport.ts` marks `onData` as “LiveKit only, so far”. #3648 confirms it live (1 message / 37 bytes on the data channel across a 31 s call). The `/v3/create-web-call` response is typed `transport: 'gateway'` only and the request has no transport parameter, so there is no way to stay on LiveKit under v3. Audio, `call_started`, `call_ended` and the `audio` analyser frames are fine.

Our call UI depends on those events for turn-taking: lifting the mic mute after the greeting, and the “you’re speaking” indicator. We’ve rebuilt the first from the agent audio analyser; the second has no signal at all on v3.

**Questions**

1. Is relaying orchestrator events (`update`/turn-taking, `agent_start/stop_talking`, `metadata`) over the gateway data channel planned, and what’s the ETA relative to the 30 Sep v2 removal?
2. Is there a supported way for a _server-minted_ web call to receive live turn-taking/transcript in the browser without shipping an API key? `/v2/monitor-call` needs a `Call.Write` key as the bearer subprotocol; an `access_token`-scoped variant would solve this.
3. `RetellWebClient` is marked for removal in 4.0 and `RetellClient.createWebCall()` needs the key client-side — what is the intended path for server-minted calls after 4.0?
4. Will the v2 removal proceed on 30 Sep while this gap exists?

Happy to share workspace IDs and a v3 `call_id` privately. @Shah-Fazal

---

<div class="post-metadata">

**Author:** ![mark1](https://yyz2.discourse-cdn.com/flex008/user_avatar/community.retellai.com/mark1/32/2524_2.png) [@mark1](https://community.retellai.com/u/mark1)\
**Post date:** [September 16, 2026, 1:16pm UTC](https://community.retellai.com/t/v3-gateway-transport-delivers-no-update-agent-start-talking-agent-stop-talking-events-to-the-browser-blocks-create-web-call-v2-migration/3654/2 "2026-09-16T13:16:29Z")

</div>

Hey @mannan.khan

Thanks for the detailed report and for outlining the migration impact. I’ll check this with the relevant team and get back to you once I have an update. Thank you for your patience.

Best Regards.

---

<div class="post-metadata">

**Author:** ![mark1](https://yyz2.discourse-cdn.com/flex008/user_avatar/community.retellai.com/mark1/32/2524_2.png) [@mark1](https://community.retellai.com/u/mark1)\
**Post date:** [September 18, 2026, 1:27pm UTC](https://community.retellai.com/t/v3-gateway-transport-delivers-no-update-agent-start-talking-agent-stop-talking-events-to-the-browser-blocks-create-web-call-v2-migration/3654/3 "2026-09-18T13:27:48Z")

</div>

Hello @mannan.khan Please check the updated doc: [Monitor live Retell calls: listen in, take over, or end a call](https://docs.retellai.com/features/live-monitoring#monitor-calls-from-your-own-app)

Most of the lifecycle events are already available in the ws path:

> **[​Sample events - Stream live call transcripts with the Retell AI monitor call...](https://docs.retellai.com/api-references/monitor-call-websocket#sample-events)**
>
> Show properties | Connect to the Retell AI monitor call WebSocket with an API key or public key and receive a live call's transcript, tool calls, and node transitions as JSON events.

Best Regards

---

<div class="post-metadata">

**Author:** ![mannan.khan](https://yyz2.discourse-cdn.com/flex008/user_avatar/community.retellai.com/mannan.khan/32/2736_2.png) [@mannan.khan](https://community.retellai.com/u/mannan.khan)\
**Post date:** [September 21, 2026, 7:16am UTC](https://community.retellai.com/t/v3-gateway-transport-delivers-no-update-agent-start-talking-agent-stop-talking-events-to-the-browser-blocks-create-web-call-v2-migration/3654/4 "2026-09-21T07:16:28Z")

</div>

Thanks @Shah-Fazal @mark1 — read both pages. Two issues with the monitor path for our case:

1. It doesn’t carry the events v2 delivered. The monitor stream is transcript\_snapshot / transcript\_updated / call\_ended — “the stream carries text only”. No turntaking, agent\_start\_talking, agent\_stop\_talking or metadata, which is what the LiveKit data channel gave the browser on v2 and what the gateway data channel drops. A user transcript item arrives after ASR finalises the utterance, so it can’t drive a “caller is speaking” indicator or detect the end of the agent’s greeting.
2. Browser auth is a workspace-wide capability in the page. The browser path is a public key in the subprotocol, and the live-monitoring doc notes that permission “lets whoever holds the key take over any ongoing call in your workspace whose ID they know”. A domain allowlist only constrains browsers. We run one workspace for many customers, so a key in the page that can read, stop or take over any call by id isn’t something we can ship. We’ll relay via our backend as you suggest — but our backend already gets update\_only with turntaking on the LLM WebSocket, so the monitor socket adds nothing there.  
So the concrete asks stand: (a) will the gateway data channel relay update (turn-taking), agent\_start/stop\_talking and metadata to the web client as v2 did — yes/no, and rough ETA relative to the 30 Sep v2 removal? (b) If not, could the monitor WebSocket accept the per-call access\_token that /v3/create-web-call already mints, read-only for that one call? That would give browsers live events without a workspace credential.

---

<div class="post-metadata">

**Author:** ![mark1](https://yyz2.discourse-cdn.com/flex008/user_avatar/community.retellai.com/mark1/32/2524_2.png) [@mark1](https://community.retellai.com/u/mark1)\
**Post date:** [September 21, 2026, 1:13pm UTC](https://community.retellai.com/t/v3-gateway-transport-delivers-no-update-agent-start-talking-agent-stop-talking-events-to-the-browser-blocks-create-web-call-v2-migration/3654/5 "2026-09-21T13:13:21Z")

</div>

Hey @mannan.khan

Thanks for the detailed clarification. I’m checking these points with the relevant team. As soon as I have any update, I’ll let you know promptly.

Thank you for your patience.

---

<div class="post-metadata">

**Author:** ![mannan.khan](https://yyz2.discourse-cdn.com/flex008/user_avatar/community.retellai.com/mannan.khan/32/2736_2.png) [@mannan.khan](https://community.retellai.com/u/mannan.khan)\
**Post date:** [September 22, 2026, 7:07am UTC](https://community.retellai.com/t/v3-gateway-transport-delivers-no-update-agent-start-talking-agent-stop-talking-events-to-the-browser-blocks-create-web-call-v2-migration/3654/6 "2026-09-22T07:07:50Z")

</div>

Hi @mark1 — thanks, but we’re now 8 days from the 30 Sep removal, and this is the second “checking with the team” on this thread (16 and 21 Sep), while #3648 has had the same answer since 15 Sep. We need something concrete now.

Why the timing is tight. Even once you confirm a fix, it isn’t instant on our side: we have to take the change, run a full QA cycle on UAT with live calls, and then ship through our release process. That is days of work after we hear from you — not hours. Every day without an answer eats into a window that is already very small.

What’s at stake. Retell web calls are live in our production workspace (plus pre-prod, staging and sandbox), serving enterprise customers. On 30 Sep we have exactly two outcomes and both are bad:

- Stay on v2 → calls stop connecting altogether once the endpoint is removed.
- Move to v3 → calls connect, but the browser gets none of the orchestrator events it received over LiveKit, so live turn-taking in our call UI degrades. We’ve already rebuilt the critical one (lifting the mic mute after the greeting) from raw audio analysis, but the “caller is speaking” state has no available signal at all on the gateway transport.

We cannot fix this on our side. The control data channel opens and stays empty — it’s a server-side relay only Retell can enable. No SDK version on either side restores those events under v3, and the monitor WebSocket isn’t a substitute (transcript text only, and browser auth needs a workspace-wide credential that can take over any call, as covered above).

So we need one of these, with a date attached:

1. A commitment that the gateway will relay update (turn-taking), agent\_start\_talking / agent\_stop\_talking and metadata to the web client, shipped with enough lead time for us to test before 30 Sep, or
2. An extension of the /v2/create-web-call removal for our workspaces until (1) ships and we’ve validated it.

If neither is possible, please say so plainly and we’ll plan around a degraded v3 — but we need to know now, not on 29 Sep.

Realistically we need an answer by 25 Sep to have any testing and release runway. Could you also tell us who owns this on the platform side, so it isn’t tracked only through the forum?

---

<div class="post-metadata">

**Author:** ![mark1](https://yyz2.discourse-cdn.com/flex008/user_avatar/community.retellai.com/mark1/32/2524_2.png) [@mark1](https://community.retellai.com/u/mark1)\
**Post date:** [September 22, 2026, 1:13pm UTC](https://community.retellai.com/t/v3-gateway-transport-delivers-no-update-agent-start-talking-agent-stop-talking-events-to-the-browser-blocks-create-web-call-v2-migration/3654/7 "2026-09-22T13:13:37Z")

</div>

Hey @mannan.khan

(a) No — the gateway doesn’t relay those events to the browser, and there’s no existing support for it. This would require changes to both the gateway and SDK, so we can’t provide a timeline.

(b) Not currently — the monitor socket only accepts a dashboard JWT, API key, or public key. I’m filing a feature request for per-call tokens, which would be more restrictive than a public key. No promises or ETA at this time.

Best regards.
