# Obtener llamada

**GET** `/v2/get-call/{call_id}`

Recupera el detalle completo de una llamada, incluyendo transcripción, grabación, análisis post-llamada y métricas de latencia.

---

## Parámetros de ruta

| Campo | Tipo | Requerido | Descripción |
|-------|------|-----------|-------------|
| `call_id` | string | Sí | ID de la llamada a consultar. Ejemplo: `119c3f8e47135a29e65947eeb34cf12d` |

---

## Respuesta — 200 OK

Devuelve el objeto completo de la llamada. Para llamadas telefónicas incluye `call_type: "phone_call"`, `from_number`, `to_number` y `direction`. Para llamadas web incluye `call_type: "web_call"` y `access_token`.

### Campos principales

| Campo | Tipo | Descripción |
|-------|------|-------------|
| `call_id` | string | Identificador único de la llamada. |
| `call_type` | string | `phone_call` o `web_call` |
| `agent_id` | string | ID del agente utilizado. |
| `agent_version` | integer | Versión del agente utilizado. |
| `call_status` | string | `registered` \| `not_connected` \| `ongoing` \| `ended` \| `error` |
| `direction` | string | `inbound` o `outbound` (solo para llamadas telefónicas) |
| `from_number` | string | Número de origen (solo para llamadas telefónicas). |
| `to_number` | string | Número de destino (solo para llamadas telefónicas). |
| `start_timestamp` | integer | Inicio de la llamada en milisegundos (epoch). |
| `end_timestamp` | integer | Fin de la llamada en milisegundos (epoch). |
| `duration_ms` | integer | Duración total en milisegundos. |
| `transcript` | string | Transcripción completa en texto plano. |
| `transcript_object` | array | Transcripción con marca de tiempo por utterance (ver estructura abajo). |
| `transcript_with_tool_calls` | array | Transcripción entrelazada con llamadas a herramientas. |
| `recording_url` | string | URL del audio WAV de la llamada. |
| `disconnection_reason` | string | Razón de desconexión. |
| `call_analysis` | object | Análisis post-llamada (ver estructura abajo). |
| `call_cost` | object | Costo de la llamada (ver estructura abajo). |
| `latency` | object | Métricas de latencia (ver estructura abajo). |
| `metadata` | object | Metadatos almacenados en la llamada. |

---

### Estructura: `transcript_object`

Array de objetos `Utterance`:

| Campo | Tipo | Descripción |
|-------|------|-------------|
| `role` | string | `agent` \| `user` \| `transfer_target` |
| `content` | string | Texto del turno de conversación. |
| `words` | array | Detalle palabra a palabra: `{ "word": string, "start": number, "end": number }` |

Tipos especiales de utterance:

| Tipo | Rol | Campos adicionales |
|------|-----|--------------------|
| Invocación de herramienta | `tool_call_invocation` | `tool_call_id`, `name`, `arguments` (JSON string) |
| Resultado de herramienta | `tool_call_result` | `tool_call_id`, `content`, `successful` (boolean) |
| Transición de nodo | `node_transition` | `former_node_id`, `former_node_name`, `new_node_id`, `new_node_name`, `transition_type` |
| DTMF | `dtmf` | `digit` (carácter: `"1"`, `"2"`, `"*"`, `"#"`, etc.) |

---

### Estructura: `call_analysis`

| Campo | Tipo | Descripción |
|-------|------|-------------|
| `call_summary` | string | Resumen narrativo de la llamada. |
| `call_successful` | boolean | Si la llamada alcanzó su objetivo. |
| `user_sentiment` | string | `Positive` \| `Neutral` \| `Negative` \| `Unknown` |
| `in_voicemail` | boolean | Si la llamada llegó a buzón de voz. |
| `custom_analysis_data` | object | Campos personalizados definidos en el agente. |

---

### Estructura: `latency`

Cada métrica (`e2e`, `asr`, `llm`, `tts`, etc.) contiene:

| Campo | Descripción |
|-------|-------------|
| `p50` | Percentil 50 en ms |
| `p90` | Percentil 90 en ms |
| `p95` | Percentil 95 en ms |
| `p99` | Percentil 99 en ms |
| `max` | Máximo en ms |
| `min` | Mínimo en ms |
| `num` | Número de mediciones |

---

### Estructura: `call_cost`

| Campo | Descripción |
|-------|-------------|
| `total_duration_seconds` | Duración total facturable en segundos. |
| `combined_cost` | Costo total en centavos de dólar. |
| `product_costs` | Array de costos por componente (transcripción, LLM, voz, etc.). |

---

## Ejemplo de solicitud

```bash
curl --request GET \
     --url https://calls.anunzi.net/v2/get-call/119c3f8e47135a29e65947eeb34cf12d \
     --header 'Authorization: Bearer TU_API_KEY'
```

---

## Ejemplo de respuesta (parcial)

```json
{
  "call_id": "119c3f8e47135a29e65947eeb34cf12d",
  "call_type": "phone_call",
  "agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",
  "call_status": "ended",
  "direction": "outbound",
  "from_number": "+14157774444",
  "to_number": "+12137774445",
  "start_timestamp": 1714500000000,
  "end_timestamp": 1714500180000,
  "duration_ms": 180000,
  "disconnection_reason": "user_hangup",
  "transcript": "Agente: Hola, ¿cómo estás?\nUsuario: Bien, gracias.",
  "call_analysis": {
    "call_summary": "El usuario confirmó interés en el producto.",
    "call_successful": true,
    "user_sentiment": "Positive"
  }
}
```

---

## Códigos de estado

| Código | Descripción |
|--------|-------------|
| `200` | Llamada encontrada y devuelta correctamente. |
| `400` | Formato de solicitud inválido. |
| `401` | API Key ausente o inválida. |
| `422` | La llamada no existe bajo tu API Key. |
| `500` | Error interno del servidor. |
