Skip to content
Docs

Bot API

PXStudioBot: commands, timers, loyalty, giveaways, song requests and moderation.

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
List bot commandsGET /bot/commandsbot:read
Create bot commandPOST /bot/commandsbot:write
Update bot commandPATCH /bot/commands/{commandId}bot:write
Delete bot commandDELETE /bot/commands/{commandId}bot:write
Get song queueGET /bot/songsbot:read
Skip, pause or resume songsPOST /bot/songs/controlbot:write
Set song volumePUT /bot/songs/volumebot:write
Remove song requestDELETE /bot/songs/{requestId}bot:write
Clear song queueDELETE /bot/songsbot:write
Get bot statusGET /bot/statusbot:read
Switch the bot on or off for a platformPUT /bot/platforms/{platform}bot:write
Set bot languagePUT /bot/languagebot:write
Get bot settingsGET /bot/settingsbot:read
Update bot settingsPATCH /bot/settingsbot:write
Get bot system messagesGET /bot/system-messagesbot:read
Update bot system messagesPATCH /bot/system-messagesbot:write
Switch bot command on or offPUT /bot/commands/{commandId}/enabledbot:write
Export bot commandsGET /bot/commands/exportbot:read
Import bot commandsPOST /bot/commands/importbot:write
Replace all bot commandsPOST /bot/commands/replacebot:write
Switch built-in command on or offPUT /bot/builtins/{name}bot:write
List bot timersGET /bot/timersbot:read
Create bot timerPOST /bot/timersbot:write
Update bot timerPATCH /bot/timers/{timerId}bot:write
Delete bot timerDELETE /bot/timers/{timerId}bot:write
List bot countersGET /bot/countersbot:read
Create bot counterPOST /bot/countersbot:write
Update bot counterPATCH /bot/counters/{counterId}bot:write
Delete bot counterDELETE /bot/counters/{counterId}bot:write
List bot quotesGET /bot/quotesbot:read
Add bot quotePOST /bot/quotesbot:write
Delete bot quoteDELETE /bot/quotes/{quoteId}bot:write
List custom APIsGET /bot/custom-apisbot:read
Create custom APIPOST /bot/custom-apisbot:write
Update custom APIPATCH /bot/custom-apis/{apiId}bot:write
Delete custom APIDELETE /bot/custom-apis/{apiId}bot:write
Get bot moderationGET /bot/moderationbot:read
Update bot moderationPATCH /bot/moderationbot:write
Update song request settingsPATCH /bot/songs/settingsbot:write
Move song requestPUT /bot/songs/{requestId}/positionbot:write

Operations

List bot commands

GET/api/v1/bot/commands

Lists your PXStudioBot chat commands with all their settings and which built-in commands are switched off.

Scope: bot:read (Read bot settings) · MCP tool: list_bot_commands · 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/commands" \
  -H "Authorization: Bearer $PX_TOKEN"

Create bot command

POST/api/v1/bot/commands

Creates a PXStudioBot chat command (live in chat right away) with every field of the bot editor: reply, alternative replies, aliases, trigger, reply mode, lowest role, cooldowns, platforms, on/off and an optional action (fire a widget command on a layer, put a scene on air, move a layer into a spot). Action targets are layers (overlayId + memberId).

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

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
namebodystringrequiredCommand name without the "!" prefix, e.g. "discord" (lowercase letters, digits, underscore). Up to 40 characters
responsebodystringoptionalThe text the bot replies with (up to 400 characters). Placeholders like {user} or {count:name} work. Up to 400 characters
responsePoolbodyarray of stringoptionalAlternative replies; the bot picks one at random. Up to 10 items
aliasesbodyarray of stringoptionalOther names for the same command. Up to 10 items
triggerTypebodycommand, keyword, regexoptionalCommand = !name, keyword = a word anywhere in a message, regex = a pattern
patternbodystringoptionalKeyword or regular expression for keyword/regex triggers. Up to 200 characters
replyModebodychannel, reply, whisper, silentoptionalWhere the reply goes; silent runs only the action
minRolebodyeveryone, sub, vip, mod, broadcasteroptionalLowest role allowed (everyone, sub, vip, mod, broadcaster)
cooldownGlobalSbodyintegeroptional0 to 3600
cooldownUserSbodyintegeroptional0 to 3600
modsBypassCooldownbodybooleanoptional
platformsbodyarray of twitch, kick, youtubeoptionalPlatforms; an empty list means all platforms. Up to 3 items
enabledbodybooleanoptionalFalse keeps the command switched off
actionbodyobjectoptional
Terminal
curl -X POST "https://pxstudio.cloud/api/v1/bot/commands" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "name": "..." }'

