Skip to content

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/v1

Todas 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

  1. Ve a Workspace > Configuración > API.
  2. Haz clic en Generar clave API.
  3. Asigna un nombre descriptivo (ej: integracion-slack, backend-produccion).
  4. Selecciona los permisos (scopes) de la clave.
  5. 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

  1. Ve a Workspace > Configuración > API.
  2. Localiza la clave que deseas revocar.
  3. Haz clic en Revocar.
  4. 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:

bash
curl -H "Authorization: Bearer zm_live_abc123def456" \
  https://api.zelta.dev/meet/v1/rooms

Ejemplo en diferentes lenguajes

JavaScript (fetch):

javascript
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):

python
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:

ScopeDescripción
meet:rooms:readConsultar salas del workspace
meet:rooms:writeCrear, modificar y eliminar salas
meet:meetings:readConsultar reuniones activas y pasadas
meet:meetings:writeIniciar y finalizar reuniones
meet:recordings:readConsultar y descargar grabaciones
meet:recordings:writeEliminar grabaciones
meet:members:readConsultar miembros del workspace
meet:members:writeInvitar y remover miembros
meet:integrationsGestionar integraciones (Google Calendar, Slack)
meet:adminAcceso 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

  1. Ve a Workspace > Configuración > API.
  2. Cada clave muestra:
MétricaDescripción
Total de peticionesCantidad total de llamadas realizadas
Peticiones este mesLlamadas en el mes actual
Última peticiónFecha y hora de la última llamada
EstadoActiva o revocada

Consultar uso por API

bash
curl -H "Authorization: Bearer zm_live_abc123def456" \
  https://api.zelta.dev/meet/v1/api-keys/usage

Respuesta:

json
{
  "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:

PlanLímite
Básico100 peticiones/minuto
Profesional500 peticiones/minuto
Empresarial2,000 peticiones/minuto

Cuando superas el límite, la API responde con estado 429 Too Many Requests:

json
{
  "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:

EventoDescripción
meeting.startedUna reunión ha iniciado en una sala
meeting.endedUna reunión ha finalizado
meeting.participant.joinedUn participante se ha unido
meeting.participant.leftUn participante ha salido
recording.processingUna grabación está siendo procesada
recording.readyUna grabación está lista para acceso
recording.failedEl procesamiento de una grabación falló
member.invitedUn nuevo miembro fue invitado al workspace
member.joinedUn miembro aceptó la invitación

Configurar un webhook

bash
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:

python
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.

Documentación oficial de Zelta