Skip to content
Docs

Community API

Viewers, loyalty points, ranks and rewards.

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 giveawayGET /bot/giveawaybot:read
List giveaway entriesGET /bot/giveaway/entriesbot:read
List past giveawaysGET /bot/giveaway/historybot:read
Get giveaway defaultsGET /bot/giveaway/defaultsbot:read
Set giveaway defaultsPATCH /bot/giveaway/defaultsbot:write
Start giveawayPOST /bot/giveawaybot:write
Draw giveaway winnerPOST /bot/giveaway/drawbot:write
Control giveawayPOST /bot/giveaway/controlbot:write
Remove giveaway entryPOST /bot/giveaway/entries/removebot:write
Cancel giveawayPOST /bot/giveaway/cancelbot:write
Get loyalty settingsGET /bot/loyaltybot:read
List loyalty leaderboardGET /bot/loyalty/topbot:read
Get loyalty viewerGET /bot/loyalty/viewers/{login}bot:read
Update loyalty settingsPATCH /bot/loyaltybot:write
List loyalty rewardsGET /bot/loyalty/rewardsbot:read
Create loyalty rewardPOST /bot/loyalty/rewardsbot:write
Update loyalty rewardPATCH /bot/loyalty/rewards/{rewardId}bot:write
Delete loyalty rewardDELETE /bot/loyalty/rewards/{rewardId}bot:write
Trigger loyalty rewardPOST /bot/loyalty/rewards/{rewardId}/triggerbot:write
Adjust loyalty pointsPOST /bot/loyalty/adjustbot:write
List channel point actionsGET /bot/channel-pointsbot:read
Create channel point actionPOST /bot/channel-pointsbot:write
Update channel point actionPATCH /bot/channel-points/{rewardId}bot:write
Delete channel point actionDELETE /bot/channel-points/{rewardId}bot:write
Test channel point actionPOST /bot/channel-points/{rewardId}/simulatebot:write

Operations

Get giveaway

GET/api/v1/bot/giveaway

Returns the running or last drawn PXStudioBot giveaway (phase, keyword, prize, entries, timer, winners and what each winner wrote in chat since the draw) and whether Twitch and Kick chat are ready for one. Winner names and chat lines come from viewers.

Scope: bot:read (Read bot settings) · MCP tool: get_giveaway · Notes: read only

NameInTypeRequiredDescription
overlayIdquerystringoptionalAct on the bot of this overlay's owner. Only for overlays shared with you; leave out for your own bot. Up to 64 characters
Terminal
curl -X GET "https://pxstudio.cloud/api/v1/bot/giveaway" \
  -H "Authorization: Bearer $PX_TOKEN"

List giveaway entries

GET/api/v1/bot/giveaway/entries

Lists the viewers in the running (or last drawn) giveaway with their tickets and whether they can win. Logins come from viewers.

Scope: bot:read (Read bot settings) · MCP tool: list_giveaway_entries · Notes: read only

NameInTypeRequiredDescription
overlayIdquerystringoptionalAct on the bot of this overlay's owner. Only for overlays shared with you; leave out for your own bot. Up to 64 characters
qquerystringoptionalLogin prefix. Up to 64 characters
filterqueryall, subs, vips, followers, ineligibleoptional
platformquerytwitch, kickoptional
limitqueryintegeroptional1 to 100
afterqueryintegeroptionalNextAfter of the previous page. At least 1
Terminal
curl -X GET "https://pxstudio.cloud/api/v1/bot/giveaway/entries" \
  -H "Authorization: Bearer $PX_TOKEN"

List past giveaways

GET/api/v1/bot/giveaway/history

Lists finished PXStudioBot giveaways (newest first) with prize, entries and winners; with giveawayId one giveaway with its first entries. Names come from viewers.

Scope: bot:read (Read bot settings) · MCP tool: list_giveaway_history · Notes: read only

