Endpoints de API
Estos endpoints están diseñados para ser consumidos por sistemas externos y se autentican mediante API Key. Toda la comunicación es sobre HTTPS y los cuerpos se envían/reciben en JSON.
Crear Reunión
Crea una nueva reunión en el workspace asociado a la API Key.
POST https://backend-meet.zelta.dev/public/meetingsHeaders:
x-api-key: <tu_api_key>
Content-Type: application/jsonBody:
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
title | string | Sí | Título de la reunión (mín. 1 carácter) |
datetime | string | No | Fecha y hora en formato ISO 8601 (ej: 2026-03-15T14:30:00Z). Si se omite, se crea como reunión instantánea |
language | string | No | Idioma para la transcripción y el resumen automático de la reunión. Ver |
Ejemplo:
curl -X POST https://backend-meet.zelta.dev/public/meetings \
-H "x-api-key: <tu_api_key>" \
-H "Content-Type: application/json" \
-d '{
"title": "Sync semanal del equipo",
"datetime": "2026-03-15T14:30:00Z",
"language": "es"
}'Idiomas de transcripción soportados
El campo language acepta uno de estos valores:
en, en-US, en-AU, en-GB, en-IN, en-NZ, es, es-419, fr, fr-CA, de, de-CH, hi, ru, pt, pt-BR, pt-PT, ja, it, nl, multi
Usa multi para reuniones con varios idiomas. Si se omite, la transcripción queda desactivada para esa reunión.
Respuesta exitosa 201:
{
"success": true,
"message": "Meeting created successfully",
"meeting": {
"title": "Sync semanal del equipo",
"datetime": "2026-03-15T14:30:00Z",
"publicMeetingId": "abc123def456"
}
}Actualizar Reunión
Actualiza una reunión existente (título, fecha/hora o estado).
PATCH https://backend-meet.zelta.dev/public/meetings/:publicMeetingIdHeaders:
x-api-key: <tu_api_key>
Content-Type: application/jsonParámetros de ruta:
| Parámetro | Descripción |
|---|---|
publicMeetingId | ID público de la reunión (obtenido al crearla) |
Body (todos los campos son opcionales):
| Campo | Tipo | Descripción |
|---|---|---|
title | string | Nuevo título |
datetime | string | Nueva fecha/hora en formato ISO 8601 |
status | string | Nuevo estado: "ACTIVE" (activa) o "INACTIVE" (desactivada). Una reunión INACTIVE no admite nuevas conexiones |
Ejemplo:
curl -X PATCH https://backend-meet.zelta.dev/public/meetings/abc123def456 \
-H "x-api-key: <tu_api_key>" \
-H "Content-Type: application/json" \
-d '{
"status": "INACTIVE"
}'Respuesta exitosa 200:
{
"success": true,
"message": "Meeting updated successfully",
"meeting": {
"title": "Sync semanal del equipo",
"datetime": "2026-03-15T14:30:00Z",
"status": "INACTIVE"
}
}Crear Participante en Reunión
Agrega un participante a una reunión existente. Opcionalmente envía un email de invitación.
POST https://backend-meet.zelta.dev/public/meetings/:publicMeetingId/participantsHeaders:
x-api-key: <tu_api_key>
Content-Type: application/jsonParámetros de ruta:
| Parámetro | Descripción |
|---|---|
publicMeetingId | ID público de la reunión |
Body:
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
preset_name | string | Sí | Tipo de participante: "zelta_meet_host", "zelta_meet_participant" o "zelta_meet_guest" |
externalId | string | No | ID externo del participante en tu sistema. Se usa para reconocer a un participante existente y renovar su token |
email | string | No | Email del participante (si se provee, se envía invitación por email) |
name | string | No | Nombre del participante |
Ejemplo:
curl -X POST https://backend-meet.zelta.dev/public/meetings/abc123def456/participants \
-H "x-api-key: <tu_api_key>" \
-H "Content-Type: application/json" \
-d '{
"preset_name": "zelta_meet_participant",
"externalId": "user-789",
"email": "[email protected]",
"name": "María García"
}'Respuesta exitosa 201:
{
"success": true,
"message": "Participant created successfully",
"participant": {
"url": "https://meet.zelta.dev/m/abc123def456/?p=pp_abc123",
"guestUrl": "https://meet.zelta.dev/m/abc123def456",
"token": "eyJhbGciOiJI..."
}
}Nota: El campo
urles el enlace directo para que el participante se una a la reunión. El campoguestUrles la URL base de la reunión. El campotokenes el token de conexión a la sala (útil si conectas al participante de forma programática en lugar de por enlace).
Si el participante ya existe (mismo externalId en la misma reunión), se renueva su token y se devuelve 200 con el mismo formato:
{
"success": true,
"message": "Participant already exists",
"participant": {
"url": "https://meet.zelta.dev/m/abc123def456/?p=pp_abc123",
"guestUrl": "https://meet.zelta.dev/m/abc123def456",
"token": "eyJhbGciOiJI..."
}
}Obtener Resumen de Reunión
Devuelve el resumen generado automáticamente, la URL de la transcripción y el idioma de una reunión.
GET https://backend-meet.zelta.dev/public/meetings/:publicMeetingId/summaryHeaders:
x-api-key: <tu_api_key>Parámetros de ruta:
| Parámetro | Descripción |
|---|---|
publicMeetingId | ID público de la reunión |
Respuesta exitosa 200:
{
"summary": "Resumen de los temas tratados en la reunión...",
"transcript_url": "https://cdn-meet.zelta.dev/transcripts/abc123.csv",
"language": "es"
}Cualquiera de los campos puede ser
nullsi el resumen o la transcripción aún no se han generado.
Obtener Transcripción de una Sesión
Descarga bajo demanda la transcripción de una sesión concreta de la reunión desde Cloudflare. Útil cuando la transcripción todavía no estaba disponible al finalizar la reunión.
POST https://backend-meet.zelta.dev/public/meetings/:publicMeetingId/sessions/:cfSessionId/fetch-transcriptHeaders:
x-api-key: <tu_api_key>Parámetros de ruta:
| Parámetro | Descripción |
|---|---|
publicMeetingId | ID público de la reunión |
cfSessionId | ID de la sesión de Cloudflare |
Respuesta exitosa 200:
{
"success": true,
"transcriptUrl": "https://cdn-meet.zelta.dev/transcripts/abc123.csv"
}Si la transcripción aún no está lista, se devuelve
404con el códigoTRANSCRIPT_NOT_READY.
Resumen de Endpoints
| Método | Endpoint | Descripción |
|---|---|---|
POST | https://backend-meet.zelta.dev/public/meetings | Crear reunión |
PATCH | https://backend-meet.zelta.dev/public/meetings/:publicMeetingId | Actualizar reunión |
POST | https://backend-meet.zelta.dev/public/meetings/:publicMeetingId/participants | Crear participante |
GET | https://backend-meet.zelta.dev/public/meetings/:publicMeetingId/summary | Obtener resumen y transcripción |
POST | https://backend-meet.zelta.dev/public/meetings/:publicMeetingId/sessions/:cfSessionId/fetch-transcript | Obtener transcripción de una sesión |