# Crear llamada web

**POST** `/v2/create-web-call`

Crea una llamada de voz que se realiza directamente desde el navegador, sin necesidad de un número de teléfono. La respuesta incluye un `access_token` que debes pasar al frontend para que el usuario pueda unirse a la llamada.

***

## Parámetros del cuerpo

### Requeridos

| Campo      | Tipo   | Descripción                                                                               |
| ---------- | ------ | ----------------------------------------------------------------------------------------- |
| `agent_id` | string | ID único del agente que conducirá la llamada. Ejemplo: `oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD` |

### Opcionales

| Campo                          | Tipo    | Descripción                                                                                                                                                 |
| ------------------------------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `agent_version`                | integer | Versión específica del agente a utilizar. Por defecto usa la versión más reciente.                                                                          |
| `agent_override`               | object  | Sobreescribe parámetros del agente para esta llamada únicamente. Contiene sub-objetos `agent`, `retell_llm` y `conversation_flow`.                          |
| `metadata`                     | object  | Objeto libre para almacenar información adicional. No es procesado por el sistema. Recuperable desde el objeto de llamada.                                  |
| `retell_llm_dynamic_variables` | object  | Pares clave-valor inyectados en el prompt del agente durante la llamada. Solo aplica para agentes con Response Engine. Ejemplo: `{"nombre_cliente": "Ana"}` |
| `current_node_id`              | string  | Nodo del flujo de conversación desde donde debe comenzar la llamada. Solo aplica para agentes con Conversation Flow. Ejemplo: `recopilar_informacion`       |
| `current_state`                | string  | Estado inicial de la conversación. Debe ser un estado válido definido en el LLM del agente. Ejemplo: `presentacion`                                         |

***

## Respuesta — 201 Created

Devuelve el objeto de llamada web con todos los campos base más el token de acceso.

### Campos del objeto de llamada

| Campo                  | Tipo    | Descripción                                                                                      |
| ---------------------- | ------- | ------------------------------------------------------------------------------------------------ |
| `call_id`              | string  | Identificador único de la llamada.                                                               |
| `call_type`            | string  | Siempre `web_call` para llamadas web.                                                            |
| `access_token`         | string  | **Token para unirse a la llamada desde el frontend.** Debes pasarlo al SDK de voz en el cliente. |
| `agent_id`             | string  | ID del agente utilizado.                                                                         |
| `agent_version`        | integer | Versión del agente utilizado.                                                                    |
| `call_status`          | string  | Estado actual: `registered` \| `ongoing` \| `ended` \| `error`                                   |
| `start_timestamp`      | integer | Marca de tiempo de inicio en milisegundos (epoch).                                               |
| `end_timestamp`        | integer | Marca de tiempo de fin en milisegundos (epoch).                                                  |
| `duration_ms`          | integer | Duración total en milisegundos.                                                                  |
| `transcript`           | string  | Transcripción completa (disponible tras el fin de la llamada).                                   |
| `recording_url`        | string  | URL del audio de la llamada en formato WAV.                                                      |
| `disconnection_reason` | string  | Razón de desconexión.                                                                            |
| `call_analysis`        | object  | Análisis post-llamada: `call_summary`, `call_successful`, `user_sentiment`.                      |
| `metadata`             | object  | Metadatos enviados al crear la llamada.                                                          |
| `latency`              | object  | Métricas de latencia (e2e, asr, llm, tts).                                                       |

***

## Ejemplo de solicitud

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

Con variables dinámicas:

```bash
curl --request POST \
     --url https://calls.anunzi.net/v2/create-web-call \
     --header 'Authorization: Bearer TU_API_KEY' \
     --header 'Content-Type: application/json' \
     --data '{
  "agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",
  "retell_llm_dynamic_variables": {
    "nombre_usuario": "Carlos",
    "plan_actual": "Básico"
  },
  "metadata": {
    "session_id": "web-9923"
  }
}'
```

***

## Ejemplo de respuesta

```json
{
  "call_id": "Kx2pYnWVmlR3eDsT1Qva59fHgJzLcAXb",
  "call_type": "web_call",
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",
  "agent_version": 1,
  "call_status": "registered"
}
```

***

## Códigos de estado

| Código | Descripción                                             |
| ------ | ------------------------------------------------------- |
| `201`  | Llamada web creada correctamente.                       |
| `400`  | Formato de solicitud inválido. Verifica los parámetros. |
| `401`  | API Key ausente o inválida.                             |
| `402`  | Período de prueba vencido.                              |
| `422`  | El agente solicitado no existe bajo tu API Key.         |
| `429`  | Límite de solicitudes alcanzado.                        |
| `500`  | Error interno del servidor.                             |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://doc.anunzi.net/api-calls/crear-llamada-web.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