NameInTypeRequiredDescription
overlayIdquerystringoptionalAct on the bot of this overlay's owner. Only for overlays shared with you; leave out for your own bot. Up to 64 characters
giveawayIdquerystringoptional
limitqueryintegeroptional1 to 50
beforequeryintegeroptionalAt least 1
Terminal
curl -X GET "https://pxstudio.cloud/api/v1/bot/giveaway/history" \
  -H "Authorization: Bearer $PX_TOKEN"

Get giveaway defaults

GET/api/v1/bot/giveaway/defaults

Returns the saved giveaway defaults that every new giveaway starts with (keyword, prize, duration, winners, claim time, entry rules, ticket weights, platforms).

Scope: bot:read (Read bot settings) · MCP tool: get_giveaway_defaults · Notes: read only

NameInTypeRequiredDescription
overlayIdquerystringoptionalAct on the bot of this overlay's owner. Only for overlays shared with you; leave out for your own bot. Up to 64 characters
Terminal
curl -X GET "https://pxstudio.cloud/api/v1/bot/giveaway/defaults" \
  -H "Authorization: Bearer $PX_TOKEN"

Set giveaway defaults

PATCH/api/v1/bot/giveaway/defaults

Changes the saved giveaway defaults (send only what changes; replace true replaces all defaults with the given ones). Running giveaways are not affected.

Scope: bot:write (Change the bot) · MCP tool: set_giveaway_defaults

NameInTypeRequiredDescription
overlayIdquerystringoptionalAct on the bot of this overlay's owner. Only for overlays shared with you; leave out for your own bot. Up to 64 characters
keywordbodystringoptionalWord viewers type to join, e.g. join for !join. Up to 33 characters
matchModebodycommand, word, redeem, anyoptionalCommand = !keyword, word = the keyword anywhere, redeem = a channel point reward, any = all three
prizebodystringoptionalUp to 120 characters
durationMinbodyintegeroptionalMinutes until entries close (0 = until you close it). 0 to 120
winnersMaxbodyintegeroptional1 to 10
claimSecondsbodyintegeroptionalSeconds a winner has to answer in chat (0 = no claim, else 30 to 180). 0 to 180
platformsbodyarray of twitch, kickoptionalUp to 2 items
minRolebodyeveryone, sub, vip, mod, broadcasteroptionalLowest role allowed (everyone, sub, vip, mod, broadcaster)
weightingbodyobjectoptionalExtra tickets per role
gatesbodyobjectoptional
rewardIdbodystringoptionalChannel point reward id for matchMode redeem. Up to 64 characters
confirmJoinsbodybooleanoptional
showDisclaimerbodybooleanoptional
reminderEveryMinbodyintegeroptional0 to 60
autoRerollMaxbodyintegeroptional0 to 10
replacebodybooleanoptionalReplace all saved defaults instead of merging
Terminal
curl -X PATCH "https://pxstudio.cloud/api/v1/bot/giveaway/defaults" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "keyword": "...", "matchMode": "command" }'

Start giveaway

POST/api/v1/bot/giveaway

PUBLIC: starts a PXStudioBot giveaway in your chat right away; fields left out come from the saved defaults. Viewers join with the keyword.

Scope: bot:write (Change the bot) · MCP tool: start_giveaway · Notes: needs confirmation in MCP

