media server logo
Mostrar u ocultar la navegación
Inicio de Callaba

Videollamadas

Usa Videollamadas para crear salas WebRTC en el navegador destinadas a invitados remotos, mesas redondas, webinars y llamadas de audio. Controla los permisos de los participantes y emite tokens de acceso seguros.

Qué haceCrear una sala de vídeo en el navegador

Elige este módulo cuandoInvitados remotos necesitan una sala WebRTC y tokens seguros de acceso para participantes.

Usa otro módulo cuandoUsa Servidores RTMP o SRT para contribución desde encoders; usa otro módulo para grabación o salida NDI.

1Crea la sala2Emite un token3Accede desde el navegador
POST /api/conferences/create
11 endpoints

Antes de empezar

Usa x-access-token para la configuración y los métodos del ciclo de vida de la sala. Mantén estas llamadas en el backend. El flujo de acceso desde el navegador utiliza la búsqueda de la sala y el token de participante que devuelven los métodos documentados.

Qué puedes hacer

  • create, update, getAll, getCount y getById gestionan las salas.
  • start y stop controlan la disponibilidad de la sala.
  • findLKRoomNameById resuelve el nombre de la sala activa y sus opciones compatibles.
  • createToken emite un token de acceso para un participante.
  • updateGlobalConfiguration modifica la conectividad WebSocket y TURN de toda la instancia.
  • remove elimina una sala.

Flujo de ejemplo

  1. Crea una sala con el tipo multimedia, límite de participantes y ajustes de webinar, chat, pantalla compartida y grabación.
  2. Inicia la sala antes de que lleguen los participantes.
  3. Resuelve el nombre de la sala activa con findLKRoomNameById.
  4. Emite el token de cada participante poco antes de la hora de acceso.
  5. Accede desde el navegador con el nombre de sala resuelto y el token.

Casos de uso habituales

  • Incorporar a un invitado remoto a una producción en directo.
  • Organizar un webinar con permisos restringidos para la audiencia.
  • Crear una sala informativa de audio con poco ancho de banda para equipos de campo.

Límites y resolución de problemas

No expongas en el código del navegador los tokens que controlan la sala. Emite tokens de participante únicamente para usuarios autorizados y poco antes del acceso previsto. TURN, WebSocket seguro, el firewall, los permisos del navegador y la capacidad de participantes pueden afectar al acceso.

Siguientes pasos

Usa la sala o un participante individual como entrada de un Adaptador NDI, una Grabación u otro flujo de salida compatible.

Receta de solución REST

Aprovisionar una sala de vídeo y un token de participante

Crea e inicia la sala gestionada y después emite un token de participante para el acceso público sin exponer el token de gestión.

  1. Crear la salaDefine la identidad, las reglas de participantes, las opciones de medios y el estado inicial.POST /api/conferences/create
  2. Iniciar la salaInicia la sala antes de enviar credenciales de acceso a un participante.POST /api/conferences/start
  3. Emitir un tokenCrea el token de acceso web desde un servicio de aplicación de confianza.POST /api/conferences-public/createToken

Mantén el token de gestión en un backend de confianza. Emite tokens de participante solo con la identidad y permisos necesarios.

POST
/api/conferences/create
Requiere token de API

Crea una sala de videollamada gestionada en Callaba Engine.

La sala define la política que usa el navegador: modo multimedia, límite de participantes, webinar, chat, compartir pantalla, grabación y estado activo inicial.

Los ejemplos por plantilla cubren salas de equipo, webinars, audio únicamente y salas grabadas con composición centrada en los ponentes.

Casos de uso habituales

  • Crear una sala estable para ponentes e invitados desde el navegador.
  • Preparar un webinar antes de que comience el evento.
  • Definir una sala grabada con el layout de composición necesario.
Sala de equipo estándar

Utiliza esta configuración para que un equipo pequeño o mediano pueda reunirse con audio, vídeo, chat y uso compartido de pantalla.

Sala de equipo estándar
Copiar código
curl --request POST \
--url http://localhost/api/conferences/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"name": "Team standup room",
"mediaType": "MEDIA_TYPE_VIDEO_AUDIO",
"max_participants": 20,
"allow_webinar_mode": false,
"allow_chat": true,
"allow_share_screen": true,
"record": false,
"record_mode": "ROOM_COMPOSITE_GRID",
"active": true
}'
Sala preparada para webinar

Utiliza esta configuración cuando la sala deba admitir invitados o espectadores y mantener un control más estricto sobre los privilegios de los ponentes.

Sala preparada para webinar
Copiar código
curl --request POST \
--url http://localhost/api/conferences/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"name": "Guest webinar room",
"mediaType": "MEDIA_TYPE_VIDEO_AUDIO",
"max_participants": 200,
"allow_webinar_mode": true,
"allow_chat": true,
"allow_share_screen": false,
"record": false,
"record_mode": "ROOM_COMPOSITE_GRID",
"active": true
}'
Sala de audio únicamente

Utiliza esta configuración cuando la reunión deba funcionar como una sesión informativa de audio o un espacio de conversación ligero.

Sala de audio únicamente
Copiar código
curl --request POST \
--url http://localhost/api/conferences/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"name": "Audio briefing room",
"mediaType": "MEDIA_TYPE_AUDIO_ONLY",
"max_participants": 50,
"allow_webinar_mode": false,
"allow_chat": true,
"allow_share_screen": false,
"record": false,
"record_mode": "ROOM_COMPOSITE_GRID",
"active": true
}'
Sala de ponentes con grabación

