Core API
Halls
A hall is a managed video room. Relay provisions the media server, handles signalling, and optionally starts recording — you get a join_token back in one API call.
Create a hall
/v1/hallsCreates a new hall and returns a host join token.
Request body
namestringrequiredHuman-readable name for the hall. Displayed in the dashboard.
max_participantsintegerMaximum number of simultaneous participants. Defaults to 50. Capped by your plan limit.
recordbooleanStart recording immediately when the hall opens. Requires S3 credentials configured in Settings. Defaults to false.
moderationbooleanEnable AI content moderation (Google Video Intelligence). Growth plan and above only. Defaults to false.
metadataobjectArbitrary key-value pairs attached to the hall. Included in webhook payloads.
curl -X POST https://api.relay.dev/v1/halls \
-H "Authorization: Bearer relay_live_..." \
-H "Content-Type: application/json" \
-d '{
"name": "product-demo-room",
"max_participants": 10,
"record": true,
"moderation": false,
"metadata": { "customer_id": "cust_abc" }
}'Response
{
"hall_id": "h_01j9x2kp3n8fxrqk4m2b",
"join_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"created_at": "2025-04-05T10:00:00.000Z"
}The join_token is a signed JWT for the host participant. Pass it to your frontend WebRTC client.
List halls
/v1/hallsReturns up to 100 halls ordered by creation time (newest first).
Query parameters
status"active" | "closed"Filter by hall status. Omit to return all halls.
curl "https://api.relay.dev/v1/halls?status=active" \
-H "Authorization: Bearer relay_live_..."[
{
"hall_id": "h_01j9x2kp3n...",
"name": "product-demo-room",
"status": "active",
"max_participants": 10,
"record": true,
"moderation": false,
"participant_count": 3,
"metadata": { "customer_id": "cust_abc" },
"created_at": "2025-04-05T10:00:00.000Z",
"closed_at": null
}
]Get a hall
/v1/halls/:hall_idcurl https://api.relay.dev/v1/halls/h_01j9x2kp3n... \
-H "Authorization: Bearer relay_live_..."Close a hall
/v1/halls/:hall_idCloses the hall, stops any active recording, and disconnects all participants. Returns 204 No Content.
curl -X DELETE https://api.relay.dev/v1/halls/h_01j9x2kp3n... \
-H "Authorization: Bearer relay_live_..."The hall object
hall_idstringUnique hall identifier. Prefix: h_
namestringHuman-readable name.
status"active" | "closed"Current state of the hall.
max_participantsintegerParticipant cap for this hall.
recordbooleanWhether recording is enabled.
moderationbooleanWhether AI moderation is active.
participant_countintegerCurrent connected participants (live halls only).
metadataobjectDeveloper-defined key-value pairs.
created_atdatetimeISO 8601 creation timestamp.
closed_atdatetime | nullISO 8601 close timestamp, or null if still active.