Skip to content
TipPage Docs
Esc
navigateopen⌘Jpreview

Mark a redemption fulfilled

Resolves the redemption as FULFILLED on Twitch - the viewer’s points stay spent and the redemption leaves the Twitch rewards queue. Call this when your automation completed the redeemed action. Requires channel_points:manage and a TipPage-managed reward. Idempotent: repeating the call returns already_resolved: true.

POST/channel-points/redemptions/{redemptionId}/fulfill
Authorization
AuthorizationBearer token (tp_live_...) · headerrequired
A TipPage API key, created in Dashboard → Settings → Developer.
Path parameters
redemptionIdstringrequired
The Twitch redemption id (UUID) - `data.redemption_id` on the `twitch.channel_point_redemption` webhook.
max length 64
Responses
200The redemption was resolved (or already was).
successboolean
statusstring
Allowed:fulfilledcanceled
already_resolvedboolean
This redemption had already been resolved to this status.
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
404Unknown redemption id for this channel.
409Not resolvable - `code` says why: `reward_not_managed` (reward wasn't created by TipPage), `already_resolved` (resolved the other way), `song_request_active` (the song-request flow owns it), or `twitch_rejected` (Twitch refused the update).
429Rate limit exceeded - check the `RateLimit-*` headers.
errorstring
502Twitch was unreachable or errored - retry shortly.
Request
curl -X POST "https://api.tippage.com/v1/channel-points/redemptions/string/fulfill" \
  -H "Authorization: Bearer YOUR_TOKEN"
Response
{
  "success": true,
  "status": "fulfilled",
  "already_resolved": true
}