Skip to content

Discord — Authentication & permissions

OAuth scopes

The Discord 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
channel:read:subscriptionsReceives subs, resubs and gift bombs for Discord announcements.At sign-in
bits:readReceives cheers for Discord announcements.At sign-in
channel:read:hype_trainReceives Hype Train starts and ends for Discord announcements.At sign-in

EventSub subscriptions

The Discord module creates none of these subscriptions itself (“consumer only”). The platform creates them for every channel whose plan includes Discord, and delivers each event to Discord over its internal fan-out.

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
stream.online1—broadcaster_user_idStream goes live — go-live post (consumer only)
stream.offline1—broadcaster_user_idStream ends (consumer only)
channel.subscribe1channel:read:subscriptionsbroadcaster_user_idNew subscription — sub-role sync + announcement (consumer only)
channel.subscription.message1channel:read:subscriptionsbroadcaster_user_idResub with share message (consumer only)
channel.subscription.gift1channel:read:subscriptionsbroadcaster_user_idGift bomb announcement (consumer only)
channel.cheer1bits:readbroadcaster_user_idBits cheered (consumer only)
channel.bits.use1bits:readbroadcaster_user_idPower-up bits — hype-train conductor tally only, not announced (consumer only; cheer-type events are ignored, channel.cheer owns those)
channel.raid1—to_broadcaster_user_idIncoming raid announcement (consumer only)
channel.hype_train.begin2channel:read:hype_trainbroadcaster_user_idHype Train starts (consumer only)
channel.hype_train.end2channel:read:hype_trainbroadcaster_user_idHype Train ends (consumer only)