Livqeno Docs

RTC API

Rooms, RTC tokens, live participants, and the media-server fleet.

Create a room, then mint one short-lived token per participant. A client presents that token to the signaling endpoint; it never calls these routes itself.

See Rooms & Participants for the SDK side.

Endpoints

MethodPathCredential
GET/v1/projects/{projectId}/roomsDashboard session (JWT)
POST/v1/projects/{projectId}/roomsDashboard session (JWT)
GET/v1/projects/{projectId}/rooms/{roomId}Dashboard session (JWT)
POST/v1/projects/{projectId}/rooms/{roomId}/test-tokenDashboard session (JWT)
GET/v1/roomsProject API key
POST/v1/roomsProject API key
DELETE/v1/rooms/{id}Project API key
GET/v1/rooms/{id}Project API key
GET/v1/rooms/{id}/participantsProject API key
POST/v1/rooms/{roomId}/rtc-tokensProject API key
DELETE/v1/rooms/{roomId}/rtc-tokens/{tokenId}Project API key
GET/v1/rtc/serversDashboard session (JWT)
GET/v1/rtc/servers/{name}Dashboard session (JWT)
POST/v1/rtc/servers/{name}/drainDashboard session (JWT)
PUT/v1/rtc/servers/{name}/heartbeatSFU registration secret
POST/v1/rtc/servers/{name}/undrainDashboard session (JWT)
GET/v1/rtc/servers/metricsDashboard session (JWT)
POST/v1/rtc/servers/registerSFU registration secret

GET /v1/projects/{projectId}/rooms

List a project's rooms with live participant counts

Credential Dashboard session (JWT)

ParameterInTypeRequiredNotes
projectIdpathstringYes

POST /v1/projects/{projectId}/rooms

Create a room in this project

Credential Dashboard session (JWT)

ParameterInTypeRequiredNotes
projectIdpathstringYes
namebodystringYes1–128 chars, pattern-checked — Unique within the project (not globally). Letters, numbers, "-", "_", "." only.

GET /v1/projects/{projectId}/rooms/{roomId}

Get one room with its live participants and published tracks

Credential Dashboard session (JWT)

ParameterInTypeRequiredNotes
roomIdpathstringYes
projectIdpathstringYes

POST /v1/projects/{projectId}/rooms/{roomId}/test-token

Mint a short-lived (10 min) test RTC token for this room, for use from the dashboard only

Credential Dashboard session (JWT) · Rate limit 30 per window (details)

ParameterInTypeRequiredNotes
projectIdpathstringYes
roomIdpathstringYes
participantIdentitybodystringNo1–128 chars, pattern-checked

GET /v1/rooms

List the API key's project's active rooms

Credential Project API key

No parameters.

POST /v1/rooms

Create a room in the API key's project

Credential Project API key · Idempotent send Idempotency-Key to replay safely

ParameterInTypeRequiredNotes
namebodystringYes1–128 chars, pattern-checked — Unique within the project (not globally). Letters, numbers, "-", "_", "." only.

DELETE /v1/rooms/{id}

Close a room

Credential Project API key

ParameterInTypeRequiredNotes
idpathstringYes

GET /v1/rooms/{id}

Get a single room

Credential Project API key

ParameterInTypeRequiredNotes
idpathstringYes

GET /v1/rooms/{id}/participants

List live participants in a room, from the SFU (Phase 10 server SDK)

Credential Project API key

ParameterInTypeRequiredNotes
idpathstringYes

POST /v1/rooms/{roomId}/rtc-tokens

Mint a short-lived RTC access token for a participant to join this room

Credential Project API key · Rate limit 60 per window (details) · Idempotent send Idempotency-Key to replay safely

ParameterInTypeRequiredNotes
roomIdpathstringYes
participantIdentitybodystringYes1–128 chars, pattern-checked — Unique within the room. Letters, numbers, "-", "_", "." only.
permissionsbodyRtcTokenPermissionsDtoNo
ttlSecondsbodynumberNo30–21600 — Token lifetime in seconds. Defaults to RTC_TOKEN_DEFAULT_TTL_SECONDS. There is no way to request a non-expiring token — every RTC token is short-lived by design.
metadatabodystringNo0–1024 chars

DELETE /v1/rooms/{roomId}/rtc-tokens/{tokenId}

Revoke a minted RTC token before it expires

Credential Project API key · Rate limit 60 per window (details)

ParameterInTypeRequiredNotes
tokenIdpathstringYes
roomIdpathstringYes

GET /v1/rtc/servers

List the RTC server fleet

Credential Dashboard session (JWT)

No parameters.

GET /v1/rtc/servers/{name}

One RTC server

Credential Dashboard session (JWT)

ParameterInTypeRequiredNotes
namepathstringYes

POST /v1/rtc/servers/{name}/drain

Stop sending new rooms to this node

Credential Dashboard session (JWT)

ParameterInTypeRequiredNotes
namepathstringYes

PUT /v1/rtc/servers/{name}/heartbeat

Report this node as alive, with its current load

Credential SFU registration secret

ParameterInTypeRequiredNotes
namepathstringYes
activeRoomsbodynumberYes0–∞ — Rooms this node is currently serving.
activeParticipantsbodynumberYes0–∞ — Participants currently connected across all of this node's rooms.
cpuPercentbodynumberNo0–100 — CPU utilisation, 0-100.
memoryPercentbodynumberNo0–100 — Memory utilisation, 0-100.
networkInBpsbodynumberNo0–∞ — Inbound media throughput, bits per second.
networkOutBpsbodynumberNo0–∞ — Outbound media throughput, bits per second. Expected to exceed inbound in an SFU — one publisher feeds many subscribers.

POST /v1/rtc/servers/{name}/undrain

Put a drained node back into the allocation pool

Credential Dashboard session (JWT)

ParameterInTypeRequiredNotes
namepathstringYes

GET /v1/rtc/servers/metrics

Fleet-wide RTC totals for the dashboard overview

Credential Dashboard session (JWT)

No parameters.

POST /v1/rtc/servers/register

Register this SFU node with the control plane

Credential SFU registration secret

ParameterInTypeRequiredNotes
namebodystringYes1–128 chars, pattern-checked — Stable name for this node, unique across the fleet. Supplied by the node (SFU_NODE_ID) so a restart reclaims the same registry row instead of orphaning it.
regionbodystringYes1–64 chars — Region this node serves. Free-form; the allocator treats it as a preference.
publicHostbodystringYes1–255 chars — Host clients reach for media. Not the same as internalUrl inside a container network.
internalUrlbodystringYes1–255 chars — Base URL the control plane uses for server-to-server calls to this node.
capacitybodynumberNo1–100_000 — Rooms this node advertises it can hold. A ceiling the allocator respects, not a target it aims for.
versionbodystringNo0–64 chars — Build identifier, so a fleet mid-rollout is legible.

Nested objects

RtcTokenPermissionsDto

FieldTypeRequiredNotes
joinbooleanNoAllowed to join the room at all Default true.
subscribebooleanNoAllowed to subscribe to other participants' tracks Default true.
publishbooleanNoAllowed to publish any track at all Default false.
publishAudiobooleanNoRestricts publish to audio (microphone) — only meaningful when publish=true Default false.
publishVideobooleanNoRestricts publish to video (camera) — only meaningful when publish=true Default false.
publishDatabooleanNoAllowed to send/receive WebRTC data channel messages Default false.

Next steps

  • Conventions — base path, error envelope, request ids, pagination.
  • Errors — every code this API can return.
  • All endpoints — the whole surface on one page.