# Obtener agente

**GET** `/get-agent/{agent_id}`

Recupera la configuración completa de un agente de voz: voz, idioma, comportamiento, webhooks, análisis post-llamada, privacidad y más.

---

## Parámetros de ruta

| Campo | Tipo | Requerido | Descripción |
|-------|------|-----------|-------------|
| `agent_id` | string | Sí | ID único del agente. Ejemplo: `16b980523634a6dc504898cda492e939` |

## Parámetros de consulta (query)

| Campo | Tipo | Requerido | Descripción |
|-------|------|-----------|-------------|
| `version` | integer | No | Versión específica del agente. Por defecto devuelve la más reciente. |

---

## Respuesta — 200 OK

Devuelve el objeto `AgentResponse` con la configuración completa del agente.

---

### Identificación

| Campo | Tipo | Descripción |
|-------|------|-------------|
| `agent_id` | string | Identificador único del agente. |
| `agent_name` | string | Nombre del agente. Ejemplo: `Asistente de Ventas` |
| `version` | integer | Versión actual del agente. |
| `version_description` | string | Descripción de esta versión. |
| `last_modification_timestamp` | integer | Última modificación en milisegundos (epoch). |
| `is_published` | boolean | Si el agente está publicado. |
| `is_public` | boolean | Si el agente tiene enlace de preview público habilitado. |
| `timezone` | string | Zona horaria del agente en formato IANA. Ejemplo: `America/Mexico_City` |

---

### Motor de respuesta (`response_engine`)

| Tipo | Campos |
|------|--------|
| `anunzi-llm` | `type: "anunzi-llm"`, `llm_id` (string), `version` (number) |
| `custom-llm` | `type: "custom-llm"`, `llm_websocket_url` (string) |
| `conversation-flow` | `type: "conversation-flow"`, `conversation_flow_id` (string), `version` (number) |

---

### Voz y audio

| Campo | Tipo | Descripción |
|-------|------|-------------|
| `voice_id` | string | ID de la voz asignada al agente. |
| `voice_model` | string | Modelo TTS utilizado. Opciones: `eleven_turbo_v2`, `eleven_flash_v2_5`, `eleven_multilingual_v2`, `sonic-3`, `gpt-4o-mini-tts`, entre otros. |
| `voice_temperature` | number | Control de estabilidad de voz. Rango: 0–2. Predeterminado: `1` |
| `voice_speed` | number | Velocidad de la voz. Rango: 0.5–2. Predeterminado: `1` |
| `volume` | number | Volumen. Rango: 0–2. Predeterminado: `1` |
| `voice_emotion` | string | Emoción de la voz: `calm` \| `happy` \| `sad` \| `angry` \| `sympathetic` \| `fearful` \| `surprised` |
| `enable_dynamic_voice_speed` | boolean | Ajusta la velocidad de voz dinámicamente según el ritmo del usuario. |
| `fallback_voice_ids` | array | Voces de respaldo en caso de indisponibilidad del proveedor TTS principal. |
| `ambient_sound` | string | Sonido ambiente: `coffee-shop` \| `convention-hall` \| `summer-outdoor` \| `mountain-outdoor` \| `static-noise` \| `call-center` |
| `ambient_sound_volume` | number | Volumen del sonido ambiente. Rango: 0–2. |

---

### Comportamiento e interacción

| Campo | Tipo | Descripción |
|-------|------|-------------|
| `responsiveness` | number | Velocidad de respuesta del agente. Rango: 0–1. |
| `interruption_sensitivity` | number | Sensibilidad a interrupciones del usuario. Rango: 0–1. |
| `enable_backchannel` | boolean | El agente intercala frases breves ("aja", "entiendo") mientras el usuario habla. |
| `backchannel_frequency` | number | Frecuencia de backchanneling cuando está habilitado. Rango: 0–1. |
| `reminder_trigger_ms` | number | Milisegundos de silencio del usuario tras hablar el agente para enviar recordatorio. |
| `reminder_max_count` | integer | Máximo de recordatorios enviados al usuario sin respuesta. |
| `enable_dynamic_responsiveness` | boolean | Ajusta la velocidad de respuesta dinámicamente. |

---

### Idioma y transcripción

| Campo | Tipo | Descripción |
|-------|------|-------------|
| `language` | string o array | Idioma(s) del agente. Ejemplo: `"es-419"` (español latinoamericano), o array `["es-419", "en-US"]` |
| `boosted_keywords` | array | Palabras clave para sesgar el reconocimiento de voz. Ejemplo: `["Anunzi", "CRM"]` |
| `stt_mode` | string | Modo de transcripción: `fast` \| `accurate` \| `custom` |
| `vocab_specialization` | string | Vocabulario especializado: `general` \| `medical` |
| `denoising_mode` | string | Cancelación de ruido: `no-denoise` \| `noise-cancellation` \| `noise-and-background-speech-cancellation` |
| `pronunciation_dictionary` | array | Diccionario de pronunciación personalizada. Cada entrada: `word`, `alphabet` (`ipa` \| `cmu`), `phoneme`. |

