Claim a TTS as now playing
Marks a queued TTS as currently playing - the same call the overlay makes. Fires queue.tts.started. While claimed, other consumers get 409 already_playing. If your effect then fails and the tip should not count as played, undo the claim with release instead of finishing. See the claim, do your thing, finish guide for the full pattern. Requires tts:control.
POST
/tts/{orderId}/startAuthorization
AuthorizationBearer token (tp_live_... or tpat_...) · headerrequiredA 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.
Path parameters
orderIdstringrequiredThe tip's order id (e.g. `tip_1755100000000_ab12cd`) - the only external row reference.
Responses
200Claimed.
successbooleantipQueueTipA tip in the pending TTS queue.
Show propertiesHide properties
order_idstringnamestringDisplay name (post-filter).
amountnumber | nullmessagestring | nullThe tip message (post-filter - what shows on stream).
tts_urlstring<uri> | nullPre-rendered audio; `null` until rendering completes.
is_replaybooleanis_sub_rewardbooleansourcestringWhere the tip came from: `stripe`, `paypal`, `manual` (dashboard manual tip), `api` (POST /tips), `sub_reward`, `replay`, `test`, `ayupcc`, or `unknown` for tips older than source tracking.
external_sourcestring | nullDeveloper-API tips only - the `source` label the caller sent (`kofi`, `ayupcc`); `null` for every other source. Says where the tip came from, not whether money moved - see `is_paid`.
external_refstring | nullDeveloper-API tips only - the caller's own payment reference.
is_paidbooleanReal money changed hands (Stripe, PayPal, or a developer-API tip sent with `paid: true`). `false` for manual tips, free integration tips and sub rewards - those never count toward the streamer's totals.
platformstring | nullThe platform of the account the donor was signed in with when they tipped; `null` for an unattributed tip.
Allowed:
twitchkicknullplatform_user_idstring | nullThe donor's id on that platform, when signed in.
name_was_filteredbooleanmessage_was_filteredbooleanqueued_atstring<date-time>401Missing or invalid credential (`missing_api_key` / `invalid_api_key`, or `invalid_token` for an expired/revoked OAuth access token).
errorstringrequiredHuman-readable message.
codestringMachine-readable code (e.g. `missing_scope`, `not_in_queue`).
403The key lacks the required scope (`missing_scope`).
errorstringrequiredHuman-readable message.
codestringMachine-readable code (e.g. `missing_scope`, `not_in_queue`).
required_scopestring404No such resource.
errorstringrequiredHuman-readable message.
codestringMachine-readable code (e.g. `missing_scope`, `not_in_queue`).
409`queue_paused` (the queue is paused) or `already_playing` (another tip holds the slot; `current_order_id` names it).
errorstringrequiredHuman-readable message.
codestringMachine-readable code (e.g. `missing_scope`, `not_in_queue`).
current_order_idstring429Rate limit exceeded - check the `RateLimit-*` headers.
errorstringRequest
curl -X POST "https://api.tippage.com/v1/tts/string/start" \
-H "Authorization: Bearer YOUR_TOKEN"const response = await fetch("https://api.tippage.com/v1/tts/string/start", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_TOKEN"
}
});import requests
response = requests.post(
"https://api.tippage.com/v1/tts/string/start",
headers={
"Authorization": "Bearer YOUR_TOKEN"
},
)Response
{
"success": true,
"tip": {
"order_id": "tip_1755100000000_ab12cd",
"name": "string",
"amount": 5,
"message": "string",
"tts_url": "http://example.com",
"is_replay": true,
"is_sub_reward": true,
"source": "string",
"external_source": "string",
"external_ref": "string",
"is_paid": true,
"platform": "twitch",
"platform_user_id": "string",
"name_was_filtered": true,
"message_was_filtered": true,
"queued_at": "2019-08-24T14:15:22Z"
}
}{
"error": "string",
"code": "string"
}{
"error": "string",
"code": "string",
"required_scope": "string"
}{
"error": "string",
"code": "string"
}{
"error": "string",
"code": "string",
"current_order_id": "string"
}{
"error": "string"
}