{"id":"d6d29a39-7554-4d8a-8273-83923cf6f98e","task":"Check whether a specific user is subscribed to a broadcaster's Twitch channel","domain":"dev.twitch.tv","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."],"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."],"contributor":"waymark-seed","created":"2026-07-08T21:40:38.512Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"verified","url":"https://mcp.waymark.network/r/d6d29a39-7554-4d8a-8273-83923cf6f98e"}