TwitchChannelPointsRequests
Inherits: TwitchRequestBase < RefCounted < Object
Twitch Channel Points API for managing custom rewards and redemptions.
Description
TwitchChannelPointsRequests provides methods for creating, updating, and deleting custom Channel Points rewards, as well as managing redemptions. Requires channel:manage:redemptions or channel:read:redemptions OAuth scopes. Access through TwitchAPI.get_channel_points().
Tutorials
Methods
void |
create_custom_rewards(broadcaster_id: String, reward_data: Dictionary) |
void |
delete_custom_reward(broadcaster_id: String, id: String) |
void |
get_custom_reward(broadcaster_id: String, params: Dictionary = {}) |
void |
get_custom_reward_redemption(broadcaster_id: String, reward_id: String, params: Dictionary = {}) |
void |
update_custom_reward(broadcaster_id: String, id: String, reward_data: Dictionary) |
void |
update_redemption_status(broadcaster_id: String, reward_id: String, id: String, status: String) |
Method Descriptions
void create_custom_rewards(broadcaster_id: String, reward_data: Dictionary) 🔗
Creates a custom Channel Points reward. reward_data must include title and cost, and can include prompt, is_enabled, background_color, and various limit settings. Results are returned via the TwitchAPI.request_completed signal with signal_name "custom_reward_created".
Response includes: broadcaster_id/login/name, id, title, prompt, cost, image, default_image, background_color, is_enabled, is_user_input_required, max_per_stream_setting, max_per_user_per_stream_setting, global_cooldown_setting, is_paused, is_in_stock, should_redemptions_skip_request_queue, redemptions_redeemed_current_stream, cooldown_expires_at.
var reward = {"title": "Highlight My Message", "cost": 500, "prompt": "Your message will be highlighted"}
TwitchAPI.get_channel_points().create_custom_rewards("broadcaster_id", reward)
# Response: {"data": [{"id": "reward123", "title": "Highlight My Message", "cost": 500, "is_enabled": true, ...}]}
void delete_custom_reward(broadcaster_id: String, id: String) 🔗
Deletes a custom Channel Points reward. Results are returned via the TwitchAPI.request_completed signal with signal_name "custom_reward_deleted".
Response: Returns 204 No Content on success.
TwitchAPI.get_channel_points().delete_custom_reward("broadcaster_id", "reward123")
# Response: 204 No Content on success
void get_custom_reward(broadcaster_id: String, params: Dictionary = {}) 🔗
Gets custom Channel Points rewards created by the broadcaster. Optional params can include id and only_manageable_rewards. Results are returned via the TwitchAPI.request_completed signal with signal_name "custom_reward_received".
Response includes: Array of reward objects (same structure as create_custom_rewards response).
TwitchAPI.get_channel_points().get_custom_reward("broadcaster_id")
# Response: {"data": [{"id": "reward123", "title": "Highlight My Message", "cost": 500, ...}]}
void get_custom_reward_redemption(broadcaster_id: String, reward_id: String, params: Dictionary = {}) 🔗
Gets redemptions for a specific custom reward. Optional params can include id, status, sort, and first. Results are returned via the TwitchAPI.request_completed signal with signal_name "custom_reward_redemption_received".
Response includes: Array of redemptions with broadcaster_id/login/name, id, user_id/login/name, user_input, status (UNFULFILLED/FULFILLED/CANCELED), redeemed_at, reward (full reward object).
TwitchAPI.get_channel_points().get_custom_reward_redemption("broadcaster_id", "reward123", {"status": "UNFULFILLED"})
# Response: {"data": [{"id": "redemption456", "user_id": "789", "user_name": "Viewer1", "status": "UNFULFILLED", "redeemed_at": "2025-10-16T12:00:00Z", ...}]}
void update_custom_reward(broadcaster_id: String, id: String, reward_data: Dictionary) 🔗
Updates a custom Channel Points reward. reward_data can include title, cost, prompt, is_enabled, and various limit settings. Results are returned via the TwitchAPI.request_completed signal with signal_name "custom_reward_updated".
Response includes: Updated reward object (same structure as create_custom_rewards response).
var updates = {"cost": 1000, "is_enabled": false}
TwitchAPI.get_channel_points().update_custom_reward("broadcaster_id", "reward123", updates)
# Response: {"data": [{"id": "reward123", "cost": 1000, "is_enabled": false, ...}]}
void update_redemption_status(broadcaster_id: String, reward_id: String, id: String, status: String) 🔗
Updates the status of a custom reward redemption. status must be "FULFILLED" or "CANCELED". Results are returned via the TwitchAPI.request_completed signal with signal_name "redemption_status_updated".
Response includes: Updated redemption object with new status.
TwitchAPI.get_channel_points().update_redemption_status("broadcaster_id", "reward123", "redemption456", "FULFILLED")
# Response: {"data": [{"id": "redemption456", "status": "FULFILLED", ...}]}