Skip to content
twitch.apiv2.0

Reference / API groups

twitch.channelPoints

Channel Points: custom rewards and their redemptions.

Every method of twitch.channelPoints, with its parameters, what it returns and the token it needs.

twitch.channelPoints.createReward(params, options?): Promise<CustomReward>

Adds a custom reward to a channel. A channel holds 50 rewards at most, disabled ones included.

Token: user, scope channel:manage:redemptions.

NameTypeDescription
broadcaster_idstringBroadcaster who gets the reward. Defaults to the user making the call.
title requiredstringTitle, 45 characters at most. Must be unique among the rewards of the channel.
cost requirednumberPrice in Channel Points, 1 or more.
promptstringText shown to the viewer when redeeming, 200 characters at most. Goes with is_user_input_required.
is_enabledbooleanWhether viewers can see the reward. Twitch defaults to true.
background_colorstringBackground colour as a hex code, for example "#9147FF".
is_user_input_requiredbooleanWhether the viewer has to type something when redeeming. Twitch defaults to false.
is_max_per_stream_enabledbooleanTurns on the cap set by max_per_stream. Twitch defaults to false.
max_per_streamnumberRedemptions allowed per stream, 1 or more.
is_max_per_user_per_stream_enabledbooleanTurns on the cap set by max_per_user_per_stream. Twitch defaults to false.
max_per_user_per_streamnumberRedemptions allowed per viewer per stream, 1 or more.
is_global_cooldown_enabledbooleanTurns on the cooldown set by global_cooldown_seconds. Twitch defaults to false.
global_cooldown_secondsnumberSeconds between two redemptions, 1 or more. Viewers only see it from 60 up.
should_redemptions_skip_request_queuebooleanMarks redemptions FULFILLED right away instead of queueing them. Twitch defaults to false.

options: Request options for this call: as, token, signal, timeout, retries.

Promise<CustomReward>

Fields of CustomReward
NameTypeDescription
broadcaster_idstringID of the broadcaster who owns the reward.
broadcaster_loginstringLogin name of the broadcaster.
broadcaster_namestringDisplay name of the broadcaster.
idstringID of the reward.
titlestringTitle of the reward.
promptstringText shown to the viewer when the reward asks for input.
costnumberPrice in Channel Points.
imageCustomRewardImage | nullIcon uploaded by the broadcaster, or null when the default one is used.
default_imageCustomRewardImageIcon Twitch falls back to.
background_colorstringBackground colour as a hex code, for example "#00E5CB".
is_enabledbooleanWhether viewers can see the reward.
is_user_input_requiredbooleanWhether the viewer has to type something when redeeming.
max_per_stream_setting{ is_enabled: boolean; max_per_stream: number; }Cap on redemptions during one stream.
max_per_user_per_stream_setting{ is_enabled: boolean; max_per_user_per_stream: number; }Cap on redemptions by one viewer during one stream.
global_cooldown_setting{ is_enabled: boolean; global_cooldown_seconds: number; }Waiting time imposed between two redemptions.
is_pausedbooleanWhether the reward is paused. A paused reward cannot be redeemed.
is_in_stockbooleanWhether the reward can still be redeemed, given its caps.
should_redemptions_skip_request_queuebooleanWhether redemptions are marked FULFILLED right away instead of waiting in the queue.
redemptions_redeemed_current_streamnumber | nullRedemptions made during the current stream. null when the channel is offline or the per stream cap is off.
cooldown_expires_atstring | nullWhen the running cooldown ends, as an RFC 3339 timestamp. null when there is none.
const reward = await twitch.channelPoints.createReward({ title: "Hydrate", cost: 500 });

Twitch reference

twitch.channelPoints.deleteReward(params, options?): Promise<void>

Deletes a custom reward. Only the application that created the reward can do it. Redemptions still waiting in the queue are marked as fulfilled.

Token: user, scope channel:manage:redemptions.

NameTypeDescription
broadcaster_idstringBroadcaster who owns the reward. Defaults to the user making the call.
id requiredstringID of the reward to delete.

options: Request options for this call: as, token, signal, timeout, retries.

Promise<void>

await twitch.channelPoints.deleteReward({ id: "b045196d-9ce7-4a27-a9b9-279ed341ab28" });

Twitch reference

twitch.channelPoints.rewards(params?, options?): Promise<CustomReward[]>

Lists the custom rewards of a channel, sorted by ID. Asking for IDs that all turn out to be unknown fails with a 404.

Token: user, scope channel:read:redemptions or channel:manage:redemptions.