NameInTypeRequiredDescription
overlayIdquerystringoptionalAct on the bot of this overlay's owner. Only for overlays shared with you; leave out for your own bot. Up to 64 characters
keywordbodystringoptionalWord viewers type to join, e.g. join for !join. Up to 33 characters
matchModebodycommand, word, redeem, anyoptionalCommand = !keyword, word = the keyword anywhere, redeem = a channel point reward, any = all three
prizebodystringoptionalUp to 120 characters
durationMinbodyintegeroptionalMinutes until entries close (0 = until you close it). 0 to 120
winnersMaxbodyintegeroptional1 to 10
claimSecondsbodyintegeroptionalSeconds a winner has to answer in chat (0 = no claim, else 30 to 180). 0 to 180
platformsbodyarray of twitch, kickoptionalUp to 2 items
minRolebodyeveryone, sub, vip, mod, broadcasteroptionalLowest role allowed (everyone, sub, vip, mod, broadcaster)
weightingbodyobjectoptionalExtra tickets per role
gatesbodyobjectoptional
rewardIdbodystringoptionalChannel point reward id for matchMode redeem. Up to 64 characters
confirmJoinsbodybooleanoptional
showDisclaimerbodybooleanoptional
reminderEveryMinbodyintegeroptional0 to 60
autoRerollMaxbodyintegeroptional0 to 10
Terminal
curl -X POST "https://pxstudio.cloud/api/v1/bot/giveaway" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "keyword": "...", "matchMode": "command" }'

Draw giveaway winner

POST/api/v1/bot/giveaway/draw

PUBLIC: draws the winner(s) of the running giveaway; the bot announces them in chat right away. Winner names come from viewers.

Scope: bot:write (Change the bot) · MCP tool: draw_giveaway_winner · Notes: needs confirmation in MCP

NameInTypeRequiredDescription
overlayIdquerystringoptionalAct on the bot of this overlay's owner. Only for overlays shared with you; leave out for your own bot. Up to 64 characters
countbodyintegeroptional1 to 10
Terminal
curl -X POST "https://pxstudio.cloud/api/v1/bot/giveaway/draw" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "count": 1 }'

Control giveaway

POST/api/v1/bot/giveaway/control

PUBLIC: pauses, resumes or closes entries of the running giveaway, rerolls a winner (the last one, or the winner named by login), draws the next winner or marks a winner as claimed (claim needs login). The bot posts it in chat.

Scope: bot:write (Change the bot) · MCP tool: control_giveaway · Notes: needs confirmation in MCP

NameInTypeRequiredDescription
overlayIdquerystringoptionalAct on the bot of this overlay's owner. Only for overlays shared with you; leave out for your own bot. Up to 64 characters
actionbodypause, resume, close, reroll, next, claimrequired
loginbodystringoptionalViewer login (chat name), with or without @. Up to 64 characters
Terminal
curl -X POST "https://pxstudio.cloud/api/v1/bot/giveaway/control" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "action": "pause" }'

Remove giveaway entry

POST/api/v1/bot/giveaway/entries/remove

MODERATION: removes a viewer from the running giveaway (they cannot win; a drawn winner loses the win).

Scope: bot:write (Change the bot) · MCP tool: remove_giveaway_entry · Notes: destructive, needs confirmation in MCP

NameInTypeRequiredDescription
overlayIdquerystringoptionalAct on the bot of this overlay's owner. Only for overlays shared with you; leave out for your own bot. Up to 64 characters
loginbodystringrequiredViewer login (chat name), with or without @. Up to 64 characters
platformbodytwitch, kickoptional
Terminal
curl -X POST "https://pxstudio.cloud/api/v1/bot/giveaway/entries/remove" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "login": "..." }'

Cancel giveaway

POST/api/v1/bot/giveaway/cancel

DESTRUCTIVE: cancels the running giveaway without a winner; the entries are gone and the bot says so in chat.

Scope: bot:write (Change the bot) · MCP tool: cancel_giveaway · Notes: destructive, needs confirmation in MCP

NameInTypeRequiredDescription
overlayIdquerystringoptionalAct on the bot of this overlay's owner. Only for overlays shared with you; leave out for your own bot. Up to 64 characters
Terminal
curl -X POST "https://pxstudio.cloud/api/v1/bot/giveaway/cancel" \
  -H "Authorization: Bearer $PX_TOKEN"

Get loyalty settings

GET/api/v1/bot/loyalty

Returns the loyalty points settings: point name, watchtime and chat points, event bonuses, platforms, slots, transfers, loans and rank badges.

