Crear Clave de API
Crea una nueva clave de API para acceso programático a la API de CallCov. La clave completa solo se muestra una vez durante la creación y no puede recuperarse después.
Endpoint
POST /api/v1/api-keys/
Autenticación
Requiere token JWT (autenticación Bearer).
Las claves de API solo pueden crearse usando autenticación JWT. No puedes crear una clave de API usando otra clave de API.
Request
Content-Type
application/json
Request Body
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
description | string | No | Descripción de para qué es esta clave (máx 500 caracteres) |
Ejemplo de Request
{
"description": "Clave de API de producción para integración de análisis de llamadas"
}
Response
Response Exitoso (201 Created)
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"api_key": "sk_live_abc123def456ghi789jkl012mno345pqr678stu901vwx234yz",
"key_prefix": "sk_live_abc123",
"description": "Clave de API de producción para integración de análisis de llamadas",
"created_at": "2024-01-15T10:30:00Z"
}
El valor de api_key solo se muestra una vez. Guárdalo inmediatamente en un lugar seguro. No vas a poder recuperarlo de nuevo.
Campos del Response
| Campo | Tipo | Descripción |
|---|---|---|
id | UUID | Identificador único de la clave de API |
api_key | string | Clave de API completa (¡se muestra solo una vez!) |
key_prefix | string | Primeros 14 caracteres de la clave (para identificación) |
description | string | Tu descripción |
created_at | datetime | Timestamp de creación (ISO 8601) |
Formato de Clave de API
Las claves de API siguen el formato: sk_{entorno}_{cadena_aleatoria}
sk= Secret Key (Clave Secreta)live= Entorno de produccióntest= Entorno de prueba (aún no implementado)- Cadena aleatoria = 48 caracteres
Ejemplo: sk_live_abc123def456ghi789jkl012mno345pqr678stu901vwx234yz
Límites
- Máximo 10 claves de API activas por usuario
- Para crear más, primero tienes que expirar las claves que no usas
Ejemplos
curl -X POST https://api.callcov.com/api/v1/api-keys/ \-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \-H "Content-Type: application/json" \-d '{ "description": "Clave de API de producción"}'Usando tu Clave de API
Después de crear una clave de API, usala para autenticación de API:
# En lugar del token JWT
curl https://api.callcov.com/api/v1/analysis/ \
-H "X-API-Key: sk_live_abc123def456..."
Errores
400 Bad Request
Se alcanzó el máximo de claves de API:
{
"detail": "Se alcanzó el número máximo de claves de API (10). Por favor expirar las claves sin usar."
}
401 Unauthorized
Token JWT inválido o faltante:
{
"detail": "No se pudieron validar las credenciales"
}
Mejores Prácticas de Seguridad
✅ HACER
- Guardar inmediatamente: Copia la clave a un administrador de contraseñas seguro
- Usar variables de entorno: Almacenar en archivos
.env(¡nunca hacer commit!) - Rotar regularmente: Crear nuevas claves periódicamente y expirar las viejas
- Usar nombres descriptivos: Ayuda a identificar qué integración usa qué clave
- Claves separadas por entorno: Claves diferentes para desarrollo, staging, producción
❌ NO HACER
- Nunca hacer commit a Git: Claves de API en código = brecha de seguridad
- Nunca compartir públicamente: No pegar en Slack, Discord, foros
- Nunca loguear en texto plano: Redactar claves en logs de aplicación
- Nunca embeber en código del cliente: Solo usar en backend/servidor
Ejemplo: Almacenamiento Seguro
Variable de Entorno (archivo .env)
# .env (¡agregar a .gitignore!)
CALLCOV_API_KEY=sk_live_abc123def456...
import os
from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv('CALLCOV_API_KEY')
AWS Secrets Manager
import boto3
import json
def get_api_key():
client = boto3.client('secretsmanager')
response = client.get_secret_value(SecretId='callcov/api-key')
return json.loads(response['SecretString'])['api_key']
api_key = get_api_key()
Organizando Múltiples Claves
Crea diferentes claves para diferentes propósitos:
# Desarrollo
description="Desarrollo - Pruebas Locales"
# Staging
description="Staging - Ambiente de QA"
# Producción
description="Producción - Aplicación Principal"
# CI/CD
description="CI/CD - Tests Automatizados"
Esto facilita:
- Identificar qué clave se está usando
- Expirar claves comprometidas sin afectar otras
- Rastrear uso por entorno
Qué Sucede Después de la Creación
- Clave completa devuelta: Guárdala inmediatamente
- Clave es hasheada: Solo el hash se almacena en la base de datos
- Prefijo guardado: Usado para identificación en la lista de claves
- Clave está activa: Puede usarse inmediatamente para requests de API
Ciclo de Vida de la Clave
Crear Clave → Usar para llamadas de API → Monitorear uso → Expirar cuando ya no se necesite
Relacionado
- Listar Claves de API - Ver todas tus claves de API
- Eliminar Clave de API - Expirar una clave de API
- Guía de Autenticación - Cómo usar claves de API
- Primer Request de API - Inicio rápido con clave de API