Skip to content

Custom commands API

Use these actions to manage the chat commands that reply with a set message, for example !discord.

Each action is a REST endpoint under https://kickbot.com/api/v1 and an MCP tool with the same name. The MCP area name is commands. Use it to load only this area: https://kickbot.com/api/v1/mcp?areas=commands.

A team member needs the Custom commands permission in Manage Team. Owners and admins have every permission. Write actions also need a read and write key or connection. See Permissions and security.

How the feature works in the dashboard: Custom commands, Command variables.

ToolRESTAccess
list_commandsGET /commandsRead
get_commandGET /commands/{id}Read
create_commandPOST /commandsWrite
update_commandPATCH /commands/{id}Write
set_command_by_namePUT /commands/by-name/{name}Write
delete_commandDELETE /commands/{id}Write

List custom commands. List all chat commands: custom ones and the built-in ones (built_in = true, which can be edited and disabled but not renamed or deleted).

GET /api/v1/commands

No input fields.

Get a command. Get one command by id.

GET /api/v1/commands/{id}
FieldTypeRequiredDescription
id (in the path)integerYesThe item id.

Create a custom command. Create a custom chat command. Needs the Kick channel connected to KickBot. Use set_command_by_name instead if the command may already exist.

POST /api/v1/commands

Needs a read and write key or connection.

FieldTypeRequiredDescription
namestringYesTrigger word without ”!”, for example “discord” for !discord. Up to 20 characters, no spaces.
responsestringYesWhat KickBot replies, up to 500 characters. Variables use double curly braces: {{sender.username}}, {{sender.followers}}, {{sender.followage}}, {{sender.url}}, {{streamer.username}}, {{streamer.followers}}, {{streamer.url}}, {{param}} (the word after the command), {{taggedUser.username}}, {{taggedUser.followers}}, {{taggedUser.followage}}, {{stream.title}}, {{stream.category}}, {{stream.viewers}}, {{randomRange(1,100)}}, {{randomItem(“a”,“b”,“c”)}}, {{request(“https://api.example.com”).value}} (text from a URL).
mod_onlybooleanNoModerators can use the command.
sub_onlybooleanNoSubscribers can use the command.
vip_onlybooleanNoVIPs can use the command.
everyone_onlybooleanNoEveryone can use the command. Default true.
enabledbooleanNoDefault true. Free plans can have 5 enabled custom commands; over the limit a new command is created disabled (the response then has a note).
user_cooldownintegerNoSeconds before the same viewer can use it again, 0-300. Default 0.
global_cooldownintegerNoSeconds before anyone can use it again, 0-300. Default 0.

Update a command. Change some fields of a command. Only the fields you send change. Built-in commands keep their name.

PATCH /api/v1/commands/{id}

Needs a read and write key or connection.

FieldTypeRequiredDescription
namestringNoTrigger word without ”!”, for example “discord” for !discord. Up to 20 characters, no spaces.
responsestringNoWhat KickBot replies, up to 500 characters. Variables use double curly braces: {{sender.username}}, {{sender.followers}}, {{sender.followage}}, {{sender.url}}, {{streamer.username}}, {{streamer.followers}}, {{streamer.url}}, {{param}} (the word after the command), {{taggedUser.username}}, {{taggedUser.followers}}, {{taggedUser.followage}}, {{stream.title}}, {{stream.category}}, {{stream.viewers}}, {{randomRange(1,100)}}, {{randomItem(“a”,“b”,“c”)}}, {{request(“https://api.example.com”).value}} (text from a URL).
mod_onlybooleanNoModerators can use the command.
sub_onlybooleanNoSubscribers can use the command.
vip_onlybooleanNoVIPs can use the command.
everyone_onlybooleanNoEveryone can use the command. Default true.
enabledbooleanNoDefault true. Free plans can have 5 enabled custom commands; over the limit a new command is created disabled (the response then has a note).
user_cooldownintegerNoSeconds before the same viewer can use it again, 0-300. Default 0.
global_cooldownintegerNoSeconds before anyone can use it again, 0-300. Default 0.
id (in the path)integerYesThe item id.

Create or update a command by name. Idempotent setup: if a command with this name exists, update it with the fields you send; if not, create it (unset fields use the defaults). Safe to run again.

PUT /api/v1/commands/by-name/{name}

Needs a read and write key or connection.

FieldTypeRequiredDescription
name (in the path)stringYesTrigger word without ”!”, for example “discord” for !discord. Up to 20 characters, no spaces.
responsestringNoWhat KickBot replies, up to 500 characters. Variables use double curly braces: {{sender.username}}, {{sender.followers}}, {{sender.followage}}, {{sender.url}}, {{streamer.username}}, {{streamer.followers}}, {{streamer.url}}, {{param}} (the word after the command), {{taggedUser.username}}, {{taggedUser.followers}}, {{taggedUser.followage}}, {{stream.title}}, {{stream.category}}, {{stream.viewers}}, {{randomRange(1,100)}}, {{randomItem(“a”,“b”,“c”)}}, {{request(“https://api.example.com”).value}} (text from a URL).
mod_onlybooleanNoModerators can use the command.
sub_onlybooleanNoSubscribers can use the command.
vip_onlybooleanNoVIPs can use the command.
everyone_onlybooleanNoEveryone can use the command. Default true.
enabledbooleanNoDefault true. Free plans can have 5 enabled custom commands; over the limit a new command is created disabled (the response then has a note).
user_cooldownintegerNoSeconds before the same viewer can use it again, 0-300. Default 0.
global_cooldownintegerNoSeconds before anyone can use it again, 0-300. Default 0.

Delete a custom command. Delete a custom command. Built-in commands cannot be deleted; disable them with update_command.

DELETE /api/v1/commands/{id}

Needs a read and write key or connection. This can delete or replace data, and you may not be able to undo it.

FieldTypeRequiredDescription
id (in the path)integerYesThe item id.