Scope: bot:read (Read bot settings) · MCP tool: get_loyalty · Notes: read only

NameInTypeRequiredDescription
overlayIdquerystringoptionalAct on the bot of this overlay's owner. Only for overlays shared with you; leave out for your own bot. Up to 64 characters
Terminal
curl -X GET "https://pxstudio.cloud/api/v1/bot/loyalty" \
  -H "Authorization: Bearer $PX_TOKEN"

List loyalty leaderboard

GET/api/v1/bot/loyalty/top

Lists the viewers with the most loyalty points. Logins come from viewers.

Scope: bot:read (Read bot settings) · MCP tool: list_loyalty_leaderboard · Notes: read only

NameInTypeRequiredDescription
overlayIdquerystringoptionalAct on the bot of this overlay's owner. Only for overlays shared with you; leave out for your own bot. Up to 64 characters
limitqueryintegeroptional1 to 100
Terminal
curl -X GET "https://pxstudio.cloud/api/v1/bot/loyalty/top" \
  -H "Authorization: Bearer $PX_TOKEN"

Get loyalty viewer

GET/api/v1/bot/loyalty/viewers/{login}

Returns the loyalty points, watchtime, streak and rank of one viewer (on every platform where they have an account, or on platform).

Scope: bot:read (Read bot settings) · MCP tool: get_loyalty_viewer · Notes: read only

NameInTypeRequiredDescription
loginpathstringrequiredViewer login (chat name), with or without @. Up to 64 characters
overlayIdquerystringoptionalAct on the bot of this overlay's owner. Only for overlays shared with you; leave out for your own bot. Up to 64 characters
platformquerytwitch, kick, youtubeoptional
Terminal
curl -X GET "https://pxstudio.cloud/api/v1/bot/loyalty/viewers/<login>" \
  -H "Authorization: Bearer $PX_TOKEN"

Update loyalty settings

PATCH/api/v1/bot/loyalty

PUBLIC: changes the loyalty points settings (send only what changes; lists replace the old list). Viewers earn, spend and see points by the new rules right away.

Scope: bot:write (Change the bot) · MCP tool: update_loyalty_settings · Notes: needs confirmation in MCP

NameInTypeRequiredDescription
overlayIdquerystringoptionalAct on the bot of this overlay's owner. Only for overlays shared with you; leave out for your own bot. Up to 64 characters
enabledbodybooleanoptional
pointNamebodystringoptionalUp to 20 characters
watchtimebodyobjectoptional
chatBonusbodyobjectoptional
eventBonusbodyobjectoptional
platformsbodyobjectoptional
gamblingbodyobjectoptional
transferbodyobjectoptional
loanbodyobjectoptional
ranksbodyarray of objectoptionalRank badges (replaces the list). Up to 32 items
Terminal
curl -X PATCH "https://pxstudio.cloud/api/v1/bot/loyalty" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "enabled": true, "pointName": "..." }'

List loyalty rewards

GET/api/v1/bot/loyalty/rewards

Lists the loyalty rewards viewers can redeem with !redeem (cost, chat text, action).

Scope: bot:read (Read bot settings) · MCP tool: list_loyalty_rewards · Notes: read only

NameInTypeRequiredDescription
overlayIdquerystringoptionalAct on the bot of this overlay's owner. Only for overlays shared with you; leave out for your own bot. Up to 64 characters
Terminal
curl -X GET "https://pxstudio.cloud/api/v1/bot/loyalty/rewards" \
  -H "Authorization: Bearer $PX_TOKEN"

Create loyalty reward

POST/api/v1/bot/loyalty/rewards

PUBLIC: adds a loyalty reward viewers can redeem with !redeem right away, with an optional action (widget command, scene, spot, timeout of the redeemer, extra points or a bot command).

Scope: bot:write (Change the bot) · MCP tool: create_loyalty_reward · Notes: needs confirmation in MCP

