Créer des salles

Une salle est l'espace où vos utilisateurs se retrouvent. Vous la gérez depuis votre serveur avec la Room API.

Toutes les salles que vous créez sont rattachées à l'application de la clé d'API utilisée. Le SDK serveur enveloppe la Room API ; vous pouvez aussi l'appeler en HTTP brut.

Créer une salle

server.ts
import { RoomServiceClient } from "@lunionlab/meet-server-sdk"; const rooms = new RoomServiceClient(  "https://meet.lunion-lab.com/api/v1",  process.env.LUNION_API_KEY!,); const room = await rooms.createRoom("Réunion produit");// room.slug → identifiant court et unique, à réutiliser pour le jeton

Pour une réunion planifiée, passez une date ISO 8601 et une description :

server.ts
const room = await rooms.createRoom("Comité hebdo", {  scheduledAt: "2026-07-01T09:00:00.000Z",  description: "Revue produit hebdomadaire",});

L'objet salle

Room
{  "id": "ckv...",  "slug": "calm-otter-1289",  "name": "Réunion produit",  "ownerId": "usr_...",  "scheduledAt": null,  "description": null,  "createdAt": "2026-06-25T10:00:00.000Z"}

Le slug est la clé

Réutilisez room.slug pour émettre les jetons et pour le lien direct /room/<slug>. Il est court, unique et sûr à partager.

Lister les salles

server.ts
const all = await rooms.listRooms(); // salles de l'application

Supprimer une salle

server.ts
await rooms.deleteRoom(room.slug);

Participants connectés

Depuis votre serveur, listez les participants d'une salle et modérez-les sans ouvrir de WebSocket. Chaque participant est ciblé par son identity(celle passée à l'émission du jeton) ; elle vaut nullsi le pair s'est connecté sans jeton (mode ouvert).

server.ts
// Lister : [{ peerId, identity, name, joinedAt, state }]const people = await rooms.listParticipants(room.slug); // Couper le micro de quelqu'un (true = couper, false = rétablir)await rooms.muteParticipant(room.slug, "user-42", { mic: true }); // L'éjecter : il reçoit une notification puis est déconnectéawait rooms.removeParticipant(room.slug, "user-42");

La coupure est appliquée par le serveur

muteParticipant ne fait pas que demander poliment : le SFU droppe réellement le flux de la source coupée, et le rétablit à la levée. Un client non coopératif ne peut plus diffuser.

Points d'entrée HTTP

POST/api/v1/sdk/rooms
Créer une salle.
GET/api/v1/sdk/rooms
Lister les salles de l'application.
POST/api/v1/sdk/rooms/:slug/token
Émettre un jeton de connexion.
DELETE/api/v1/sdk/rooms/:slug
Supprimer une salle.
GET/api/v1/sdk/rooms/:slug/participants
Lister les participants connectés.
POST/api/v1/sdk/rooms/:slug/participants/remove
Éjecter un participant. Corps : { identity }.
POST/api/v1/sdk/rooms/:slug/participants/mute
Couper ou rétablir micro/caméra. Corps : { identity, mic?, cam? }.

Bon à savoir

  • Une salle vide ne consomme rien ; la facturation suit l'usage réel (minutes).
  • Les slugs sont générés automatiquement et garantis uniques.
  • Supprimer une salle libère le lien, mais les participants déjà connectés ne sont pas expulsés : utilisez removeParticipant pour les déconnecter.