Référence API

Tous les points d'entrée de la Room API (machine-à-machine), authentifiés par clé d'API.

URL de base

base
https://meet.lunion-lab.com/api/v1

Authentifiez chaque requête avec votre clé d'API dans l'en-tête Authorization: Bearer lk_xxxxx.secret.

Salles

POST/sdk/rooms
Créer une salle. Corps : { name, scheduledAt?, description? }.
GET/sdk/rooms
Lister les salles de l'application.
DELETE/sdk/rooms/:slug
Supprimer une salle. Les participants déjà connectés ne sont pas expulsés.

Participants

GET/sdk/rooms/:slug/participants
Lister les participants connectés. Réponse : { room, participants: [{ peerId, identity, name, joinedAt, state }] }.
POST/sdk/rooms/:slug/participants/remove
Éjecter un participant. Corps : { identity }.
POST/sdk/rooms/:slug/participants/mute
Définir l'état micro/caméra d'un participant. Corps : { identity, mic?, cam? } — true coupe, false rétablit, absent ne touche à rien ; au moins un des deux est requis. La coupure est appliquée par le serveur.

Jetons

POST/sdk/rooms/:slug/token
Émettre un jeton de connexion pour la salle.

Corps de la requête :

POST /sdk/rooms/:slug/token
{  "identity": "user-42",       // requis : votre identifiant utilisateur  "name": "Awa Diop",          // facultatif : nom affiché  "metadata": "role=client",   // facultatif : métadonnées libres  "ttlSeconds": 3600,          // facultatif : 60–86400, défaut 21600 (6 h)  "grants": {                  // facultatif : droits restreints    "canPublish": true,    "canSubscribe": true,    "canPublishData": true,    "canPublishSources": ["camera", "microphone", "screen", "screen_audio"],    "hidden": false,    "roomAdmin": false,    "roomRecord": false  }}

Réponse :

200 OK
{  "token": "eyJhbGciOi...",  "url": "wss://meet.lunion-lab.com/sfu/ws",  "room": "calm-otter-1289",  "identity": "user-42",  "expiresAt": 1782900000,  "iceServers": [    { "urls": "stun:stun.exemple.com:3478" },    {      "urls": "turn:turn.exemple.com:3478?transport=udp",      "username": "1782900000:calm-otter-1289",      "credential": "b64HmacSha1..."    }  ],  "iceTtlSeconds": 3600}

Erreurs

L'API renvoie des codes HTTP standards et un corps JSON décrivant l'erreur.

  • 401, clé d'API absente ou invalide.
  • 404, ressource introuvable (ou hors de votre application).
  • 400, requête invalide (paramètre manquant ou mal typé).
  • 429, trop de requêtes (limitation de débit).

SDK

  • @lunionlab/meet-server-sdk, côté serveur : RoomServiceClient (salles + jetons), WebhookReceiver (vérification de signature).
  • @lunionlab/meet-react, côté client React : useLunionRoom, VideoTrack.
  • @lunionlab/meet-client-js, côté client bas niveau : LunionMeetClient.

Référence OpenAPI

Une spécification OpenAPI interactive complète (Swagger) est servie sur /docs de votre instance API. Elle est exposée hors production; sur une instance en production elle est masquée par défaut (on évite de publier la cartographie complète de l'API) et se réactive en démarrant l'API avec ENABLE_SWAGGER=true.