Autenticación
CallCov soporta dos métodos de autenticación: Claves API (recomendadas para servidor a servidor) y Tokens JWT (para aplicaciones basadas en usuarios).
Autenticación con Clave API
Las claves API son el método recomendado para integraciones backend. Son simples, seguras y no expiran.
Creando una Clave API
curl -X POST https://api.callcov.com/api/v1/api-keys/ \
-H "Authorization: Bearer TU_TOKEN_DE_ACCESO" \
-H "Content-Type: application/json" \
-d '{
"name": "Clave de Servidor de Producción"
}'
Usando una Clave API
Incluye tu clave API en el encabezado Authorization con el esquema Bearer:
curl -X GET https://api.callcov.com/api/v1/analysis/ \
-H "Authorization: Bearer sk_live_abc123..."
Formato de Clave API
- Prefijo:
sk_live_para producción,sk_test_para modo prueba - Almacenamiento: Guarda de manera segura en variables de entorno, nunca en código
- Rotación: Rota las claves regularmente por seguridad
Guarda las claves API en variables de entorno:
export CALLCOV_API_KEY="sk_live_abc123..."
Autenticación con Token JWT
Los tokens JWT son ideales para aplicaciones de cara al usuario donde necesitas permisos específicos de usuario.
Flujo de Login
curl -X POST https://api.callcov.com/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "usuario@ejemplo.com",
"password": "ContraseñaSegura123!"
}'
Respuesta:
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "bearer",
"expires_in": 1800
}
Usando Tokens JWT
curl -X GET https://api.callcov.com/api/v1/users/me \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
Expiración de Tokens
- Access Token: Expira en 30 minutos
- Refresh Token: Expira en 7 días
Refrescando Tokens
Cuando tu token de acceso expire, usa el refresh token para obtener uno nuevo:
curl -X POST https://api.callcov.com/api/v1/auth/refresh \
-H "Content-Type: application/json" \
-d '{
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}'
Mejores Prácticas de Seguridad
1. Usa Solo HTTPS
Todas las solicitudes API deben usar HTTPS. Las solicitudes HTTP serán rechazadas.
2. Protege tus Claves
# ✅ Bien: Variable de entorno
export CALLCOV_API_KEY="sk_live_abc123..."
# ❌ Mal: Hardcodeado en código
api_key = "sk_live_abc123..." # ¡Nunca hagas esto!
3. Rota Claves Regularmente
Crea nuevas claves API y revoca las antiguas cada 90 días.
4. Usa Diferentes Claves para Diferentes Entornos
# Desarrollo
sk_test_dev_abc123...
# Staging
sk_test_staging_def456...
# Producción
sk_live_prod_ghi789...
5. Implementa Lógica de Refresco de Token
No esperes errores 401. Refresca de manera proactiva:
import requests
from datetime import datetime, timedelta
class CallCovClient:
def __init__(self, email, password):
self.email = email
self.password = password
self.access_token = None
self.refresh_token = None
self.token_expires = None
self.login()
def login(self):
response = requests.post(
'https://api.callcov.com/api/v1/auth/login',
json={'email': self.email, 'password': self.password}
)
data = response.json()
self.access_token = data['access_token']
self.refresh_token = data['refresh_token']
self.token_expires = datetime.now() + timedelta(seconds=data['expires_in'])
def ensure_valid_token(self):
# Refrescar 5 minutos antes de expiración
if datetime.now() >= self.token_expires - timedelta(minutes=5):
self.refresh()
def refresh(self):
response = requests.post(
'https://api.callcov.com/api/v1/auth/refresh',
json={'refresh_token': self.refresh_token}
)
data = response.json()
self.access_token = data['access_token']
self.token_expires = datetime.now() + timedelta(seconds=data['expires_in'])
def make_request(self, method, endpoint, **kwargs):
self.ensure_valid_token()
headers = kwargs.get('headers', {})
headers['Authorization'] = f'Bearer {self.access_token}'
kwargs['headers'] = headers
return requests.request(method, f'https://api.callcov.com{endpoint}', **kwargs)
Revocando Acceso
Revocar Claves API
curl -X DELETE https://api.callcov.com/api/v1/api-keys/{key_id} \
-H "Authorization: Bearer TU_TOKEN_DE_ACCESO"
Cerrar Sesión (Invalidar Tokens)
Los tokens JWT no pueden ser revocados del lado del servidor pero expirarán automáticamente. Para cerrar sesión inmediatamente, elimina los tokens del lado del cliente.
Errores de Autenticación
| Código de Estado | Error | Solución |
|---|---|---|
| 401 | Token inválido o faltante | Incluye un encabezado Authorization válido |
| 401 | Token expirado | Refresca tu token de acceso |
| 403 | Permisos insuficientes | Verifica los permisos de tu cuenta |