Utiliza esta configuración cuando la sala deba alimentar posteriormente un flujo de salida compuesto y la grabación forme parte de su política.

Sala de ponentes con grabación
Copiar código
curl --request POST \
--url http://localhost/api/conferences/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"name": "Recorded speaker room",
"mediaType": "MEDIA_TYPE_VIDEO_AUDIO",
"max_participants": 50,
"allow_webinar_mode": true,
"allow_chat": true,
"allow_share_screen": true,
"record": true,
"record_mode": "ROOM_COMPOSITE_SPEAKER",
"active": true
}'
Parámetros del cuerpo de la solicitud
Identidad
name
string
Copiar enlace directo

Etiqueta del panel: Nombre de la sala.

Nombre descriptivo de la sala. El panel valida este campo y muestra las mismas reglas de caracteres que el resto del producto: A-Z, a-z, 0-9 y -.

Medios y acceso
mediaType
string
Copiar enlace directo

Etiqueta del panel: Tipo de medios.

Los modos compatibles de la sala son MEDIA_TYPE_VIDEO_AUDIO, MEDIA_TYPE_VIDEO_ONLY y MEDIA_TYPE_AUDIO_ONLY.

max_participants
integer
Copiar enlace directo

Etiqueta del panel: Máximo de participantes.

Número máximo de participantes que pueden entrar simultáneamente en la reunión.

allow_webinar_mode
boolean
Copiar enlace directo

Define si, además del flujo para ponentes, la sala debe admitir invitados con el comportamiento propio de un webinar.

allow_chat
boolean
Copiar enlace directo

Define si el chat estará disponible en la sala del navegador.

allow_share_screen
boolean
Copiar enlace directo

Define si los ponentes pueden compartir su pantalla dentro de la sala.

Grabación
record
boolean
Copiar enlace directo

Define si la grabación debe estar habilitada para la sala.

record_mode
string
Copiar enlace directo

Modo de grabación compuesta de la sala. Entre los valores utilizados por el producto están ROOM_COMPOSITE_GRID, ROOM_COMPOSITE_AND_CHAT y ROOM_COMPOSITE_SPEAKER.

Runtime
active
boolean
Copiar enlace directo

Etiqueta del panel: Habilitada.

Define si la sala debe quedar activa inmediatamente después de crearla.

Crear videollamada
Copiar código
curl --request POST \
--url http://localhost/api/conferences/create \
--header 'x-access-token: <your_api_token>' \
--header 'Content-Type: application/json' \
--data '{
"name": "Main stage room",
"mediaType": "MEDIA_TYPE_VIDEO_AUDIO",
"max_participants": 50,
"allow_webinar_mode": true,
"allow_chat": true,
"allow_share_screen": true,
"record": false,
"record_mode": "ROOM_COMPOSITE_GRID",
"active": true
}'
Respuesta
Identidad
_id
string
Copiar enlace directo

Id de recurso que se devuelve al crear o listar la sala de videollamada.

id
string
Copiar enlace directo

Alias de acceso directo para _id.

name / user_id
mixed
Copiar enlace directo

Nombre guardado de la sala e identificador del usuario propietario.

Medios y acceso
mediaType / max_participants
mixed
Copiar enlace directo

Modo multimedia y límite de participantes guardados en el objeto de la sala.

allow_webinar_mode / allow_chat / allow_share_screen
mixed
Copiar enlace directo

Indicadores de la experiencia de los participantes que se devuelven con el objeto de la sala.

Grabación
record / record_mode
mixed
Copiar enlace directo

Configuración de grabación y modo de composición guardados para la sala.

Runtime
sid / active / created / modified
mixed
Copiar enlace directo

Estado de la sala y marcas de tiempo incluidas en la respuesta.

Resultado de la operación
success
boolean
Copiar enlace directo

Las respuestas correctas incluyen success: true.

Respuesta: Crear videollamada
JSON
Copiar código
{
"_id": "69f013c1aa11bb22cc33dd44",
"id": "69f013c1aa11bb22cc33dd44",
"name": "Main stage room",
"user_id": "69360341db559495f643de6a",
"mediaType": "MEDIA_TYPE_VIDEO_AUDIO",
"allow_webinar_mode": true,
"allow_chat": true,
"allow_share_screen": true,
"record": false,
"record_mode": "ROOM_COMPOSITE_GRID",
"max_participants": 50,
"sid": "RM_x7h6k4example",
"active": true,
"created": "2026-03-24T16:00:00.000Z",
"modified": "2026-03-24T16:00:00.000Z",
"success": true
}
POST
/api/conferences/getCount
Requiere token de API
POST
/api/conferences/getAll
Requiere token de API
POST
/api/conferences/getById
Requiere token de API
POST
/api/conferences/update
Requiere token de API
POST
/api/conferences/updateGlobalConfiguration
Requiere token de API
POST
/api/conferences/start
Requiere token de API
POST
/api/conferences/stop
Requiere token de API
DELETE
/api/conferences/remove
Requiere token de API
POST
/api/conferences-public/findLKRoomNameById
Endpoint público
POST
/api/conferences-public/createToken
Endpoint público