---

### Control de llamada

| Campo | Tipo | Descripción |
|-------|------|-------------|
| `end_call_after_silence_ms` | integer | Finaliza la llamada si el usuario no responde luego de este tiempo (ms). |
| `max_call_duration_ms` | integer | Duración máxima de la llamada en milisegundos. |
| `ring_duration_ms` | integer | Tiempo máximo de timbre antes de timeout. Rango: 5000–300000 ms. |
| `begin_message_delay_ms` | integer | Demora en ms antes de que el agente envíe el primer mensaje. |

---

### Webhooks

| Campo | Tipo | Descripción |
|-------|------|-------------|
| `webhook_url` | string | URL que recibe los eventos de la llamada. |
| `webhook_events` | array | Eventos a recibir: `call_started` \| `call_ended` \| `call_analyzed` \| `transcript_updated` \| `transfer_started` \| `transfer_bridged` \| `transfer_cancelled` \| `transfer_ended` |
| `webhook_timeout_ms` | integer | Tiempo máximo de espera para la respuesta del webhook (ms). |

---

### Buzón de voz e IVR

| Campo | Tipo | Descripción |
|-------|------|-------------|
| `voicemail_message` | string | Mensaje que se reproduce al detectar buzón de voz. |
| `voicemail_detection_timeout_ms` | integer | Tiempo máximo para ejecutar la detección de buzón de voz (ms). |
| `voicemail_option` | object | Acción al detectar buzón: colgar (`hangup`), mensaje estático (`static_text`), o transferir (`bridge_transfer`). |
| `ivr_option` | object | Acción al detectar un IVR. |

---

### Análisis post-llamada

| Campo | Tipo | Descripción |
|-------|------|-------------|
| `post_call_analysis_data` | array | Esquema de campos personalizados a extraer del análisis. Tipos: `string`, `enum`, `boolean`, `number`, `system-presets`. |
| `post_call_analysis_model` | string | Modelo de IA para el análisis. Opciones: `gpt-4.1`, `gpt-4.1-mini`, `claude-4.6-sonnet`, `gemini-2.5-flash`, entre otros. |
| `analysis_successful_prompt` | string | Prompt para determinar si la llamada fue exitosa (máx. 2000 caracteres). |
| `analysis_summary_prompt` | string | Prompt para guiar la generación del resumen (máx. 2000 caracteres). |
| `analysis_user_sentiment_prompt` | string | Prompt para determinar el sentimiento del usuario. |

---

### Privacidad y almacenamiento

| Campo | Tipo | Descripción |
|-------|------|-------------|
| `data_storage_setting` | string | `everything` \| `everything_except_pii` \| `basic_attributes_only` |
| `data_storage_retention_days` | integer | Días antes de eliminar automáticamente los datos. Rango: 1–730. |
| `opt_in_signed_url` | boolean | Habilitar URLs firmadas para grabaciones y logs públicos. |
| `signed_url_expiration_ms` | integer | Expiración de URLs firmadas en milisegundos. |
| `pii_config` | object | Configuración de detección y eliminación de PII. Categorías: nombre, dirección, email, teléfono, número de seguro social, pasaporte, licencia, tarjeta de crédito, cuenta bancaria, contraseña, PIN, ID médico, fecha de nacimiento, número de cuenta. |

---

## Ejemplo de solicitud

```bash
curl --request GET \
     --url https://calls.anunzi.net/get-agent/16b980523634a6dc504898cda492e939 \
     --header 'Authorization: Bearer TU_API_KEY'
```

Con versión específica:

```bash
curl --request GET \
     --url 'https://calls.anunzi.net/get-agent/16b980523634a6dc504898cda492e939?version=2' \
     --header 'Authorization: Bearer TU_API_KEY'
```

---

## Ejemplo de respuesta (parcial)

```json
{
  "agent_id": "16b980523634a6dc504898cda492e939",
  "agent_name": "Asistente de Ventas",
  "version": 3,
  "voice_id": "es-female-premium",
  "language": "es-419",
  "responsiveness": 0.8,
  "response_engine": {
    "type": "anunzi-llm",
    "llm_id": "llm_abc123"
  },
  "webhook_url": "https://tuapp.com/webhook/anunzi",
  "webhook_events": ["call_started", "call_ended", "call_analyzed"],
  "data_storage_setting": "everything",
  "is_published": true,
  "last_modification_timestamp": 1714500000000
}
```

---

## Códigos de estado

| Código | Descripción |
|--------|-------------|
| `200` | Agente encontrado y devuelto correctamente. |
| `400` | Formato de solicitud inválido. |
| `401` | API Key ausente o inválida. |
| `422` | El agente no existe bajo tu API Key. |
| `500` | Error interno del servidor. |
