Analiticas
La API de Analiticas proporciona metricas agregadas, datos de series temporales e histogramas de distribucion para tus operaciones de llamadas. Todos los endpoints de analiticas comparten un conjunto comun de parametros de filtro.
Parametros de Consulta Comunes
Cada endpoint de analiticas acepta estos parametros de consulta opcionales:
| Parametro | Tipo | Descripcion |
|---|---|---|
start_date | datetime | Filtrar llamadas desde esta marca de tiempo (ISO 8601) |
end_date | datetime | Filtrar llamadas hasta esta marca de tiempo (ISO 8601) |
agent_id | uuid | Filtrar por un agente especifico |
Ejemplo:
GET /analytics/overview?start_date=2026-02-01T00:00:00Z&end_date=2026-02-28T23:59:59Z&agent_id=550e8400-...
Resumen General
GET /analytics/overview
Estadisticas resumidas de todas las llamadas.
Respuesta
{
"total_calls": 1250,
"total_duration": 45230.5,
"avg_duration": 36.2,
"completed_calls": 1100,
"failed_calls": 50
}
| Campo | Tipo | Descripcion |
|---|---|---|
total_calls | integer | Numero total de llamadas |
total_duration | float | Suma de todas las duraciones de llamadas (segundos) |
avg_duration | float | Duracion promedio de llamada (segundos) |
completed_calls | integer | Llamadas con estado completed |
failed_calls | integer | Llamadas con estado failed |
Volumen de Llamadas
GET /analytics/call-volume
Serie temporal diaria del conteo de llamadas.
Respuesta
[
{ "date": "2026-02-01", "count": 45 },
{ "date": "2026-02-02", "count": 52 }
]
Latencia
GET /analytics/latency
Latencias promedio del pipeline y tendencia diaria. Las latencias se miden en milisegundos para cada etapa del pipeline: STT, LLM, TTS y la latencia total de extremo a extremo.
Respuesta
{
"avg_stt_latency_ms": 120.5,
"avg_llm_latency_ms": 450.2,
"avg_tts_latency_ms": 85.3,
"avg_total_latency_ms": 655.0,
"daily_trend": [
{
"date": "2026-02-01",
"stt_latency_ms": 115.0,
"llm_latency_ms": 440.0,
"tts_latency_ms": 80.0,
"total_latency_ms": 635.0
}
]
}
Resumen de Costos
GET /analytics/cost-overview
Metricas de costos agregadas. Si una llamada tiene un total_cost explicito registrado, se usa ese valor. De lo contrario, el costo se estima a partir de la duracion de la llamada.
Respuesta
{
"total_spend": 125.50,
"avg_cost_per_call": 0.10,
"stt_cost_total": 0.0,
"llm_cost_total": 0.0,
"tts_cost_total": 0.0
}
Tendencia de Costos
GET /analytics/cost-trend
Serie temporal diaria del costo total.
Respuesta
[
{ "date": "2026-02-01", "total_cost": 4.25 },
{ "date": "2026-02-02", "total_cost": 5.10 }
]
Costo por Agente
GET /analytics/cost-by-agent
Costo total agrupado por agente, ordenado por mayor costo primero.
Respuesta
[
{
"agent_id": "550e8400-...",
"agent_name": "Support Agent",
"total_cost": 75.00
},
{
"agent_id": "660e8400-...",
"agent_name": "Sales Agent",
"total_cost": 50.50
}
]
Distribucion de Duracion
GET /analytics/duration-distribution
Histograma de duraciones de llamadas en rangos predefinidos en segundos.
Respuesta
{
"buckets": [
{ "bucket": "0-30", "count": 200 },
{ "bucket": "30-60", "count": 350 },
{ "bucket": "60-120", "count": 400 },
{ "bucket": "120-300", "count": 250 },
{ "bucket": "300+", "count": 50 }
]
}
Distribucion de Latencia
GET /analytics/latency-distribution
Histograma de la latencia total de extremo a extremo en rangos basados en milisegundos.
Respuesta
{
"buckets": [
{ "bucket": "0-500", "count": 100 },
{ "bucket": "500-1000", "count": 500 },
{ "bucket": "1000-2000", "count": 400 },
{ "bucket": "2000-3000", "count": 150 },
{ "bucket": "3000+", "count": 50 }
]
}
Turnos de Conversacion
GET /analytics/conversation-turns
Numero promedio de turnos de conversacion (intercambios de ida y vuelta) por llamada, con tendencia diaria.
Respuesta
{
"avg_turns": 8.5,
"daily_trend": [
{ "date": "2026-02-01", "avg_turns": 7.2 },
{ "date": "2026-02-02", "avg_turns": 9.1 }
]
}
Barge-In
GET /analytics/barge-in
Tasa de barge-in (porcentaje de llamadas donde el llamante interrumpio al agente al menos una vez) y tendencia diaria.
Respuesta
{
"barge_in_rate": 0.35,
"daily_trend": [
{ "date": "2026-02-01", "barge_in_rate": 0.32 },
{ "date": "2026-02-02", "barge_in_rate": 0.38 }
]
}
La tasa es un decimal entre 0 y 1 (ej. 0.35 = 35% de las llamadas tuvieron barge-in).
Errores de Proveedor
GET /analytics/provider-errors
Conteo de errores y tasa de error por proveedor.
Respuesta
[
{
"provider_name": "deepgram",
"error_count": 3,
"total_calls": 500,
"error_rate": 0.006
}
]
Horas Pico
GET /analytics/peak-hours
Conteo de llamadas agrupado por dia de la semana y hora. Usa la convencion ISO de dias de la semana (0 = Lunes, 6 = Domingo).
Respuesta
[
{ "day_of_week": 0, "hour": 9, "count": 25 },
{ "day_of_week": 0, "hour": 10, "count": 42 },
{ "day_of_week": 1, "hour": 14, "count": 38 }
]
Resultados
GET /analytics/outcomes
Conteo de llamadas agrupado por resultado. Recurre a la agrupacion basada en estado para llamadas sin un campo de resultado explicito.
Respuesta
[
{ "outcome": "completed", "count": 800 },
{ "outcome": "voicemail", "count": 150 },
{ "outcome": "caller_hangup", "count": 100 },
{ "outcome": "failed", "count": 50 }
]
Comparacion de Agentes
GET /analytics/agent-comparison
Metricas de rendimiento comparativas para multiples agentes. Util para comparar configuraciones de agentes.
Parametros de Consulta Adicionales
| Parametro | Tipo | Descripcion |
|---|---|---|
agent_ids | string | UUIDs de agentes separados por comas para comparar |
Nota: Este endpoint usa agent_ids (separados por comas) en lugar del filtro estandar agent_id.
Respuesta
[
{
"agent_id": "550e8400-...",
"agent_name": "Support Agent",
"total_calls": 500,
"avg_duration": 45.2,
"completion_rate": 0.92,
"avg_stt_latency_ms": 115.0,
"avg_llm_latency_ms": 420.0,
"avg_tts_latency_ms": 80.0,
"avg_total_latency_ms": 615.0,
"avg_cost": 0.12,
"barge_in_rate": 0.30,
"avg_turns": 8.5,
"error_count": 5
}
]
| Campo | Tipo | Descripcion |
|---|---|---|
agent_id | uuid | ID del agente |
agent_name | string | Nombre visible del agente |
total_calls | integer | Numero de llamadas atendidas |
avg_duration | float | Duracion promedio de llamada (segundos) |
completion_rate | float | Proporcion de llamadas completadas respecto al total |
avg_stt_latency_ms | float | Latencia STT promedio (ms) |
avg_llm_latency_ms | float | Latencia LLM promedio (ms) |
avg_tts_latency_ms | float | Latencia TTS promedio (ms) |
avg_total_latency_ms | float | Latencia total promedio del pipeline (ms) |
avg_cost | float | Costo promedio por llamada |
barge_in_rate | float | Fraccion de llamadas con barge-in |
avg_turns | float | Turnos de conversacion promedio |
error_count | integer | Numero de llamadas con errores |
Eventos STT
GET /analytics/stt-events
Eventos del ciclo de vida de conexion STT por llamada. Registra cuando las conexiones STT se abren, cierran, rechazan o expiran.
Parametros de Consulta
| Parametro | Tipo | Descripcion |
|---|---|---|
call_sid | string | Filtrar por Twilio Call SID |
event_type | string | Filtrar por tipo de evento (ver abajo) |
start_date | datetime | Filtrar eventos desde esta marca de tiempo |
end_date | datetime | Filtrar eventos hasta esta marca de tiempo |
limit | integer | Resultados maximos (por defecto 100, maximo 500) |
Tipos de Evento
| Tipo | Descripcion |
|---|---|
connection_opened | Conexion WebSocket STT establecida |
connection_closed | Conexion STT cerrada normalmente |
connection_rejected | Conexion STT rechazada por el proveedor |
timeout | Timeout de conexion STT |
error | Error de conexion STT |
utterance_end_fallback | Recurrio a la deteccion de fin de enunciado |
Respuesta
[
{
"id": "...",
"call_sid": "CA1234567890abcdef",
"event_type": "connection_opened",
"provider_name": "deepgram",
"model": "nova-2",
"detail": { "language": "en" },
"created_at": "2026-03-01T14:30:00Z"
}
]
Resumen de Eventos STT
GET /analytics/stt-events/summary
Estadisticas agregadas de eventos STT en un rango de tiempo. Util para monitorear la salud de las conexiones STT.
Parametros de Consulta
| Parametro | Tipo | Descripcion |
|---|---|---|
start_date | datetime | Filtrar eventos desde esta marca de tiempo |
end_date | datetime | Filtrar eventos hasta esta marca de tiempo |
Respuesta
{
"total_events": 2500,
"connections_opened": 1200,
"connections_closed": 1180,
"connections_rejected": 15,
"timeouts": 5,
"errors": 3,
"utterance_end_fallbacks": 42,
"avg_connection_duration_s": 35.2,
"rejection_rate": 0.012,
"timeout_rate": 0.004
}
| Campo | Tipo | Descripcion |
|---|---|---|
total_events | integer | Total de eventos STT registrados |
connections_opened | integer | Aperturas de conexion exitosas |
connections_closed | integer | Cierres de conexion normales |
connections_rejected | integer | Conexiones rechazadas por el proveedor |
timeouts | integer | Timeouts de conexion |
errors | integer | Errores de conexion |
utterance_end_fallbacks | integer | Recurso a deteccion de fin de enunciado |
avg_connection_duration_s | float | null | Duracion promedio de conexion (segundos) |
rejection_rate | float | Rechazadas / (abiertas + rechazadas) |
timeout_rate | float | Timeouts / abiertas |