Saltar al contenido principal

Listar Análisis

Obtiene una lista de todos los análisis de tu cuenta. Soporta filtrado, búsqueda y paginación.

Endpoint​

GET /api/v1/analysis/

Autenticación​

Requiere clave de API o token JWT.

MétodoHeaderEjemplo
Clave de APIX-API-Key: {api_key}X-API-Key: sk_live_abc123...
Token JWTAuthorization: Bearer {token}Authorization: Bearer eyJhbGc...
Endpoint Gratuito

Listar análisis es gratuito - no cuenta contra tus límites de uso.

Parámetros de Query​

ParámetroTipoRequeridoDefaultDescripción
status_filterstringNo-Filtrar por estado: processing, completed, o failed
agent_idstringNo-Filtrar por ID de agente específico
contact_idstringNo-Filtrar por ID de contacto específico
searchstringNo-Buscar en agent_id y contact_id (sin distinción de mayúsculas)
limitintegerNo100Número máximo de resultados a devolver (1-1000)
offsetintegerNo0Número de resultados a omitir (para paginación)

Ejemplos de Filtros​

# Obtener solo análisis completados
?status_filter=completed

# Obtener todos los análisis de un agente específico
?agent_id=agent_001

# Obtener todos los análisis de un contacto específico
?contact_id=customer_12345

# Buscar análisis que contengan "agent_001"
?search=agent_001

# Combinar filtros
?status_filter=completed&agent_id=agent_001&limit=50

Response​

Devuelve un objeto AnalysisList conteniendo un array de análisis y metadata de paginación.

Response Exitoso (200 OK)​

{
"object": "list",
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"object": "analysis",
"created": 1705334400,
"status": "completed",
"livemode": false,
"call": {
"agent_id": "agent_001",
"contact_id": "customer_12345",
"duration_ms": 125500,
"duration_seconds": 125.5
},
"audio": {
"url": "https://s3.amazonaws.com/callcov-audio/...",
"size_bytes": 1048576,
"format": "wav",
"duration_seconds": 125.5
},
"transcript": {
"text": "Transcripción completa...",
"segments": [...],
"language": "en"
},
"results": {
"compliance": {...},
"quality": {...},
"summary": "..."
},
"metadata": {
"webhook_url": "https://your-app.com/webhooks/analysis",
"completed_at": "2024-01-15T14:32:15.123Z",
"processing_time_ms": 45230,
"error_message": null
}
},
{
"id": "660f9511-f3ac-52e5-b827-557766551111",
"object": "analysis",
"created": 1705330800,
"status": "processing",
"livemode": false,
"call": {
"agent_id": "agent_002",
"contact_id": "customer_67890",
"duration_ms": 98200,
"duration_seconds": 98.2
},
"audio": {
"url": "https://s3.amazonaws.com/callcov-audio/...",
"size_bytes": 823456,
"format": "mp3",
"duration_seconds": 98.2
},
"transcript": null,
"results": null,
"metadata": {
"webhook_url": null,
"completed_at": null,
"processing_time_ms": null,
"error_message": null
}
}
],
"has_more": true,
"total": 247
}

Campos del Response​

CampoTipoDescripción
objectstringSiempre "list"
dataarrayArray de objetos AnalysisResponse
has_morebooleanSi hay más resultados disponibles
totalintegerNúmero total de análisis que coinciden con los filtros

Paginación​

Los resultados se devuelven en orden cronológico inverso (más nuevos primero) por fecha de creación.

Paginación Básica​

import requests

url = "https://api.callcov.com/api/v1/analysis/"
headers = {"X-API-Key": "sk_live_abc123..."}

# Obtener primera página (análisis 0-99)
response = requests.get(url, headers=headers, params={
"limit": 100,
"offset": 0
})

# Obtener segunda página (análisis 100-199)
response = requests.get(url, headers=headers, params={
"limit": 100,
"offset": 100
})

Iterar por Todas las Páginas​

import requests

def get_all_analyses(api_key, status_filter=None):
"""
Obtener todos los análisis en todas las páginas.

Args:
api_key: Tu clave de API
status_filter: Filtro de estado opcional

Returns:
Lista de todos los análisis
"""
url = "https://api.callcov.com/api/v1/analysis/"
headers = {"X-API-Key": api_key}

all_analyses = []
offset = 0
limit = 100

while True:
params = {"limit": limit, "offset": offset}
if status_filter:
params["status_filter"] = status_filter

response = requests.get(url, headers=headers, params=params)
data = response.json()

all_analyses.extend(data['data'])

if not data['has_more']:
break

offset += limit

return all_analyses

# Uso
completed_analyses = get_all_analyses(
api_key="sk_live_abc123...",
status_filter="completed"
)
print(f"Total de análisis completados: {len(completed_analyses)}")

Ejemplos​

