Release a claimed TTS back to the queue
The undo of start, for when your effect didn’t go to plan - the audio device failed, your process is shutting down mid-item, the effect errored before anything played. Drops the now-playing claim WITHOUT finishing: the tip stays in the queue at its position, the slot frees, and the tip can be claimed again (by you after recovering, or by any other consumer). Fires queue.tts.released. Only drops a claim that actually points at this order id - it can never kick out a different tip’s claim, and releasing something you don’t hold is a safe no-op (released: false). If the tip DID play, use finish instead so it lands in history. Requires tts:control.
POST
/tts/{orderId}/releaseAuthorization
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
200Released (`released: false` when there was no claim to drop).
successbooleanreleasedbooleanWhether a now-playing claim was actually dropped.
tipQueueTip | anyShow propertiesHide properties
One of:
QueueTip
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>any
any401Missing 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_scopestring429Rate limit exceeded - check the `RateLimit-*` headers.
errorstringRequest
curl -X POST "https://api.tippage.com/v1/tts/string/release" \
-H "Authorization: Bearer YOUR_TOKEN"const response = await fetch("https://api.tippage.com/v1/tts/string/release", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_TOKEN"
}
});import requests
response = requests.post(
"https://api.tippage.com/v1/tts/string/release",
headers={
"Authorization": "Bearer YOUR_TOKEN"
},
)Response
{
"success": true,
"released": 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"
}