Update bot command

PATCH/api/v1/bot/commands/{commandId}

Changes a PXStudioBot command: send only the fields to change (same fields as create_bot_command; action type none removes the action). Live in chat right away.

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

NameInTypeRequiredDescription
commandIdpathintegerrequiredAt 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
namebodystringoptionalCommand name without the "!" prefix, e.g. "discord" (lowercase letters, digits, underscore). Up to 40 characters
responsebodystringoptionalThe text the bot replies with (up to 400 characters). Placeholders like {user} or {count:name} work. Up to 400 characters
responsePoolbodyarray of stringoptionalAlternative replies; the bot picks one at random. Up to 10 items
aliasesbodyarray of stringoptionalOther names for the same command. Up to 10 items
triggerTypebodycommand, keyword, regexoptionalCommand = !name, keyword = a word anywhere in a message, regex = a pattern
patternbodystringoptionalKeyword or regular expression for keyword/regex triggers. Up to 200 characters
replyModebodychannel, reply, whisper, silentoptionalWhere the reply goes; silent runs only the action
minRolebodyeveryone, sub, vip, mod, broadcasteroptionalLowest role allowed (everyone, sub, vip, mod, broadcaster)
cooldownGlobalSbodyintegeroptional0 to 3600
cooldownUserSbodyintegeroptional0 to 3600
modsBypassCooldownbodybooleanoptional
platformsbodyarray of twitch, kick, youtubeoptionalPlatforms; an empty list means all platforms. Up to 3 items
enabledbodybooleanoptionalFalse keeps the command switched off
actionbodyobjectoptional
Terminal
curl -X PATCH "https://pxstudio.cloud/api/v1/bot/commands/<commandId>" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "name": "...", "response": "..." }'

Delete bot command

DELETE/api/v1/bot/commands/{commandId}

DESTRUCTIVE: deletes a PXStudioBot command.

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

NameInTypeRequiredDescription
commandIdpathintegerrequiredAt 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/commands/<commandId>" \
  -H "Authorization: Bearer $PX_TOKEN"

Get song queue

GET/api/v1/bot/songs

Returns the PXStudioBot song requests: whether they are switched on, the song playing now, the waiting queue, pause state and volume. Song titles and requester names come from viewers.

Scope: bot:read (Read bot settings) · MCP tool: get_song_queue · 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/songs" \
  -H "Authorization: Bearer $PX_TOKEN"

Skip, pause or resume songs

POST/api/v1/bot/songs/control

ON AIR: skips the current song request, pauses or resumes song playback for your stream right away.

Scope: bot:write (Change the bot) · MCP tool: control_songs · Notes: destructive

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
actionbodyskip, pause, resumerequired
Terminal
curl -X POST "https://pxstudio.cloud/api/v1/bot/songs/control" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "action": "skip" }'

Set song volume

PUT/api/v1/bot/songs/volume

Sets the playback volume of song requests (0 to 100).

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

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
volumebodyintegerrequired0 to 100
Terminal
curl -X PUT "https://pxstudio.cloud/api/v1/bot/songs/volume" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "volume": 1 }'

Remove song request

DELETE/api/v1/bot/songs/{requestId}

DESTRUCTIVE: removes one song request from the queue (requestId from get_song_queue).

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

NameInTypeRequiredDescription
requestIdpathintegerrequiredSong request id from get_song_queue. At 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/songs/<requestId>" \
  -H "Authorization: Bearer $PX_TOKEN"

Clear song queue

DELETE/api/v1/bot/songs

DESTRUCTIVE: removes every waiting song request from the queue.

Scope: bot:write (Change the bot) · MCP tool: clear_song_queue · 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 DELETE "https://pxstudio.cloud/api/v1/bot/songs" \
  -H "Authorization: Bearer $PX_TOKEN"