# Obtener todos los análisis
curl "https://api.callcov.com/api/v1/analysis/" \
-H "X-API-Key: sk_live_abc123..."
# Obtener solo análisis completados
curl "https://api.callcov.com/api/v1/analysis/?status_filter=completed" \
-H "X-API-Key: sk_live_abc123..."
# Filtrar por agente
curl "https://api.callcov.com/api/v1/analysis/?agent_id=agent_001" \
-H "X-API-Key: sk_live_abc123..."
# Búsqueda con paginación
curl "https://api.callcov.com/api/v1/analysis/?search=customer&limit=50&offset=0" \
-H "X-API-Key: sk_live_abc123..."

Ejemplos de Filtrado​

Obtener Análisis Completados Recientes​

import requests

url = "https://api.callcov.com/api/v1/analysis/"
headers = {"X-API-Key": "sk_live_abc123..."}

response = requests.get(url, headers=headers, params={
"status_filter": "completed",
"limit": 10 # Últimos 10 completados
})

analyses = response.json()['data']
for analysis in analyses:
quality_score = analysis['results']['quality']['overall_score']
print(f"{analysis['call']['contact_id']}: {quality_score}")

Obtener Todos los Análisis de un Agente​

def get_agent_analyses(api_key, agent_id):
"""Obtener todos los análisis de un agente específico"""
url = "https://api.callcov.com/api/v1/analysis/"
headers = {"X-API-Key": api_key}

response = requests.get(url, headers=headers, params={
"agent_id": agent_id,
"limit": 1000 # Ajustar según sea necesario
})

data = response.json()
return data['data'], data['total']

analyses, total = get_agent_analyses("sk_live_abc123...", "agent_001")
print(f"El agente agent_001 tiene {total} análisis en total")

Buscar en Análisis​

# Buscar análisis que contengan "customer_123"
response = requests.get(url, headers=headers, params={
"search": "customer_123"
})

# Esto busca tanto en agent_id COMO en contact_id

Obtener Análisis Fallidos para Debugging​

response = requests.get(url, headers=headers, params={
"status_filter": "failed",
"limit": 50
})

failed_analyses = response.json()['data']
for analysis in failed_analyses:
error = analysis['metadata']['error_message']
print(f"Análisis {analysis['id']} falló: {error}")

Consejos de Rendimiento​

  1. Usar Filtros: Filtrar por estado o agent_id para reducir el tamaño del conjunto de resultados
  2. Limitar Resultados: Solicitar solo el número de resultados que necesitas
  3. Cachear Resultados: Cachear los resultados de lista para evitar llamadas de API repetidas
  4. Usar Webhooks: En lugar de hacer polling al endpoint de lista para nuevas completaciones, usar webhooks

Errores​

401 Unauthorized​

Autenticación inválida o faltante:

{
"detail": "Credenciales de autenticación inválidas"
}

422 Validation Error​

Valores de parámetros inválidos:

{
"detail": [
{
"loc": ["query", "limit"],
"msg": "asegurar que este valor sea menor o igual a 1000",
"type": "value_error.number.not_le"
}
]
}

Casos de Uso Comunes​

Dashboard: Mostrar Actividad Reciente​

# Obtener los últimos 20 análisis para el dashboard
response = requests.get(url, headers=headers, params={"limit": 20})
recent = response.json()['data']

Analítica: Calcular Puntaje de Calidad Promedio​

# Obtener todos los análisis completados
all_analyses = get_all_analyses(
api_key="sk_live_abc123...",
status_filter="completed"
)

# Calcular puntaje de calidad promedio
total_score = sum(
a['results']['quality']['overall_score']
for a in all_analyses
if a['results']
)
avg_score = total_score / len(all_analyses)
print(f"Puntaje de calidad promedio: {avg_score:.2f}")

Reporte de Rendimiento de Agente​

# Obtener todos los análisis completados de un agente específico
response = requests.get(url, headers=headers, params={
"agent_id": "agent_001",
"status_filter": "completed"
})

agent_analyses = response.json()['data']

# Calcular métricas
total_calls = len(agent_analyses)
avg_quality = sum(a['results']['quality']['overall_score'] for a in agent_analyses) / total_calls
avg_compliance = sum(a['results']['compliance']['score'] for a in agent_analyses) / total_calls

print(f"Reporte del Agente agent_001:")
print(f" Total de llamadas: {total_calls}")
print(f" Calidad promedio: {avg_quality:.2f}")
print(f" Cumplimiento promedio: {avg_compliance:.2f}")

Seguridad​

  • Aislamiento de Usuarios: Solo puedes listar análisis que pertenecen a tu cuenta
  • Alcance de Clave de API: Las claves de API tienen alcance a tu cuenta de usuario
  • Sin Acceso entre Cuentas: No se pueden ver análisis de otros usuarios

Relacionado​