NameTypeDescription
broadcaster_idstringBroadcaster whose rewards to list. Defaults to the user making the call.
idstring | readonly string[]Only these rewards. Any number: long lists are split for you.
only_manageable_rewardsbooleanOnly the rewards your application created and can therefore manage. Twitch defaults to false.

options: Request options for this call: as, token, signal, timeout, retries.

Promise<CustomReward[]>

Fields of CustomReward
NameTypeDescription
broadcaster_idstringID of the broadcaster who owns the reward.
broadcaster_loginstringLogin name of the broadcaster.
broadcaster_namestringDisplay name of the broadcaster.
idstringID of the reward.
titlestringTitle of the reward.
promptstringText shown to the viewer when the reward asks for input.
costnumberPrice in Channel Points.
imageCustomRewardImage | nullIcon uploaded by the broadcaster, or null when the default one is used.
default_imageCustomRewardImageIcon Twitch falls back to.
background_colorstringBackground colour as a hex code, for example "#00E5CB".
is_enabledbooleanWhether viewers can see the reward.
is_user_input_requiredbooleanWhether the viewer has to type something when redeeming.
max_per_stream_setting{ is_enabled: boolean; max_per_stream: number; }Cap on redemptions during one stream.
max_per_user_per_stream_setting{ is_enabled: boolean; max_per_user_per_stream: number; }Cap on redemptions by one viewer during one stream.
global_cooldown_setting{ is_enabled: boolean; global_cooldown_seconds: number; }Waiting time imposed between two redemptions.
is_pausedbooleanWhether the reward is paused. A paused reward cannot be redeemed.
is_in_stockbooleanWhether the reward can still be redeemed, given its caps.
should_redemptions_skip_request_queuebooleanWhether redemptions are marked FULFILLED right away instead of waiting in the queue.
redemptions_redeemed_current_streamnumber | nullRedemptions made during the current stream. null when the channel is offline or the per stream cap is off.
cooldown_expires_atstring | nullWhen the running cooldown ends, as an RFC 3339 timestamp. null when there is none.
const rewards = await twitch.channelPoints.rewards();
const mine = await twitch.channelPoints.rewards({ only_manageable_rewards: true });

Twitch reference

twitch.channelPoints.redemptions(params, options?): Paginator<CustomRewardRedemption>

Lists the redemptions of a custom reward. Only the application that created the reward can read them.

Token: user, scope channel:read:redemptions or channel:manage:redemptions.

NameTypeDescription
broadcaster_idstringBroadcaster who owns the reward. Defaults to the user making the call.
reward_id requiredstringID of the reward whose redemptions to list.
statusCustomRewardRedemptionStatusOnly redemptions with this status. Required unless you pass id. Canceled and fulfilled redemptions stay listed for a few days only.
idstring | readonly string[]Only these redemptions. Up to 50 IDs.
sort"OLDEST" | "NEWEST"Sort order. Twitch defaults to "OLDEST".
firstnumberItems per page, 1 to 50. Twitch defaults to 20.
afterstringCursor of the next page.

options: Request options for this call: as, token, signal, timeout, retries.

Paginator<CustomRewardRedemption>

Fields of CustomRewardRedemption
NameTypeDescription
broadcaster_idstringID of the broadcaster who owns the reward.
broadcaster_loginstringLogin name of the broadcaster.
broadcaster_namestringDisplay name of the broadcaster.
idstringID of the redemption.
user_idstringID of the viewer who redeemed the reward.
user_loginstringLogin name of the viewer.
user_namestringDisplay name of the viewer.
user_inputstringWhat the viewer typed. An empty string when the reward asks for no input.
statusCustomRewardRedemptionStatusCurrent status of the redemption.
redeemed_atstringWhen the reward was redeemed, as an RFC 3339 timestamp.
reward{ id: string; title: string; prompt: string; cost: number; }The reward that was redeemed.
const pending = twitch.channelPoints.redemptions({ reward_id: rewardId, status: "UNFULFILLED" });
for await (const redemption of pending) console.log(redemption.user_name, redemption.user_input);

Twitch reference

twitch.channelPoints.updateReward(params, options?): Promise<CustomReward>

Changes a custom reward. Only the application that created the reward can do it.

Token: user, scope channel:manage:redemptions.