Get bot status

GET/api/v1/bot/status

Returns whether PXStudioBot is connected and active on Twitch, Kick and YouTube, whether a platform needs a reconnect, and chat stats (messages today and in 7 days, commands).

Scope: bot:read (Read bot settings) · MCP tool: get_bot_status · 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/status" \
  -H "Authorization: Bearer $PX_TOKEN"

Switch the bot on or off for a platform

PUT/api/v1/bot/platforms/{platform}

PUBLIC: lets PXStudioBot join (active: true) or leave (active: false) your own chat on Twitch, Kick or YouTube. Only for your own account; connecting a platform happens in the app settings.

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

NameInTypeRequiredDescription
platformpathtwitch, kick, youtuberequired
activebodybooleanrequired
Terminal
curl -X PUT "https://pxstudio.cloud/api/v1/bot/platforms/<platform>" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "active": true }'

Set bot language

PUT/api/v1/bot/language

PUBLIC: sets the language of the PXStudioBot built-in chat replies (en or de); inherit follows your studio language. Only for your own account.

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

NameInTypeRequiredDescription
localebodyen, de, inheritrequired
Terminal
curl -X PUT "https://pxstudio.cloud/api/v1/bot/language" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "locale": "en" }'

Get bot settings

GET/api/v1/bot/settings

Returns the PXStudioBot settings: deny feedback, chat command editing (!cmd), quotes from chat, and (for your own bot) the bot language.

Scope: bot:read (Read bot settings) · MCP tool: get_bot_settings · 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/settings" \
  -H "Authorization: Bearer $PX_TOKEN"

Update bot settings

PATCH/api/v1/bot/settings

PUBLIC: changes PXStudioBot settings (send only what changes): deny feedback in chat, chat command editing (!cmd) and quotes from chat. Viewers notice it right away.

Scope: bot:write (Change the bot) · MCP tool: update_bot_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
denyFeedbackbodybooleanoptionalThe bot tells viewers when they may not use a command
chatCrudEnabledbodybooleanoptionalMods can add, edit and delete commands from chat (!cmd)
quoteChatEnabledbodybooleanoptionalViewers can read and mods can add quotes from chat (!quote)
Terminal
curl -X PATCH "https://pxstudio.cloud/api/v1/bot/settings" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "denyFeedback": true, "chatCrudEnabled": true }'

Get bot system messages

GET/api/v1/bot/system-messages

Lists the built-in PXStudioBot chat messages (giveaway, loyalty, songs and more) with the default text, your own text and whether each is on. Filter with group.

Scope: bot:read (Read bot settings) · MCP tool: get_bot_system_messages · 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
groupquerybuiltin, giveaway, loyalty, songs, youtube, feedback, cmd, quoteoptionalOnly messages of this group
Terminal
curl -X GET "https://pxstudio.cloud/api/v1/bot/system-messages" \
  -H "Authorization: Bearer $PX_TOKEN"

Update bot system messages

PATCH/api/v1/bot/system-messages

PUBLIC: changes built-in PXStudioBot chat messages (1 to 20 at once): text sets your own text, enabled false switches a message off, reset goes back to the default. Other messages stay as they are.

Scope: bot:write (Change the bot) · MCP tool: update_bot_system_messages · 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
changesbodyarray of objectrequiredUp to 20 items
Terminal
curl -X PATCH "https://pxstudio.cloud/api/v1/bot/system-messages" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "changes": [] }'

Switch bot command on or off

PUT/api/v1/bot/commands/{commandId}/enabled

PUBLIC: switches a PXStudioBot command on or off; viewers can use it (or not) in chat right away.

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

NameInTypeRequiredDescription
commandIdpathintegerrequiredAt 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
enabledbodybooleanrequired
Terminal
curl -X PUT "https://pxstudio.cloud/api/v1/bot/commands/<commandId>/enabled" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "enabled": true }'

Export bot commands

GET/api/v1/bot/commands/export

Exports all PXStudioBot commands in the form import_bot_commands takes (actions point to layers; an action whose layer you cannot see is marked actionTarget.unattached, and import keeps the saved action for it).

