Render Tokens
Generate and manage render URLs for OBS, vMix, and browser-source overlays.
Render tokens provide capability-based URLs that display live graphics in OBS, vMix, or any browser source. Each token is scoped to a single production and renders whichever graphic is currently "on program."
The render URL is a standalone page with a transparent background — no login required. It subscribes reactively to production data, so score updates and graphic switches appear instantly.
Workflow
- Generate a render token for a production via the API or web dashboard
- Paste the URL into OBS as a browser source (e.g.
https://yourapp.com/render/lw_rt_...) - Set the program graphic via
POST /api/productions/program— see Productions - Update live data via
POST /api/cms/productions/live— the graphic updates in real-time
Create Render Token
Generate a new render token for a production. Returns the full URL-safe token.
POST /api/render/token/createAuth: readwrite
Request:
curl -X POST https://ideal-heron-677.convex.site/api/render/token/create \
-H "Authorization: Bearer lw_your_key" \
-H "Content-Type: application/json" \
-d '{
"productionId": "j572prod1...",
"label": "OBS Main"
}'| Field | Type | Required | Description |
|---|---|---|---|
productionId | string | Yes | The production this token is for |
label | string | No | Human-readable label (defaults to production name) |
Response (201):
{
"tokenId": "pd7token1...",
"token": "lw_rt_a1b2c3d4e5f6..."
}The render URL is: https://yourapp.com/render/{token}
List Render Tokens
List active (non-revoked) render tokens for a production.
POST /api/render/token/listAuth: read
Request:
curl -X POST https://ideal-heron-677.convex.site/api/render/token/list \
-H "Authorization: Bearer lw_your_key" \
-H "Content-Type: application/json" \
-d '{"productionId": "j572prod1..."}'Response:
{
"tokens": [
{
"_id": "pd7token1...",
"token": "lw_rt_a1b2c3d4e5f6...",
"label": "OBS Main",
"createdAt": 1711929000000,
"expiresAt": null
}
]
}Revoke Render Token
Revoke a render token. The render URL will immediately stop working.
POST /api/render/token/revokeAuth: readwrite
Request:
curl -X POST https://ideal-heron-677.convex.site/api/render/token/revoke \
-H "Authorization: Bearer lw_your_key" \
-H "Content-Type: application/json" \
-d '{"tokenId": "pd7token1..."}'Response:
{
"ok": true
}Auto Field Mapping
The render page automatically maps production data to graphic fields. No manual field assignment is needed — graphics resolve their {fieldKey} bindings against a flat data bag built from the production snapshot:
| Data Source | Key Pattern | Example |
|---|---|---|
| Bindings | bindingKey.fieldName | homeTeam.name, venue.city |
| Live data | fieldKey | homeScore, clock, period |
| Production meta | production.fieldName | production.name, production.status |
A graphic with a text node containing {homeTeam.name} will automatically display the bound team's name. A node with {homeScore} displays the current live data score.
Security
- Render tokens are capability URLs — anyone with the token can view the render output
- Tokens are scoped to a single production and cannot access other workspace data
- Revoke tokens immediately when no longer needed
- Tokens do not expire by default but can be given an expiry when created programmatically