Skip to content
TipPage Docs
Esc
navigateopen⌘Jpreview

Create a command

name is the trigger without the ! prefix; the bot’s built-in triggers are reserved. Responses support the same template variables as the dashboard’s Chat bot page: {user}, {channel}, {args}, {arg:1}-{arg:9}, {touser}, {pick:a|b|c}, {random:1-100} and {list:name} (response lists themselves are managed in the dashboard). Requires commands:manage.

POST/commands
Authorization
AuthorizationBearer token (tp_live_...) · headerrequired
A TipPage API key, created in Dashboard → Settings → Developer.
Request body
requiredapplication/json
namestringrequired
The trigger without the `!` prefix - lowercase letters, numbers, hyphens, and underscores. The bot's built-in triggers are reserved.
max length 50 · matches ^[a-z0-9_-]+$
responsestringrequired
Can't start with `/` or `!`.
max length 500
permissionstring
default: "everyone"
Allowed:everyonesubscribermoderator
cooldown_secondsinteger
min 0 · max 3600 · default: 0
cooldown_typestring
default: "global"
Allowed:globalper_user
aliasesstring[]
Same lexical rules as `name`; max 10.
max items 10
enabledboolean
default: true
Responses
201Created. Live in chat within a few seconds.
commandCustomCommand
Show properties
namestring
The trigger, without the `!` prefix.
responsestring
What the bot answers. Template variables supported.
permissionstring
Who can trigger it. `subscriber` includes moderators; `moderator` includes the streamer.
Allowed:everyonesubscribermoderator
cooldown_secondsinteger
min 0 · max 3600
cooldown_typestring
`global` = one shared cooldown for the whole channel; `per_user` = each viewer gets their own.
Allowed:globalper_user
aliasesstring[]
Extra triggers for the same command, also without the `!`.
enabledboolean
created_atstring<date-time>
updated_atstring<date-time>
400Invalid fields (`invalid_command`).
errorstringrequired
Human-readable message.
codestring
Machine-readable code (e.g. `missing_scope`, `not_in_queue`).
401Missing or invalid API key (`missing_api_key` / `invalid_api_key`).
errorstringrequired
Human-readable message.
codestring
Machine-readable code (e.g. `missing_scope`, `not_in_queue`).
403The key lacks the required scope (`missing_scope`).
errorstringrequired
Human-readable message.
codestring
Machine-readable code (e.g. `missing_scope`, `not_in_queue`).
required_scopestring
409Name already taken (`command_exists`), or an alias collides with another trigger (`alias_in_use`).
errorstringrequired
Human-readable message.
codestring
Machine-readable code (e.g. `missing_scope`, `not_in_queue`).
429Rate limit exceeded - check the `RateLimit-*` headers.
errorstring
Request
curl -X POST "https://api.tippage.com/v1/commands" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "response": "string",
  "permission": "everyone",
  "cooldown_seconds": 0,
  "cooldown_type": "global",
  "aliases": [
    "string"
  ],
  "enabled": true
}'
Response
{
  "command": {
    "name": "discord",
    "response": "string",
    "permission": "everyone",
    "cooldown_seconds": 3600,
    "cooldown_type": "global",
    "aliases": [
      "string"
    ],
    "enabled": true,
    "created_at": "2019-08-24T14:15:22Z",
    "updated_at": "2019-08-24T14:15:22Z"
  }
}