Scope: bot:read (Read bot settings) · MCP tool: export_bot_commands · 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/commands/export" \
  -H "Authorization: Bearer $PX_TOKEN"

Import bot commands

POST/api/v1/bot/commands/import

PUBLIC: imports PXStudioBot commands (1 to 50). A command with an existing name is updated, a new name is created; all are live in chat right away. Other commands stay.

Scope: bot:write (Change the bot) · MCP tool: import_bot_commands · 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
commandsbodyarray of objectrequiredCommands in the same form as create_bot_command (and export_bot_commands). Up to 50 items
Terminal
curl -X POST "https://pxstudio.cloud/api/v1/bot/commands/import" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "commands": [] }'

Replace all bot commands

POST/api/v1/bot/commands/replace

DESTRUCTIVE: replaces ALL your PXStudioBot commands with the given list (1 to 50): every other command is deleted. Switched-off built-in commands stay switched off.

Scope: bot:write (Change the bot) · MCP tool: replace_bot_commands · 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
commandsbodyarray of objectrequiredCommands in the same form as create_bot_command (and export_bot_commands). Up to 50 items
Terminal
curl -X POST "https://pxstudio.cloud/api/v1/bot/commands/replace" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "commands": [] }'

Switch built-in command on or off

PUT/api/v1/bot/builtins/{name}

PUBLIC: switches a built-in PXStudioBot command (like !uptime or !points) on or off in chat right away. If you have your own command with that name, change that one instead.

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

NameInTypeRequiredDescription
namepathcommands, uptime, title, game, so, followage, giveaway, join, claim, odds, points, top, redeem, link, slots, gamble, give, transfer, loan, borrow, sr, song, queue, skip, voteskip, wrongsong, cmd, quote, quotesrequired
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
enabledbodybooleanrequired
Terminal
curl -X PUT "https://pxstudio.cloud/api/v1/bot/builtins/<name>" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "enabled": true }'

List bot timers

GET/api/v1/bot/timers

Lists your PXStudioBot timers (messages or commands the bot posts every few minutes).

Scope: bot:read (Read bot settings) · MCP tool: list_bot_timers · 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/timers" \
  -H "Authorization: Bearer $PX_TOKEN"

Create bot timer

POST/api/v1/bot/timers

PUBLIC: creates a PXStudioBot timer that posts a message (or runs a bot command) in your chat every intervalMin minutes.

Scope: bot:write (Change the bot) · MCP tool: create_bot_timer · 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 of the timer (only you see it). Up to 64 characters
messagebodystringoptionalText the bot posts every interval. Up to 400 characters
commandNamebodystringoptionalInstead of a text: run this bot command every interval. Up to 32 characters
intervalMinbodyintegerrequiredMinutes between posts. 2 to 1440
minMessagesbodyintegeroptionalChat messages needed since the last post (0 = always post). 0 to 1000
liveOnlybodybooleanoptionalOnly post while you are live
platformsbodyarray of twitch, kick, youtubeoptionalPlatforms; an empty list means all platforms. Up to 3 items
enabledbodybooleanoptional
Terminal
curl -X POST "https://pxstudio.cloud/api/v1/bot/timers" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "name": "...", "intervalMin": 2 }'

Update bot timer

PATCH/api/v1/bot/timers/{timerId}

PUBLIC: changes a PXStudioBot timer (send only what changes; enabled alone switches it on or off). It posts with the new settings right away.

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

NameInTypeRequiredDescription
timerIdpathintegerrequiredAt 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 of the timer (only you see it). Up to 64 characters
messagebodystringoptionalText the bot posts every interval. Up to 400 characters
commandNamebodystringoptionalInstead of a text: run this bot command every interval. Up to 32 characters
intervalMinbodyintegeroptionalMinutes between posts. 2 to 1440
minMessagesbodyintegeroptionalChat messages needed since the last post (0 = always post). 0 to 1000
liveOnlybodybooleanoptionalOnly post while you are live
platformsbodyarray of twitch, kick, youtubeoptionalPlatforms; an empty list means all platforms. Up to 3 items
enabledbodybooleanoptional
Terminal
curl -X PATCH "https://pxstudio.cloud/api/v1/bot/timers/<timerId>" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "name": "...", "message": "..." }'

Delete bot timer