NameInTypeRequiredDescription
overlayIdquerystringoptionalAct on the bot of this overlay's owner. Only for overlays shared with you; leave out for your own bot. Up to 64 characters
namebodystringrequiredName viewers use with !redeem. Up to 32 characters
costbodyintegerrequired1 to 1000000000
sayTemplatebodystringoptionalWhat the bot says on a redeem ({user}, {reward}, {cost}). Up to 200 characters
enabledbodybooleanoptional
actionbodyobjectoptional
Terminal
curl -X POST "https://pxstudio.cloud/api/v1/bot/loyalty/rewards" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "name": "...", "cost": 1 }'

Update loyalty reward

PATCH/api/v1/bot/loyalty/rewards/{rewardId}

PUBLIC: changes a loyalty reward (send only what changes; enabled alone switches it on or off). Viewers see the change right away.

Scope: bot:write (Change the bot) · MCP tool: update_loyalty_reward · Notes: needs confirmation in MCP

NameInTypeRequiredDescription
rewardIdpathintegerrequiredAt least 1
overlayIdquerystringoptionalAct on the bot of this overlay's owner. Only for overlays shared with you; leave out for your own bot. Up to 64 characters
namebodystringoptionalName viewers use with !redeem. Up to 32 characters
costbodyintegeroptional1 to 1000000000
sayTemplatebodystringoptionalWhat the bot says on a redeem ({user}, {reward}, {cost}). Up to 200 characters
enabledbodybooleanoptional
actionbodyobjectoptional
Terminal
curl -X PATCH "https://pxstudio.cloud/api/v1/bot/loyalty/rewards/<rewardId>" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "name": "...", "cost": 1 }'

Delete loyalty reward

DELETE/api/v1/bot/loyalty/rewards/{rewardId}

DESTRUCTIVE: deletes a loyalty reward; viewers can no longer redeem it.

Scope: bot:write (Change the bot) · MCP tool: delete_loyalty_reward · Notes: destructive, needs confirmation in MCP

NameInTypeRequiredDescription
rewardIdpathintegerrequiredAt least 1
overlayIdquerystringoptionalAct on the bot of this overlay's owner. Only for overlays shared with you; leave out for your own bot. Up to 64 characters
Terminal
curl -X DELETE "https://pxstudio.cloud/api/v1/bot/loyalty/rewards/<rewardId>" \
  -H "Authorization: Bearer $PX_TOKEN"

Trigger loyalty reward

POST/api/v1/bot/loyalty/rewards/{rewardId}/trigger

ON AIR: runs a loyalty reward now. preview runs its action without points; redeem redeems it for a viewer (login) and takes their points.

Scope: bot:write (Change the bot) · MCP tool: trigger_loyalty_reward · Notes: destructive, needs confirmation in MCP

NameInTypeRequiredDescription
rewardIdpathintegerrequiredAt least 1
overlayIdquerystringoptionalAct on the bot of this overlay's owner. Only for overlays shared with you; leave out for your own bot. Up to 64 characters
modebodypreview, redeemrequired
loginbodystringoptionalViewer login (chat name), with or without @. Up to 64 characters
platformbodytwitch, kick, youtubeoptional
Terminal
curl -X POST "https://pxstudio.cloud/api/v1/bot/loyalty/rewards/<rewardId>/trigger" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "mode": "preview" }'

Adjust loyalty points

POST/api/v1/bot/loyalty/adjust

PUBLIC: gives (positive delta) or takes (negative delta) loyalty points of a viewer; their balance and the leaderboard change right away. reason (optional) is kept in the overlay owner's team activity log when a team member adjusts points.

Scope: bot:write (Change the bot) · MCP tool: adjust_loyalty_points · Notes: needs confirmation in MCP

