Saltar al contenido principal

Vista General de la API

La API de CallCov está organizada alrededor de principios REST. Usa URLs predecibles orientadas a recursos, acepta cuerpos de solicitud codificados en JSON, devuelve respuestas codificadas en JSON y usa códigos de respuesta HTTP estándar y autenticación.

URL Base

https://api.callcov.com/api/v1

Autenticación

La API de CallCov usa claves API o tokens JWT para autenticar solicitudes. Incluye tu clave en el encabezado Authorization:

Authorization: Bearer sk_live_abc123...

Aprende más en la Guía de Autenticación.

Formato de Solicitud

Todas las solicitudes POST, PUT y PATCH deben incluir un encabezado Content-Type:

Content-Type: application/json

Para subida de archivos, usa:

Content-Type: multipart/form-data

Formato de Respuesta

Todas las respuestas se devuelven en formato JSON con una estructura consistente:

{
"id": "550e8400-e29b-41d4-a716-446655440000",
"object": "analysis",
"created": 1642248000,
...
}

Códigos de Estado HTTP

CallCov usa códigos de respuesta HTTP convencionales:

CódigoSignificadoDescripción
200OKLa solicitud fue exitosa
201CreadoEl recurso se creó exitosamente
400Solicitud IncorrectaParámetros de solicitud inválidos
401No AutorizadoAutenticación inválida o faltante
403ProhibidoPermisos insuficientes
404No EncontradoEl recurso no existe
422Entidad No ProcesableError de validación
429Demasiadas SolicitudesLímite de tasa excedido
500Error Interno del ServidorError de servidor (contacta soporte)

Manejo de Errores

Los errores incluyen información detallada:

{
"detail": [
{
"type": "missing",
"loc": ["body", "audio_url"],
"msg": "Field required",
"input": {}
}
]
}

Aprende más en la Guía de Manejo de Errores.

Versionado

La versión de la API está incluida en la ruta de la URL:

/api/v1/analysis/

Mantendremos compatibilidad hacia atrás dentro de versiones principales. Cambios que rompan compatibilidad resultarán en una nueva versión (ej., /api/v2/).

Límites de Tasa

Los límites de tasa protegen nuestra infraestructura y aseguran uso justo:

  • Por defecto: 100 solicitudes por minuto
  • Envíos de análisis: 20 por minuto

Los encabezados de límite de tasa se incluyen en todas las respuestas:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1642248060

Paginación

Los endpoints de lista soportan paginación:

GET /api/v1/analysis/?skip=0&limit=20

Parámetros:

  • skip: Número de registros a saltar (por defecto: 0)
  • limit: Número máximo de registros a devolver (por defecto: 20, máx: 100)

Respuesta:

{
"items": [...],
"total": 150,
"skip": 0,
"limit": 20
}

Timestamps

Todos los timestamps son timestamps Unix (segundos desde epoch):

{
"created": 1642248000 // 15 de enero de 2022 10:00:00 UTC
}

Convierte en tu lenguaje de preferencia:

# Python
from datetime import datetime
dt = datetime.fromtimestamp(1642248000)
// JavaScript
const date = new Date(1642248000 * 1000);

Idempotencia

Para reintentar solicitudes de manera segura sin realizar la misma operación dos veces, incluye un encabezado Idempotency-Key:

Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000

Las claves de idempotencia son válidas por 24 horas.

Metadata

Muchos recursos aceptan metadata personalizada:

{
"audio_url": "https://ejemplo.com/llamada.wav",
"metadata": {
"campaign_id": "verano_2024",
"department": "ventas"
}
}

La metadata se devuelve sin cambios y puede usarse para tus propios propósitos de rastreo.

Webhooks

Para operaciones de larga duración como análisis, usa webhooks en lugar de polling:

{
"audio_url": "https://ejemplo.com/llamada.wav",
"webhook_url": "https://tu-app.com/webhooks/analysis"
}

Aprende más en la Guía de Webhooks.

Modo Prueba vs Modo Producción

Usa modo prueba para experimentar sin afectar datos de producción:

  • Claves API de Prueba: sk_test_...
  • Claves API de Producción: sk_live_...

El modo prueba usa la misma URL base pero no procesa cargos reales ni envía notificaciones reales.

Endpoints de la API

Autenticación

  • POST /auth/register - Crear cuenta
  • POST /auth/login - Obtener token de acceso
  • POST /auth/refresh - Refrescar token de acceso
  • POST /auth/verify-email - Verificar dirección de email
  • POST /auth/password-reset - Solicitar restablecimiento de contraseña
  • POST /auth/password-reset/confirm - Confirmar restablecimiento de contraseña

Gestión de Usuarios

  • GET /users/me - Obtener usuario actual
  • PUT /users/me - Actualizar usuario actual
  • DELETE /users/me - Eliminar cuenta

Claves API

  • POST /api-keys/ - Crear clave API
  • GET /api-keys/ - Listar claves API
  • DELETE /api-keys/{id} - Revocar clave API

Análisis (Principal)

  • POST /analysis/ - Enviar análisis
  • GET /analysis/{id} - Obtener análisis
  • GET /analysis/ - Listar análisis
  • POST /analysis/{id}/webhook - Registrar webhook

Facturación

  • GET /billing/subscription - Obtener suscripción
  • POST /billing/subscription - Crear suscripción
  • POST /billing/subscription/update - Actualizar plan
  • POST /billing/subscription/cancel - Cancelar suscripción
  • GET /billing/usage - Obtener resumen de uso
  • GET /billing/history - Obtener historial de uso
  • GET /billing/customer-portal - Portal de cliente Stripe

SDKs

Los SDKs oficiales estarán disponibles pronto para:

  • Python
  • Node.js
  • Ruby
  • PHP

Mientras tanto, la API funciona genial con librerías HTTP estándar como requests (Python) o axios (Node.js).

Soporte