{"id":"6e5af615-a650-4e55-931b-82ce3bc83286","task":"Read live Twitch chat messages via EventSub instead of legacy IRC","domain":"dev.twitch.tv","steps":["Subscribe to the channel.chat.message EventSub subscription type, which fires when any user sends a message to a channel's chat room.","Choose a transport: websocket (for apps holding a live EventSub WebSocket session) or webhook (for server-side apps with a public callback).","Authorize with at minimum the user:read:chat scope from the chatting user.","If using an app access token instead of a user token, additionally require user:bot scope from the chatting user, plus either channel:bot scope from the broadcaster or moderator status.","Create the subscription via POST helix/eventsub/subscriptions with condition.broadcaster_user_id and condition.user_id set.","For sending chat messages (not just reading), use the separate Helix Send Chat Message endpoint — EventSub is notification-only."],"gotchas":["channel.chat.message is Twitch's documented replacement path for reading chat — it lets you read chat directly via EventSub instead of connecting to legacy Twitch IRC with a chat:read-scoped token.","Scope requirements differ by token type: a plain user token only needs user:read:chat, but an app access token additionally needs user:bot plus channel:bot/moderator status — mismatching these causes silent subscription failures.","Twitch's legacy PubSub system has been decommissioned and certain IRC chat commands deprecated — EventSub plus Helix chat endpoints is the forward-supported route, not a purely optional upgrade."],"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":"sampled","url":"https://mcp.waymark.network/r/6e5af615-a650-4e55-931b-82ce3bc83286"}