DELETE/api/v1/bot/timers/{timerId}

DESTRUCTIVE: deletes a PXStudioBot timer.

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

NameInTypeRequiredDescription
timerIdpathintegerrequiredAt 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/timers/<timerId>" \
  -H "Authorization: Bearer $PX_TOKEN"

List bot counters

GET/api/v1/bot/counters

Lists your PXStudioBot counters (chat variables like {count:deaths}) with their values.

Scope: bot:read (Read bot settings) · MCP tool: list_bot_counters · 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/counters" \
  -H "Authorization: Bearer $PX_TOKEN"

Create bot counter

POST/api/v1/bot/counters

Creates a PXStudioBot counter (use it in replies as {count:name}).

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

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
namebodystringrequiredLowercase letters, digits and underscore, without "!". Up to 32 characters
valuebodyintegeroptional-1000000000 to 1000000000
Terminal
curl -X POST "https://pxstudio.cloud/api/v1/bot/counters" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "name": "..." }'

Update bot counter

PATCH/api/v1/bot/counters/{counterId}

Changes a PXStudioBot counter: delta adds (or subtracts) to the value, value sets it, name renames it. Send value or delta, not both.

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

NameInTypeRequiredDescription
counterIdpathintegerrequiredAt 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
namebodystringoptionalLowercase letters, digits and underscore, without "!". Up to 32 characters
valuebodyintegeroptional-1000000000 to 1000000000
deltabodyintegeroptional-1000 to 1000
Terminal
curl -X PATCH "https://pxstudio.cloud/api/v1/bot/counters/<counterId>" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "name": "...", "value": 1 }'

Delete bot counter

DELETE/api/v1/bot/counters/{counterId}

DESTRUCTIVE: deletes a PXStudioBot counter and its value.

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

NameInTypeRequiredDescription
counterIdpathintegerrequiredAt 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/counters/<counterId>" \
  -H "Authorization: Bearer $PX_TOKEN"

List bot quotes

GET/api/v1/bot/quotes

Lists your PXStudioBot quotes (newest first), optionally filtered by text.

Scope: bot:read (Read bot settings) · MCP tool: list_bot_quotes · 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
qquerystringoptionalOnly quotes containing this text. Up to 100 characters
quoteIdqueryintegeroptionalOnly this quote. At least 1
limitqueryintegeroptional1 to 50
Terminal
curl -X GET "https://pxstudio.cloud/api/v1/bot/quotes" \
  -H "Authorization: Bearer $PX_TOKEN"

Add bot quote

POST/api/v1/bot/quotes

Adds a quote to your PXStudioBot quotes (viewers read them with !quote).

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

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
textbodystringrequiredUp to 500 characters
authorbodystringoptionalUp to 64 characters
Terminal
curl -X POST "https://pxstudio.cloud/api/v1/bot/quotes" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "text": "..." }'

Delete bot quote

DELETE/api/v1/bot/quotes/{quoteId}

DESTRUCTIVE: deletes a PXStudioBot quote.

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

NameInTypeRequiredDescription
quoteIdpathintegerrequiredAt 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/quotes/<quoteId>" \
  -H "Authorization: Bearer $PX_TOKEN"

List custom APIs

GET/api/v1/bot/custom-apis

Lists the custom APIs your PXStudioBot replies can use ({api:name}). Header values and URL query values stay hidden.

Scope: bot:read (Read bot settings) · MCP tool: list_custom_apis · 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/custom-apis" \
  -H "Authorization: Bearer $PX_TOKEN"

Create custom API

POST/api/v1/bot/custom-apis

EXTERNAL: adds a custom API the server calls (GET over https) when a bot reply uses {api:name}. Header values (keys) are only set in the Bot desk.

Scope: bot:write (Change the bot) · MCP tool: create_custom_api · 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 used in replies as {api:name}. Up to 32 characters
urlTemplatebodystringrequiredHttps URL the server calls; placeholders like {user} or {query} work. Private and local hosts are refused. Up to 500 characters
responsePathbodystringoptionalDot path into the JSON answer, e.g. data.0.title (empty = whole text). Up to 200 characters
cacheSbodyintegeroptionalSeconds to reuse an answer. 0 to 3600
enabledbodybooleanoptional
Terminal
curl -X POST "https://pxstudio.cloud/api/v1/bot/custom-apis" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "name": "...", "urlTemplate": "..." }'

