OpenAPI Specification
openapi: 3.0.0
info:
title: SE API Docs activities commands API
description: '## Custom Variable types
`guid` - string that matches pattern: `/^[0-9a-fA-F]{24}$/` (24 character hexadecimal string)
`datetime` - either timestamp in milliseconds (unix timestamp*1000) or string in ISO 8061 format
## Global variables
`Authorization` - string: JWT Token you can obtain here: https://streamelements.com/dashboard/account/channels (click "Show secrets")
`channelId` - guid: obtained by requesting `/channels/me` endpoint with provided JWT token
`channelName` - string: lowercase channel name
`timezone` - integer: timezone index'
contact: {}
version: '1.0'
servers:
- url: https://api.streamelements.com/kappa/v2
description: V2
variables: {}
- url: https://api.streamelements.com/kappa/v3
description: V3
variables: {}
security:
- JWTBearer: []
- OAuth2: []
- ApiKeyBearer: []
tags:
- name: commands
description: Bot commands management
paths:
/bot/commands/{channel}:
get:
tags:
- commands
summary: /:channel
description: List custom commands
operationId: Get/:channel
parameters:
- name: channel
in: path
description: guid - Channel id
required: true
style: simple
schema:
type: string
example: 5b2e2007760aeb7729487dab
- name: Accept
in: header
description: ''
required: true
style: simple
schema:
type: string
example: application/json
responses:
'200':
description: ''
headers:
Date:
content:
text/plain:
schema:
type: string
example: Fri, 07 Dec 2018 10:56:32 GMT
Content-Length:
content:
text/plain:
schema:
type: string
example: '389'
content:
application/json; charset=utf-8:
schema:
type: array
items:
$ref: '#/components/schemas/BotCommand'
example:
- cooldown:
user: 15
global: 5
aliases: []
keywords: []
enabled: true
enabledOnline: true
enabledOffline: true
hidden: false
cost: 0
type: say
accessLevel: 100
_id: 5c0a5172de9a4c5b7da14d8a
regex: test[0-9]{3}
reply: test response
command: test
channel: 5b2e2007760aeb7729487dab
createdAt: '2018-12-07T10:54:42.594Z'
updatedAt: '2018-12-07T10:54:42.594Z'
example:
- cooldown:
user: 15
global: 5
aliases: []
keywords: []
enabled: true
enabledOnline: true
enabledOffline: true
hidden: false
cost: 0
type: say
accessLevel: 100
_id: 5c0a5172de9a4c5b7da14d8a
regex: test[0-9]{3}
reply: test response
command: test
channel: 5b2e2007760aeb7729487dab
createdAt: '2018-12-07T10:54:42.594Z'
updatedAt: '2018-12-07T10:54:42.594Z'
deprecated: false
post:
tags:
- commands
summary: /:channel
description: Create new command
operationId: Post/:channel
parameters:
- name: channel
in: path
description: guid - Channel id
required: true
style: simple
schema:
type: string
example: 5b2e2007760aeb7729487dab
- name: Accept
in: header
description: ''
required: true
style: simple
schema:
type: string
example: application/json
requestBody:
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/channelrequest'
example:
cooldown:
user: 15
global: 5
aliases: []
keywords: []
enabled: true
enabledOnline: true
enabledOffline: true
hidden: false
cost: 0
type: say
accessLevel: 100
regex: test[0-9]{3}
reply: test response
command: test2
channel: 5b2e2007760aeb7729487dab
required: true
responses:
'201':
description: ''
headers:
Date:
content:
text/plain:
schema:
type: string
example: Fri, 07 Dec 2018 11:00:44 GMT
Content-Length:
content:
text/plain:
schema:
type: string
example: '388'
Vary:
content:
text/plain:
schema:
type: string
example: X-HTTP-Method-Override
content:
application/json; charset=utf-8:
schema:
$ref: '#/components/schemas/BotCommand'
example:
cooldown:
user: 15
global: 5
aliases: []
keywords: []
enabled: true
enabledOnline: true
enabledOffline: true
hidden: false
cost: 0
type: say
accessLevel: 100
_id: 5c0a52dcde9a4c1de1a14d8d
regex: test[0-9]{3}
reply: test response
command: test2
channel: 5b2e2007760aeb7729487dab
createdAt: '2018-12-07T11:00:44.538Z'
updatedAt: '2018-12-07T11:00:44.538Z'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/400-badrequest'
example:
statusCode: 400
error: Bad Request
message: child "command" fails because ["command" is not allowed to be empty]. child "type" fails because ["type" is not allowed to be empty, "type" must be one of [say, reply, whisper]]. child "accessLevel" fails because ["accessLevel" must be a number]. child "reply" fails because ["reply" is not allowed to be empty, "reply" length must be at least 1 characters long]
details:
- path:
- command
message: '"command" is not allowed to be empty'
- path:
- type
message: '"type" is not allowed to be empty'
- path:
- type
message: '"type" must be one of [say, reply, whisper]'
- path:
- accessLevel
message: '"accessLevel" must be a number'
- path:
- reply
message: '"reply" is not allowed to be empty'
- path:
- reply
message: '"reply" length must be at least 1 characters long'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/channel_redemptions_itemId'
example:
statusCode: 409
error: Conflict
message: Command test already exists
deprecated: false
/bot/commands/{channel}/public:
get:
tags:
- commands
summary: /:channel/public
description: List channel's public commands
operationId: /:channel/public
parameters:
- name: channel
in: path
description: guid - Channel id
required: true
style: simple
schema:
type: string
example: 5b2e2007760aeb7729487dab
- name: Accept
in: header
description: ''
required: true
style: simple
schema:
type: string
example: application/json
responses:
'200':
description: ''
headers:
Date:
content:
text/plain:
schema:
type: string
example: Fri, 07 Dec 2018 19:33:09 GMT
Content-Length:
content:
text/plain:
schema:
type: string
example: '778'
content:
application/json; charset=utf-8:
schema:
type: array
items:
$ref: '#/components/schemas/BotCommand'
example:
- cooldown:
user: 15
global: 5
aliases: []
keywords: []
enabled: true
enabledOnline: true
enabledOffline: true
hidden: false
cost: 0
type: say
accessLevel: 100
_id: 5c0a5172de9a4c5b7da14d8a
regex: test[0-9]{3}
reply: test response
command: test
channel: 5b2e2007760aeb7729487dab
createdAt: '2018-12-07T10:54:42.594Z'
updatedAt: '2018-12-07T10:54:42.594Z'
- cooldown:
user: 15
global: 5
aliases: []
keywords: []
enabled: true
enabledOnline: true
enabledOffline: true
hidden: false
cost: 0
type: say
accessLevel: 100
_id: 5c0a52dcde9a4c1de1a14d8d
regex: test[0-9]{3}
reply: test response
command: test2
channel: 5b2e2007760aeb7729487dab
createdAt: '2018-12-07T11:00:44.538Z'
updatedAt: '2018-12-07T11:01:37.758Z'
example:
- cooldown:
user: 15
global: 5
aliases: []
keywords: []
enabled: true
enabledOnline: true
enabledOffline: true
hidden: false
cost: 0
type: say
accessLevel: 100
_id: 5c0a5172de9a4c5b7da14d8a
regex: test[0-9]{3}
reply: test response
command: test
channel: 5b2e2007760aeb7729487dab
createdAt: '2018-12-07T10:54:42.594Z'
updatedAt: '2018-12-07T10:54:42.594Z'
- cooldown:
user: 15
global: 5
aliases: []
keywords: []
enabled: true
enabledOnline: true
enabledOffline: true
hidden: false
cost: 0
type: say
accessLevel: 100
_id: 5c0a52dcde9a4c1de1a14d8d
regex: test[0-9]{3}
reply: test response
command: test2
channel: 5b2e2007760aeb7729487dab
createdAt: '2018-12-07T11:00:44.538Z'
updatedAt: '2018-12-07T11:01:37.758Z'
deprecated: false
/bot/commands/{channel}/default:
get:
tags:
- commands
summary: /:channel/default
description: Lists default commands
operationId: /:channel/default
parameters:
- name: language
in: query
description: string - language iso code lowercase (eg. en)
required: true
style: form
explode: true
schema:
type: string
- name: channel
in: path
description: guid - Channel id
required: true
style: simple
schema:
type: string
example: 5b2e2007760aeb7729487dab
- name: Accept
in: header
description: ''
required: true
style: simple
schema:
type: string
example: application/json
responses:
'200':
description: ''
headers:
Date:
content:
text/plain:
schema:
type: string
example: Fri, 07 Dec 2018 10:57:38 GMT
Content-Length:
content:
text/plain:
schema:
type: string
example: '15959'
content:
application/json; charset=utf-8:
schema:
type: array
items:
$ref: '#/components/schemas/Success6'
example:
- commandId: raffle_join
command: join
accessLevel: 100
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: raffle
cost: 0
cooldown:
user: 0
global: 0
aliases: []
regex: ''
description: Join an active raffle
- commandId: emotes
command: emotes
subCommands:
- ffz
- bttv
- update
accessLevel: 100
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: ''
cost: 0
cooldown:
user: 15
global: 5
aliases: []
regex: ''
description: 'Active BTTV emotes in chat: Clap KKaper gachiBASS gachiGASM monkaS'
- commandId: srpause
command: pause
accessLevel: 500
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: ''
cost: 0
cooldown:
user: 0
global: 0
aliases: []
regex: ''
description: Pause songrequest playback.
- commandId: leaderboard
command: leaderboard
accessLevel: 100
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: ''
cost: 0
cooldown:
user: 15
global: 5
aliases:
- ranklist
regex: ''
description: Check out the $(pointsname) Leaderboard here https://StreamElements.com/${channel.alias}/leaderboard
- commandId: srqueue
command: songqueue
accessLevel: 500
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: ''
cost: 0
cooldown:
user: 0
global: 10
aliases:
- songlist
regex: ''
description: you can see the songrequest queue here https://StreamElements.com/${channel.alias}/songrequest
- commandId: srplay
command: play
accessLevel: 500
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: ''
cost: 0
cooldown:
user: 0
global: 0
aliases:
- resume
regex: ''
description: Resume songrequest playback.
- commandId: level
command: level
accessLevel: 1000
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: ''
cost: 0
cooldown:
user: 15
global: 5
aliases: []
regex: ''
description: Set a viewers access level. Reset with !level <username> reset.
- commandId: givepoints
command: givepoints
accessLevel: 100
enabled: false
enabledOnline: true
enabledOffline: true
moduleId: ''
cost: 0
cooldown:
user: 15
global: 5
aliases:
- transfer
- give
regex: ''
description: Transfer points to another user.
- commandId: commands
command: commands
accessLevel: 100
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: ''
cost: 0
cooldown:
user: 15
global: 5
aliases:
- cmds
regex: ''
description: You can find a list of all Commands here https://StreamElements.com/${channel.alias}/commands
- commandId: slotmachine
command: slots
accessLevel: 100
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: slotmachine
cost: 0
cooldown:
user: 10
global: 0
aliases:
- slotmachine
- slot
- sm
- smp
regex: ''
description: Play the slot machine
- commandId: hypecup
command: hypecup
subCommands:
- clear
accessLevel: 1000
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: ''
cost: 0
cooldown:
user: 1
global: 1
aliases: []
regex: ''
description: Control the HypeCup.
- commandId: contest_bet
command: bet
accessLevel: 100
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: ''
cost: 0
cooldown:
user: 5
global: 0
aliases: []
regex: ''
description: Bet on a contest.
- commandId: accountage
command: accountage
accessLevel: 100
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: ''
cost: 0
cooldown:
user: 15
global: 5
aliases:
- accage
- created
regex: ''
description: ${user} was created 1 year 5 months 27 days 1 hour ago.
- commandId: srremove
command: removesong
accessLevel: 500
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: ''
cost: 0
cooldown:
user: 0
global: 10
aliases:
- songs.pop()
regex: ''
description: Remove a users songs, or a single song from the queue.
- commandId: raffle_singleraffle
command: sraffle
accessLevel: 500
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: raffle
cost: 0
cooldown:
user: 0
global: 0
aliases:
- singleraffle
regex: ''
description: Start a raffle with a single winner
- commandId: top
command: top
subCommands:
- points
- alltime
- online
- offline
accessLevel: 100
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: ''
cost: 0
cooldown:
user: 5
global: 2
aliases: []
regex: ''
description: Show the top of the leaderboard.
- commandId: giveaway
command: giveaway
accessLevel: 100
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: ''
cost: 0
cooldown:
user: 15
global: 5
aliases: []
regex: ''
description: Show the currently active giveaway.
- commandId: followage
command: followage
accessLevel: 100
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: ''
cost: 0
cooldown:
user: 15
global: 5
aliases:
- howlong
regex: ''
description: ${user1} has been following ${user2} for 1 year 5 months 27 days 1 hour
- commandId: srskip
command: skip
accessLevel: 500
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: ''
cost: 0
cooldown:
user: 0
global: 10
aliases:
- skipsong
regex: ''
description: Skip the current song
- commandId: wrongsong
command: wrongsong
accessLevel: 100
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: ''
cost: 0
cooldown:
user: 10
global: 0
aliases:
- ctrl-z
- heybuddyithinkyougotthewrongsong
regex: ''
description: Removes your last song from the queue
- commandId: eightball
command: 8ball
accessLevel: 100
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: eightball
cost: 0
cooldown:
user: 10
global: 3
aliases:
- eightball
- 69ball
- 420ball
regex: ''
description: Ask the magic 8-ball a question
- commandId: store_redeem
command: redeem
accessLevel: 100
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: ''
cost: 0
cooldown:
user: 5
global: 1
aliases:
- buy
regex: ''
description: You successfully redeemed item1 for 420 points.
- commandId: permit
command: permit
accessLevel: 500
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: ''
cost: 0
cooldown:
user: 0
global: 0
aliases: []
regex: ''
description: Prevent a viewer from getting timed out for 60 seconds.
- commandId: roulette
command: roulette
accessLevel: 100
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: roulette
cost: 0
cooldown:
user: 60
global: 0
aliases:
- gamble
regex: ''
description: gamble your life away
- commandId: editpoints
command: addpoints
accessLevel: 1000
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: ''
cost: 0
cooldown:
user: 0
global: 0
aliases:
- editpoints
- bonus
regex: ''
description: Give points to viewers. Use 'all' for all chatters
- commandId: module
command: module
accessLevel: 1000
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: ''
cost: 0
cooldown:
user: 0
global: 5
aliases: []
regex: ''
description: Enable or disable modules via chat.
- commandId: next
command: next
accessLevel: 100
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: ''
cost: 0
cooldown:
user: 10
global: 0
aliases:
- nextsong
- whatisthenextsonghomie
regex: ''
description: 'next song: MrSuicideSheep - WE WON ZULUL [2m3s] requested by LordFluffyButt https://youtu.be/9OG-Qr1qAe4'
- commandId: store_items
command: items
accessLevel: 100
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: ''
cost: 0
cooldown:
user: 15
global: 5
aliases:
- store
regex: ''
description: 'Available items are: item1, item2, item3 https://StreamElements.com/${channel.alias}/store'
- commandId: srsongrequest
command: songrequest
accessLevel: 100
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: songrequest
cost: 0
cooldown:
user: 15
global: 3
aliases:
- sr
regex: ''
description: Request a song by youtube id, url or video title.
- commandId: srwhen
command: when
accessLevel: 100
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: ''
cost: 0
cooldown:
user: 0
global: 15
aliases:
- mysong
regex: ''
description: '"My Summer Car - Radio Chill" is at #2 in the queue and is playing 2 mins 3 secs'
- commandId: srvolume
command: volume
accessLevel: 1000
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: ''
cost: 0
cooldown:
user: 0
global: 0
aliases: []
regex: ''
description: Change the songrequest volume.
- commandId: kappagen
command: kappagen
accessLevel: 500
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: ''
cost: 0
cooldown:
user: 15
global: 5
aliases:
- emotesplosion
regex: ''
description: KappaGen emotesplosions.
- commandId: command
command: command
subCommands:
- add
- remove
- edit
- options
- show
accessLevel: 500
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: ''
cost: 0
cooldown:
user: 3
global: 0
aliases:
- cmd
regex: ''
description: Add, edit and delete chat commands.
- commandId: ping
command: ping
accessLevel: 100
enabled: true
enabledOnline: true
enabledOffline: true
moduleEnabled: true
moduleId: admin
cost: 0
cooldown:
user: 0
global: 15
aliases: []
regex: ''
description: streamelements has been running for 13 hours 47 mins!
- commandId: duel_accept
command: accept
accessLevel: 100
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: duel
cost: 0
cooldown:
user: 10
global: 0
aliases: []
regex: ''
description: Accept a duel request from another chatter
- commandId: bot
command: bot
subCommands:
- mute
- unmute
- part
accessLevel: 1000
enabled: true
enabledOnline: true
enabledOffline: true
moduleId: ''
cost: 0
# --- truncated at 32 KB (89 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/streamelements/refs/heads/main/openapi/streamelements-commands-api-openapi.yml