Recipes← all recipesView on GitHub

Launch a prebuilt video conference

Videohosted video conferencing

Create a themed hosted video conference over REST, then retrieve participant tokens with names and access scopes.

video

The claim

You POST /api/video/conferences to create a prebuilt conference, themed with the colour fields the vendored REST spec lists. Those are light_primary, dark_primary, and the background, foreground, success and negative colours for each theme. display_name is the one required field. name, quality, layout, record_on_start, join_from, join_until and enable_chat are among the options. The spec’s 200 response schema carries the id you pass to GET /api/video/conferences/{id}/conference_tokens, which lists its tokens. The spec’s token schema carries name, token and scopes. You reach both as client.video.conferences.create and client.video.conferences.list_conference_tokens. The SignalWire reference describes these conferences as a prebuilt UI with no code required (https://signalwire.com/docs/apis/rest/video/video-conferences/create-video-conference).

How it works

def launch(display_name, *, name=None, record_on_start=False, quality="720p",
           layout="grid-responsive", primary="#F72A72", join_from=None, join_until=None):
    body = {"display_name": display_name, "record_on_start": record_on_start,
            "quality": quality, "layout": layout,
            "light_primary": primary, "dark_primary": primary}
    for key, value in (("name", name), ("join_from", join_from), ("join_until", join_until)):
        if value:
            body[key] = value
    return client.video.conferences.create(**body)

def tokens(conference_id):
    return client.video.conferences.list_conference_tokens(conference_id)

What the platform receives:

POST /api/video/conferences
{"display_name": "Workshop stand-up", "name": "workshop-standup",
 "record_on_start": true, "quality": "720p", "layout": "grid-responsive",
 "light_primary": "#F72A72", "dark_primary": "#F72A72",
 "join_from": "2026-09-03T09:00:00Z", "join_until": "2026-09-03T10:00:00Z"}

GET /api/video/conferences/<id>/conference_tokens

You pass the id from the create response to the token listing. Each token carries scopes, which the spec describes as “a list of permissions”. The spec also documents POST /api/video/conference_tokens/{id}/reset, titled “Reset conference token”, for a token you need to invalidate.

Limitations

You prove the requests and the documented shapes. Which tokens a real conference has, and what each one’s scopes hold, appear only in the live response.

The conference UI is the platform’s, per the reference above. For a room UI you build yourself, see create-a-video-room-and-join-from-the-browser.

What to change first

Remove display_name from the body and run the verifier. The exact-body assertion fails, and the spec’s required list says why: it is the one thing a conference cannot do without.