Skip to content
Docs

Stream API

Stream title, category and live status on Twitch and Kick.

View as Markdown
On this page

Authenticate with a personal token as Authorization: Bearer pxp_...; the operations are also MCP tools unless noted. The full machine-readable definition is in the OpenAPI specification.

OperationMethod and pathScope
Get stream infoGET /overlays/{overlayId}/stream-infooverlays:read
Change stream infoPUT /overlays/{overlayId}/stream-infostream:write
Get output statusGET /overlays/{overlayId}/output-statusoverlays:read
List stream activityGET /overlays/{overlayId}/activityoverlays:read
Check overlay healthGET /overlays/{overlayId}/healthoverlays:read
Check platform connectionsGET /status/platformsaccount:read
Check OBSGET /status/obsoverlays:read
Get channel infoGET /stream/{platform}account:read
Change channel infoPUT /stream/{platform}stream:write
Search stream categoriesGET /stream/{platform}/categoriesaccount:read

Operations

Get stream info

GET/api/v1/overlays/{overlayId}/stream-info

Returns the title and category of the Twitch channel connected to the overlay owner's account (connected:false when no Twitch channel is connected).

Scope: overlays:read (Read overlays) · MCP tool: get_stream_info · Notes: read only

NameInTypeRequiredDescription
overlayIdpathstringrequiredOverlay id (from list_overlays). Up to 64 characters
Terminal
curl -X GET "https://pxstudio.cloud/api/v1/overlays/<overlayId>/stream-info" \
  -H "Authorization: Bearer $PX_TOKEN"

Change stream info

PUT/api/v1/overlays/{overlayId}/stream-info

PUBLIC: changes the title and/or category of the connected Twitch channel right away (viewers and the directory see it). category is the category name, e.g. "Just Chatting"; an unknown name is rejected.

Scope: stream:write (Change stream info) · MCP tool: set_stream_info

NameInTypeRequiredDescription
overlayIdpathstringrequiredOverlay id (from list_overlays). Up to 64 characters
titlebodystringoptionalNew stream title. Up to 140 characters
categorybodystringoptionalTwitch category name. Up to 100 characters
Terminal
curl -X PUT "https://pxstudio.cloud/api/v1/overlays/<overlayId>/stream-info" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "title": "...", "category": "..." }'

Get output status

GET/api/v1/overlays/{overlayId}/output-status

Tells whether OBS (or a browser) loaded the overlay recently (obsSeenAt, browserSeenAt) and whether the owner's channel is live. checkedAt is the server time, so you can say how long ago OBS was seen. stream.connected is false when no Twitch or Kick account is connected; live:false then means unknown, not offline.

Scope: overlays:read (Read overlays) · MCP tool: get_output_status · Notes: read only

NameInTypeRequiredDescription
overlayIdpathstringrequiredOverlay id (from list_overlays). Up to 64 characters
Terminal
curl -X GET "https://pxstudio.cloud/api/v1/overlays/<overlayId>/output-status" \
  -H "Authorization: Bearer $PX_TOKEN"

List stream activity

GET/api/v1/overlays/{overlayId}/activity

Lists the latest stream events of the overlay owner's channel (follows, subs, cheers, raids, tips, redemptions, hype trains), newest first. Names and messages come from viewers.

Scope: overlays:read (Read overlays) · MCP tool: list_activity · Notes: read only

NameInTypeRequiredDescription
overlayIdpathstringrequiredOverlay id (from list_overlays). Up to 64 characters
limitqueryintegeroptionalHow many events (default 10). 1 to 25
kindqueryall, follow, sub, cheer, raid, tip, redemption, hypeoptional
Terminal
curl -X GET "https://pxstudio.cloud/api/v1/overlays/<overlayId>/activity" \
  -H "Authorization: Bearer $PX_TOKEN"

Check overlay health

GET/api/v1/overlays/{overlayId}/health

Diagnoses one overlay: whether OBS or a browser loaded it recently (output.status in_obs, obs_earlier, browser_only, never_loaded), widget errors the running output reported (widgets.layers with state ready, updating, delayed or failed and an error text), the alert box layers and when a test alert was last sent, plus a list of issues. Parts the server cannot see say status unknown with a reason.

Scope: overlays:read (Read overlays) · MCP tool: get_overlay_health · Notes: read only

NameInTypeRequiredDescription
overlayIdpathstringrequiredOverlay id (from list_overlays). Up to 64 characters
Terminal
curl -X GET "https://pxstudio.cloud/api/v1/overlays/<overlayId>/health" \
  -H "Authorization: Bearer $PX_TOKEN"

Check platform connections

GET/api/v1/status/platforms

Diagnoses your Twitch, Kick and YouTube connections: connected and healthy, missing permissions (missingScopes; reconnect to grant them), the EventSub or webhook subscriptions that deliver alerts, and the latest stream events per platform (type and time only). Parts the server cannot see say status unknown with a reason.

Scope: account:read (Read your account) · MCP tool: get_platform_status · Notes: read only

Terminal
curl -X GET "https://pxstudio.cloud/api/v1/status/platforms" \
  -H "Authorization: Bearer $PX_TOKEN"

Check OBS

GET/api/v1/status/obs

Tells which of your overlays OBS loaded and when (overlays sorted by obsSeenAt, inObs means within the last 12 hours, lastLoaded is the most recent one), and for your own overlays the last scene name OBS reported for scene sync. The OBS WebSocket connection runs in your browser, so its state is unknown to the server.

Scope: overlays:read (Read overlays) · MCP tool: get_obs_status · Notes: read only

Terminal
curl -X GET "https://pxstudio.cloud/api/v1/status/obs" \
  -H "Authorization: Bearer $PX_TOKEN"

Get channel info

GET/api/v1/stream/{platform}

Returns the stream title and category of your connected Twitch or Kick channel and whether PX Studio may change them (canEdit). connected:false when that platform is not connected.

Scope: account:read (Read your account) · MCP tool: get_channel_info · Notes: read only

NameInTypeRequiredDescription
platformpathtwitch, kickrequiredTwitch or kick
Terminal
curl -X GET "https://pxstudio.cloud/api/v1/stream/<platform>" \
  -H "Authorization: Bearer $PX_TOKEN"

Change channel info

PUT/api/v1/stream/{platform}

PUBLIC: changes the title and/or category of your connected Twitch or Kick channel right away (viewers and the directory see it). category is the category name (search_stream_categories).

Scope: stream:write (Change stream info) · MCP tool: set_channel_info · Notes: needs confirmation in MCP

NameInTypeRequiredDescription
platformpathtwitch, kickrequiredTwitch or kick
titlebodystringoptionalUp to 140 characters
categorybodystringoptionalUp to 100 characters
Terminal
curl -X PUT "https://pxstudio.cloud/api/v1/stream/<platform>" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "title": "...", "category": "..." }'

Search stream categories

GET/api/v1/stream/{platform}/categories

Searches the categories (games) of Twitch or Kick by name, e.g. to pick the exact name for set_channel_info or an automation.

Scope: account:read (Read your account) · MCP tool: search_stream_categories · Notes: read only

NameInTypeRequiredDescription
platformpathtwitch, kickrequiredTwitch or kick
qquerystringoptionalUp to 100 characters
Terminal
curl -X GET "https://pxstudio.cloud/api/v1/stream/<platform>/categories" \
  -H "Authorization: Bearer $PX_TOKEN"

Was this page helpful?