Skip to content

Chatters — Authentication & permissions

OAuth scopes

The Chatters module uses the following OAuth scopes. The baseline ones are requested when a broadcaster connects their Twitch account; the rest are requested later, the first time the feature that acts with them is set up, so most permissions for a feature you don’t use are never granted.

ScopeWhy requestedWhen we ask
user:read:emailIdentifies the account owner and is used for account linking.At sign-in
channel:read:subscriptionsChecks subscriber status for subscriber-gated features.At sign-in
moderator:read:chattersLists current chatters in the channel (used for chatter stats).At sign-in
moderator:read:followersReads follower count and individual follow events.At sign-in
bits:readReads bits cheer events and leaderboard data.At sign-in
user:read:chatListens to chat messages via EventSub.At sign-in
user:botMarks the account as a bot so Twitch applies bot rate limits.At sign-in
user:write:chatPosts bot responses back to chat.At sign-in
channel:botAllows the account to send chat messages as a bot in this channel.At sign-in
channel:read:redemptionsReads channel-point redemption events.At sign-in
channel:manage:redemptionsCreates, updates, and fulfils custom channel-point rewards.When you set up the feature
moderator:manage:shoutoutsSends native Twitch shoutouts on behalf of the channel.At sign-in
moderator:manage:announcementsPosts auto-chats that are configured to deliver as a Twitch announcement.When you set up the feature
channel:read:hype_trainReads Hype Train events for channel event rules.At sign-in
channel:manage:broadcastSets the stream category and title for the !game and !title commands.When you set up the feature

EventSub subscriptions

Every subscription is created with the application access token (Twitch requires it for webhook transport). “Requires” lists the scopes the broadcaster must already have granted before Twitch will create the subscription.

TypeVersionRequiresCondition keysDescription
channel.chat.message1user:read:chat, user:bot, channel:botbroadcaster_user_id, user_idEvery chat message — drives commands, quotes, giveaways and chat-activity counters
stream.online1broadcaster_user_idStream goes live
stream.offline1broadcaster_user_idStream ends
channel.update2broadcaster_user_idChannel title/category updated
channel.hype_train.end2channel:read:hype_trainbroadcaster_user_idHype Train ends — records ended_at + cooldown_ends_at for the !hypecheck builtin (consumer only; numbers wants the same row)
user.update1user_idTwitch username change — refreshes the module-local channel_name and the Helix name cache (consumer only)
channel.channel_points_custom_reward_redemption.add1channel:read:redemptionsbroadcaster_user_idChannel point redemptions — subscribed when the Wheelspin widget carries a redeem trigger; the same broadcaster-wide row rewards creates, so it is additive-only and never deleted by this module