Check whether a specific user is subscribed to a broadcaster's Twitch channel
domain: dev.twitch.tv · 6 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
Steps
Call GET helix/subscriptions/user (Check User Subscription) with broadcaster_id and user_id query parameters.
Authorize with the user:read:subscriptions scope.
Parse the returned subscription object for tier and gift-status fields to determine the subscription details.
For the broadcaster's full subscriber list instead of a single check, call GET helix/subscriptions (Get Broadcaster Subscriptions) with broadcaster_id.
Authorize the broadcaster-list call with channel:read:subscriptions — a distinct scope from the single-user check.
Treat a not-subscribed result as an error/not-found response from Check User Subscription rather than expecting a boolean field in a 200 response.
Known gotchas
The two related endpoints require two different scopes: Check User Subscription needs user:read:subscriptions (from the viewing user), while Get Broadcaster Subscriptions needs channel:read:subscriptions (from the broadcaster) — mixing them up is a frequent integration bug.
Check User Subscription signals 'not subscribed' via an error/not-found response rather than a subscribed=false field, so error handling needs to treat that case as the negative result, not a parse failure.
Verify actual scope-enforcement behavior against your own token rather than assuming documented scopes are the only path — community reports describe edge cases historically.
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?