NameInTypeRequiredDescription
overlayIdquerystringoptionalAct on the bot of this overlay's owner. Only for overlays shared with you; leave out for your own bot. Up to 64 characters
loginbodystringrequiredViewer login (chat name), with or without @. Up to 64 characters
platformbodytwitch, kick, youtubeoptional
deltabodyintegerrequired-1000000 to 1000000
reasonbodystringoptionalWhy, e.g. "won the quiz". Up to 100 characters
Terminal
curl -X POST "https://pxstudio.cloud/api/v1/bot/loyalty/adjust" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "login": "...", "delta": 1 }'

List channel point actions

GET/api/v1/bot/channel-points

Lists what happens when viewers redeem Twitch channel point rewards (your actions per reward), whether Twitch allows reading redemptions, and the last redemptions (viewer names and texts come from viewers). Only for your own account.

Scope: bot:read (Read bot settings) · MCP tool: list_channel_point_rewards · Notes: read only

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

Create channel point action

POST/api/v1/bot/channel-points

PUBLIC: adds what happens when viewers redeem a Twitch channel point reward (match by reward id or title): fire a widget command, put a scene on air, move a layer into a spot, show a media favorite, post in chat or change the stream title or category. Only for your own account.

Scope: bot:write (Change the bot) · MCP tool: create_channel_point_reward · Notes: needs confirmation in MCP

NameInTypeRequiredDescription
namebodystringrequiredUp to 60 characters
matchbodyobjectrequiredWhich Twitch channel point reward triggers it: by reward id (from the recent redemptions) or by title
actionbodyobjectrequired
enabledbodybooleanoptional
cooldownSecbodyintegeroptional0 to 86400
Terminal
curl -X POST "https://pxstudio.cloud/api/v1/bot/channel-points" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "name": "...", "match": {}, "action": {} }'

Update channel point action

PATCH/api/v1/bot/channel-points/{rewardId}

PUBLIC: changes a channel point action (send only what changes; enabled alone switches it on or off). It applies to the next redemption. Only for your own account.

Scope: bot:write (Change the bot) · MCP tool: update_channel_point_reward · Notes: needs confirmation in MCP

NameInTypeRequiredDescription
rewardIdpathintegerrequiredChannel point action id from list_channel_point_rewards. At least 1
namebodystringoptionalUp to 60 characters
matchbodyobjectoptionalWhich Twitch channel point reward triggers it: by reward id (from the recent redemptions) or by title
actionbodyobjectoptional
enabledbodybooleanoptional
cooldownSecbodyintegeroptional0 to 86400
Terminal
curl -X PATCH "https://pxstudio.cloud/api/v1/bot/channel-points/<rewardId>" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "name": "...", "match": {} }'

Delete channel point action

DELETE/api/v1/bot/channel-points/{rewardId}

DESTRUCTIVE: deletes a channel point action; redemptions of that reward do nothing in PX Studio anymore. The reward on Twitch stays. Only for your own account.

Scope: bot:write (Change the bot) · MCP tool: delete_channel_point_reward · Notes: destructive, needs confirmation in MCP

NameInTypeRequiredDescription
rewardIdpathintegerrequiredAt least 1
Terminal
curl -X DELETE "https://pxstudio.cloud/api/v1/bot/channel-points/<rewardId>" \
  -H "Authorization: Bearer $PX_TOKEN"

Test channel point action

POST/api/v1/bot/channel-points/{rewardId}/simulate

ON AIR: runs a channel point action once as if "Test Viewer" redeemed it; its action shows on stream right away. Only for your own account.

Scope: bot:write (Change the bot) · MCP tool: simulate_channel_point_reward · Notes: destructive, needs confirmation in MCP

NameInTypeRequiredDescription
rewardIdpathintegerrequiredAt least 1
Terminal
curl -X POST "https://pxstudio.cloud/api/v1/bot/channel-points/<rewardId>/simulate" \
  -H "Authorization: Bearer $PX_TOKEN"

Was this page helpful?