Set your room title and category
Set what a platform shows about your room on its own site — title, category, tags, goal — separately from what's drawn in the video frame.
A stream has three separate sides: stream/ingest is where the feed comes from,
stream/targets is where it's sent, and native settings are what the platform shows
about you on its own site — room title, category or game, tags, and a tip goal. The
video frame only reaches people already watching; the title and category decide whether
they click in at all.
Read what's possible for a platform
GET /api/admin/stream/native/{platform} always answers, even for a platform Stream
can't act on — it returns the platform's capability method (api, session, or
none), which fields it actually supports, a ready flag, and human-readable
documentation and a note explaining what's missing if it isn't ready. It also returns
your currently-saved values and whether a token is stored (hasToken), never the token
itself.
Why GET answers even where nothing can be sent
The registry is honest about which platforms it can act on. The panel needs to explain the silence to the owner rather than just hide the form, so GET always returns the method, readiness, and a note — while PUT and apply on a platform that isn't ready return a real 400 instead of silently accepting a title that will never ship.
Save your settings
PUT /api/admin/stream/native/{platform} accepts a partial patch — send only the
fields you're changing:
| Field | Notes |
|---|---|
title | Only accepted if the platform declared it in its own field list. |
category | Same — not every platform has one (e.g. no game/category on cam rooms). |
tags | A list of strings. |
goal / goalAmount | A tip goal line and target amount, where the platform supports one. |
token | Write-only — the form can't show your current token, so an empty value means "leave it as-is", not "clear it". |
clientId | Public (not a secret, e.g. Twitch treats it as public), so it's echoed back. Changing it clears the platform's cached broadcaster ID. |
Saving does not push anything to the platform yet — that's a separate step, so "saved" and "actually live on the platform" never get conflated into one word.
Push it to the platform
POST /api/admin/stream/native/{platform}/apply sends your saved settings to the
platform for real.
Verify it worked
The response includes lastStatus and lastMessage from the last apply attempt, and
lastAppliedAt. If a field silently didn't take, check that it was in the platform's
declared field list in the first place — an unsupported field is dropped, not queued.
What's next
Choose which platforms receive your stream
— the video-fan-out side of the same platform, stream/targets.