Autenticación
La API de Zelta Meet utiliza claves API (API keys) asociadas a cada workspace para autenticación. Cada workspace puede generar y revocar sus propias claves de forma independiente.
URL base
https://api.zelta.dev/meet/v1Todas las peticiones a la API deben usar esta URL como base.
Claves API del workspace
Cada workspace gestiona sus propias claves API. Solo los roles Owner y Admin pueden generar o revocar claves.
Generar una clave API
- Ve a Workspace > Configuración > API.
- Haz clic en Generar clave API.
- Asigna un nombre descriptivo (ej:
integracion-slack,backend-produccion). - Selecciona los permisos (scopes) de la clave.
- Copia la clave generada inmediatamente.
WARNING
La clave API solo se muestra una vez al momento de generarla. Si la pierdes, deberás revocarla y generar una nueva.
Revocar una clave API
- Ve a Workspace > Configuración > API.
- Localiza la clave que deseas revocar.
- Haz clic en Revocar.
- Confirma la acción. La clave deja de funcionar inmediatamente.
Usar la clave API
Incluye la clave en el header Authorization con el esquema Bearer en todas tus peticiones:
curl -H "Authorization: Bearer zm_live_abc123def456" \
https://api.zelta.dev/meet/v1/roomsEjemplo en diferentes lenguajes
JavaScript (fetch):
const response = await fetch('https://api.zelta.dev/meet/v1/rooms', {
headers: {
'Authorization': 'Bearer zm_live_abc123def456',
'Content-Type': 'application/json'
}
});
const data = await response.json();Python (requests):
import requests
headers = {
'Authorization': 'Bearer zm_live_abc123def456',
'Content-Type': 'application/json'
}
response = requests.get(
'https://api.zelta.dev/meet/v1/rooms',
headers=headers
)
data = response.json()Permisos (Scopes)
Cada clave API puede tener permisos granulares:
| Scope | Descripción |
|---|---|
meet:rooms:read | Consultar salas del workspace |
meet:rooms:write | Crear, modificar y eliminar salas |
meet:meetings:read | Consultar reuniones activas y pasadas |
meet:meetings:write | Iniciar y finalizar reuniones |
meet:recordings:read | Consultar y descargar grabaciones |
meet:recordings:write | Eliminar grabaciones |
meet:members:read | Consultar miembros del workspace |
meet:members:write | Invitar y remover miembros |
meet:integrations | Gestionar integraciones (Google Calendar, Slack) |
meet:admin | Acceso completo a todas las operaciones |
TIP
Aplica el principio de mínimo privilegio: otorga a cada clave solo los permisos que realmente necesita. Una clave para consultar grabaciones no necesita meet:rooms:write.
Seguimiento de uso
Zelta Meet registra el uso de cada clave API para que puedas monitorear la actividad:
Consultar uso desde el panel
- Ve a Workspace > Configuración > API.
- Cada clave muestra:
| Métrica | Descripción |
|---|---|
| Total de peticiones | Cantidad total de llamadas realizadas |
| Peticiones este mes | Llamadas en el mes actual |
| Última petición | Fecha y hora de la última llamada |
| Estado | Activa o revocada |
Consultar uso por API
curl -H "Authorization: Bearer zm_live_abc123def456" \
https://api.zelta.dev/meet/v1/api-keys/usageRespuesta:
{
"data": {
"key_name": "backend-produccion",
"total_requests": 15420,
"requests_this_month": 2340,
"last_request_at": "2026-03-11T14:32:00Z",
"created_at": "2026-01-15T10:00:00Z",
"status": "active"
}
}Límites de tasa (Rate Limiting)
La API aplica límites de tasa por clave API:
| Plan | Límite |
|---|---|
| Básico | 100 peticiones/minuto |
| Profesional | 500 peticiones/minuto |
| Empresarial | 2,000 peticiones/minuto |
Cuando superas el límite, la API responde con estado 429 Too Many Requests:
{
"error": "rate_limit_exceeded",
"message": "Has superado el límite de peticiones. Intenta de nuevo en 30 segundos.",
"retry_after": 30
}Webhooks
Recibe notificaciones en tiempo real sobre eventos de reuniones:
| Evento | Descripción |
|---|---|
meeting.started | Una reunión ha iniciado en una sala |
meeting.ended | Una reunión ha finalizado |
meeting.participant.joined | Un participante se ha unido |
meeting.participant.left | Un participante ha salido |
recording.processing | Una grabación está siendo procesada |
recording.ready | Una grabación está lista para acceso |
recording.failed | El procesamiento de una grabación falló |
member.invited | Un nuevo miembro fue invitado al workspace |
member.joined | Un miembro aceptó la invitación |
Configurar un webhook
curl -X POST https://api.zelta.dev/meet/v1/webhooks \
-H "Authorization: Bearer zm_live_abc123def456" \
-H "Content-Type: application/json" \
-d '{
"url": "https://tu-servidor.com/webhooks/zelta-meet",
"events": ["meeting.started", "meeting.ended", "recording.ready"],
"secret": "whsec_tu_secreto_de_firma"
}'Verificar firma del webhook
Cada notificación incluye un header X-Zelta-Signature con la firma HMAC-SHA256 del cuerpo. Verifica siempre la firma para asegurar la autenticidad:
import hmac
import hashlib
def verify_webhook(payload, signature, secret):
expected = hmac.new(
secret.encode(),
payload.encode(),
hashlib.sha256
).hexdigest()
return hmac.compare_digest(expected, signature)WARNING
Nunca compartas tus claves API. Rota periódicamente las credenciales y verifica siempre la firma de los webhooks para asegurar la autenticidad de las notificaciones.