# Migrar llamadas web a v3

> ⚠️ **Fecha límite: 30 de septiembre de 2026.** Desde esa fecha, las integraciones que crean llamadas web con `/v2/create-web-call` pueden dejar de funcionar sin aviso. Las **llamadas telefónicas** (`/v2/create-phone-call`) y el resto de la API **no cambian**.

Esta guía es para quienes integraron llamadas web (el botón "hablar con el agente" en un sitio o app) con la API de Llamadas de Anunzi. Si usas el **widget de voz de Anunzi** (el código que se copia desde el panel), no tienes que hacer nada: ya está actualizado.

---

## Resumen de cambios

| | Antes (v2) | Ahora (v3) |
|---|---|---|
| Ruta | `POST /v2/create-web-call` | `POST /v3/create-web-call` |
| Cuerpo | `agent_id`, `metadata`, `retell_llm_dynamic_variables`… | **Igual** |
| Respuesta | Objeto completo de la llamada + `access_token` | Solo `call_id`, `access_token` y datos de conexión (`transport`, `url`, `ice_servers`) |
| Frontend | `startCall({ accessToken })` | `startCall({ accessToken, callId, transport, url, iceServers })` con el SDK v3 |
| Autenticación | API Key en `Authorization: Bearer` | **Igual**: tu API Key de Anunzi (`anz_live_…`) |

---

## Paso 1 — Backend: cambiar la ruta y devolver los datos de conexión

Cambia `v2` por `v3` en la URL. El cuerpo no cambia:

```bash
curl --request POST \
     --url https://calls.anunzi.net/v3/create-web-call \
     --header 'Authorization: Bearer anz_live_TU_API_KEY' \
     --header 'Content-Type: application/json' \
     --data '{ "agent_id": "agent_3f9c1a7b2e4d5c6f" }'
```

Tu backend tiene que devolverle al frontend **toda** la respuesta (no solo el token):

```json
{
  "call_id": "Kx2pYnWVmlR3eDsT1Qva59fHgJzLcAXb",
  "access_token": "eyJhbGciOi...",
  "transport": "gateway",
  "url": "wss://…",
  "ice_servers": [ { "urls": ["stun:…"] } ]
}
```

Si tu código leía otros campos de la respuesta de v2 (`call_status`, `agent_version`, `metadata`…), ahora obtenlos con [Obtener llamada](obtener-llamada.md) usando el `call_id`.

> ⚠️ La creación de la llamada va **siempre en tu servidor**. Nunca pongas la API Key en el código del navegador.

---

## Paso 2 — Frontend: usar el SDK v3 y pasarle los datos de conexión

Reemplaza el SDK de llamadas web que tengas instalado (la versión 2.x deja de funcionar el 18 de octubre de 2026) por el SDK de Anunzi, que se importa desde nuestro dominio:

```js
import { VoiceClient } from 'https://panel.anunzi.net/voice/web-sdk.php';
const client = new VoiceClient();
```

Y al iniciar la llamada, pasa todos los datos que devolvió tu backend:

```js
// Antes (v2)
await client.startCall({ accessToken: call.access_token });

// Ahora (v3)
await client.startCall({
  accessToken: call.access_token,
  callId:      call.call_id,
  transport:   call.transport,
  url:         call.url,
  iceServers:  call.ice_servers,
});
```

Los eventos (`call_started`, `call_ended`, `agent_start_talking`, `agent_stop_talking`, `error`) y `stopCall()` **no cambian**.

> ⚠️ El error más común al migrar: pasar solo el `accessToken`. Sin `transport` y los demás datos, el SDK usa otro tipo de conexión y la llamada **no conecta** (queda "conectando" o se corta al instante).

---

## Paso 3 — Probar

1. Abre tu página por **HTTPS** y permite el micrófono.
2. Inicia una llamada: debe dispararse `call_started` y deberías escuchar al agente.
3. Cuelga y consulta la llamada con [Obtener llamada](obtener-llamada.md): debe aparecer con su transcripción.

Si algo falla, abre la consola del navegador y revisa la respuesta de tu backend: tiene que incluir `transport`. Si necesitas ayuda, [contacta con soporte](../contacta-con-soporte.md) indicando el `call_id` y la hora de la prueba.

---

## Ejemplo completo

Ver [Crear llamada web](crear-llamada-web.md#unirse-a-la-llamada-desde-el-navegador) para un ejemplo completo de página con botón de llamar y colgar.
