Skip to content
TipPage Docs
Esc
navigateopen⌘Jpreview

Create a timer

A new timer posts for the first time one interval from creation, not immediately. Messages can’t start with / or !, and support the same template variables as custom commands minus the argument ones ({channel}, {pick:a|b|c}, {random:1-100}, {list:name}, {uptime}, {ai:...}, … - see https://docs.tippage.com/chat-bot/variables). Max 20 timers. Requires timers:manage.

POST/timers
Authorization
AuthorizationBearer token (tp_live_... or tpat_...) · headerrequired
A TipPage API key (`tp_live_...`, created in Dashboard → Settings → Developer) or an OAuth 2.0 access token (`tpat_...`, see the OAuth guide). Both carry the same scopes and are accepted on every endpoint.
Request body
requiredapplication/json
namestringrequired
max length 64
messagestringrequired
The template. Can't start with `/` or `!`; the rendered chat line is cut to 500.
max length 2500
interval_minutesintegerrequired
min 1 · max 1440
interval_max_minutesinteger | null
Omit or `null` for a fixed cadence.
min 1 · max 1440
min_chat_linesinteger
min 0 · max 1000 · default: 0
live_onlyboolean
default: true
platformsstring[]
Which chat(s) the timer posts in. At least one.
default: ["twitch","kick"]
enabledboolean
default: true
Responses
201Created.
timerChatTimer
Show properties
idstring
namestring
Label shown in the dashboard - viewers never see it.
messagestring
What the bot posts. Same template variables as custom commands minus the argument ones.
interval_minutesinteger
min 1 · max 1440
interval_max_minutesinteger | null
`null` = fixed cadence. Set = a fresh random interval in [`interval_minutes`, `interval_max_minutes`] is rolled after every post.
min 1 · max 1440
min_chat_linesinteger
The timer waits until this many chat messages have been sent since its last post. 0 = no requirement. A due timer that hasn't met the bar posts as soon as chat catches up - it never skips a cycle.
min 0 · max 1000
live_onlyboolean
Only post while the streamer is live - the Twitch channel's status when one is connected, else the Kick channel's. `min_chat_lines` counts Twitch chat only.
platformsstring[]
Which chat(s) the timer posts in. Default both. One schedule - when it fires, it posts once per connected platform in the set.
enabledboolean
created_atstring<date-time>
updated_atstring<date-time>
400Invalid fields (`invalid_timer`) or timer limit reached (`limit_reached`).
errorstringrequired
Human-readable message.
codestring
Machine-readable code (e.g. `missing_scope`, `not_in_queue`).
401Missing or invalid credential (`missing_api_key` / `invalid_api_key`, or `invalid_token` for an expired/revoked OAuth access token).
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
429Rate limit exceeded - check the `RateLimit-*` headers.
errorstring
Request
curl -X POST "https://api.tippage.com/v1/timers" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "string",
  "message": "string",
  "interval_minutes": 1,
  "interval_max_minutes": 1,
  "min_chat_lines": 0,
  "live_only": true,
  "platforms": [
    "twitch",
    "kick"
  ],
  "enabled": true
}'
Response
{
  "timer": {
    "id": "tmr_1a2b3c4d5e6f7a8b",
    "name": "string",
    "message": "string",
    "interval_minutes": 1,
    "interval_max_minutes": 1,
    "min_chat_lines": 1000,
    "live_only": true,
    "platforms": [
      "twitch"
    ],
    "enabled": true,
    "created_at": "2019-08-24T14:15:22Z",
    "updated_at": "2019-08-24T14:15:22Z"
  }
}