NameTypeDescription
broadcaster_idstringBroadcaster who owns the reward. Defaults to the user making the call.
id requiredstringID of the reward to update.
titlestringNew title, 45 characters at most. Must be unique among the rewards of the channel.
promptstringText shown to the viewer when redeeming, 200 characters at most. Goes with is_user_input_required.
costnumberNew price in Channel Points, 1 or more.
background_colorstringBackground colour as a hex code, for example "#00E5CB".
is_enabledbooleanWhether viewers can see the reward.
is_user_input_requiredbooleanWhether the viewer has to type something when redeeming.
is_max_per_stream_enabledbooleanTurns the cap set by max_per_stream on or off.
max_per_streamnumberRedemptions allowed per stream, 1 or more.
is_max_per_user_per_stream_enabledbooleanTurns the cap set by max_per_user_per_stream on or off.
max_per_user_per_streamnumberRedemptions allowed per viewer per stream, 1 or more.
is_global_cooldown_enabledbooleanTurns the cooldown set by global_cooldown_seconds on or off.
global_cooldown_secondsnumberSeconds between two redemptions, 1 to 604800. Viewers only see it from 60 up.
is_pausedbooleanPauses or resumes the reward. A paused reward cannot be redeemed.
should_redemptions_skip_request_queuebooleanMarks redemptions FULFILLED right away instead of queueing them.

options: Request options for this call: as, token, signal, timeout, retries.

Promise<CustomReward>

Fields of CustomReward
NameTypeDescription
broadcaster_idstringID of the broadcaster who owns the reward.
broadcaster_loginstringLogin name of the broadcaster.
broadcaster_namestringDisplay name of the broadcaster.
idstringID of the reward.
titlestringTitle of the reward.
promptstringText shown to the viewer when the reward asks for input.
costnumberPrice in Channel Points.
imageCustomRewardImage | nullIcon uploaded by the broadcaster, or null when the default one is used.
default_imageCustomRewardImageIcon Twitch falls back to.
background_colorstringBackground colour as a hex code, for example "#00E5CB".
is_enabledbooleanWhether viewers can see the reward.
is_user_input_requiredbooleanWhether the viewer has to type something when redeeming.
max_per_stream_setting{ is_enabled: boolean; max_per_stream: number; }Cap on redemptions during one stream.
max_per_user_per_stream_setting{ is_enabled: boolean; max_per_user_per_stream: number; }Cap on redemptions by one viewer during one stream.
global_cooldown_setting{ is_enabled: boolean; global_cooldown_seconds: number; }Waiting time imposed between two redemptions.
is_pausedbooleanWhether the reward is paused. A paused reward cannot be redeemed.
is_in_stockbooleanWhether the reward can still be redeemed, given its caps.
should_redemptions_skip_request_queuebooleanWhether redemptions are marked FULFILLED right away instead of waiting in the queue.
redemptions_redeemed_current_streamnumber | nullRedemptions made during the current stream. null when the channel is offline or the per stream cap is off.
cooldown_expires_atstring | nullWhen the running cooldown ends, as an RFC 3339 timestamp. null when there is none.
const reward = await twitch.channelPoints.updateReward({ id: rewardId, is_paused: true });

Twitch reference

twitch.channelPoints.updateRedemptions(params, options?): Promise<CustomRewardRedemption[]>

Fulfills or cancels redemptions that are still waiting in the queue, and returns them. Only the application that created the reward can do it.

Token: user, scope channel:manage:redemptions.

NameTypeDescription
broadcaster_idstringBroadcaster who owns the reward. Defaults to the user making the call.
reward_id requiredstringID of the reward that was redeemed.
id requiredstring | readonly string[]Redemptions to update. Up to 50 IDs.
status required"CANCELED" | "FULFILLED"New status. "CANCELED" gives the viewer their points back.

options: Request options for this call: as, token, signal, timeout, retries.

Promise<CustomRewardRedemption[]>

Fields of CustomRewardRedemption
NameTypeDescription
broadcaster_idstringID of the broadcaster who owns the reward.
broadcaster_loginstringLogin name of the broadcaster.
broadcaster_namestringDisplay name of the broadcaster.
idstringID of the redemption.
user_idstringID of the viewer who redeemed the reward.
user_loginstringLogin name of the viewer.
user_namestringDisplay name of the viewer.
user_inputstringWhat the viewer typed. An empty string when the reward asks for no input.
statusCustomRewardRedemptionStatusCurrent status of the redemption.
redeemed_atstringWhen the reward was redeemed, as an RFC 3339 timestamp.
reward{ id: string; title: string; prompt: string; cost: number; }The reward that was redeemed.
await twitch.channelPoints.updateRedemptions({
reward_id: redemption.reward.id,
id: redemption.id,
status: "FULFILLED",
});

Twitch reference