Update custom API

PATCH/api/v1/bot/custom-apis/{apiId}

EXTERNAL: changes a custom API (send only what changes). Saved header values stay with the same host and are only changed in the Bot desk. A new urlTemplate on another host is refused while header values are saved (ui_only), unless dropHeaders is true: then the saved header values are deleted and never reach the new host.

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

NameInTypeRequiredDescription
apiIdpathintegerrequiredAt 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 used in replies as {api:name}. Up to 32 characters
urlTemplatebodystringoptionalHttps URL the server calls; placeholders like {user} or {query} work. Private and local hosts are refused. Up to 500 characters
responsePathbodystringoptionalDot path into the JSON answer, e.g. data.0.title (empty = whole text). Up to 200 characters
cacheSbodyintegeroptionalSeconds to reuse an answer. 0 to 3600
enabledbodybooleanoptional
dropHeadersbodybooleanoptionalTrue deletes the saved header values (needed to move a custom API with header values to another host)
Terminal
curl -X PATCH "https://pxstudio.cloud/api/v1/bot/custom-apis/<apiId>" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "name": "...", "urlTemplate": "..." }'

Delete custom API

DELETE/api/v1/bot/custom-apis/{apiId}

DESTRUCTIVE: deletes a custom API; replies that use {api:name} show nothing for it.

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

NameInTypeRequiredDescription
apiIdpathintegerrequiredAt 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/custom-apis/<apiId>" \
  -H "Authorization: Bearer $PX_TOKEN"

Get bot moderation

GET/api/v1/bot/moderation

Returns the PXStudioBot chat filters (banned words, links, caps, emotes, symbols, repetition, message length, first messages), strike escalation, exempt roles and the viewer whitelist.

Scope: bot:read (Read bot settings) · MCP tool: get_bot_moderation · 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/moderation" \
  -H "Authorization: Bearer $PX_TOKEN"

Update bot moderation

PATCH/api/v1/bot/moderation

MODERATION: changes PXStudioBot chat filters (send only what changes; lists replace the old list). The bot deletes, warns, times out or bans viewers by the new rules right away.

Scope: bot:write (Change the bot) · MCP tool: update_bot_moderation · 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
exemptRolesbodyobjectoptionalRoles the filters skip
whitelistbodyarray of stringoptionalViewer logins the filters skip (replaces the list). Up to 100 items
strikesbodyobjectoptional
filtersbodyobjectoptional
Terminal
curl -X PATCH "https://pxstudio.cloud/api/v1/bot/moderation" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "exemptRoles": {}, "whitelist": [] }'

Update song request settings

PATCH/api/v1/bot/songs/settings

PUBLIC: changes the song request rules (send only what changes): on/off for viewers, longest song, songs per viewer, subs only, point cost, vote skip and blocked videos. Viewers notice it in chat right away.

Scope: bot:write (Change the bot) · MCP tool: update_song_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
enabledbodybooleanoptionalViewers can request songs with !sr
maxDurationSbodyintegeroptionalLongest allowed song in seconds (0 = no limit). 0 to 36000
maxPerUserbodyintegeroptionalSongs one viewer may have in the queue. 1 to 20
subOnlybodybooleanoptional
loyaltyCostbodyintegeroptionalLoyalty points a request costs (0 = free). 0 to 1000000000
voteSkipThresholdbodyintegeroptionalVotes needed for !voteskip. 1 to 1000
blacklistbodyarray of stringoptionalBlocked YouTube video ids (replaces the list). Up to 500 items
Terminal
curl -X PATCH "https://pxstudio.cloud/api/v1/bot/songs/settings" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "enabled": true, "maxDurationS": 1 }'

Move song request

PUT/api/v1/bot/songs/{requestId}/position

Moves one waiting song request one place up or down in the queue (position counts from 0).

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

NameInTypeRequiredDescription
requestIdpathintegerrequiredAt 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
directionbodyup, downrequired
Terminal
curl -X PUT "https://pxstudio.cloud/api/v1/bot/songs/<requestId>/position" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "direction": "up" }'

Was this page helpful?