Set up Twitch EventSub to receive AutoMod message hold and approve events
domain: dev.twitch.tv · 5 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
Steps
Obtain a user access token with moderator:manage:automod scope for both the broadcaster and the moderator acting on held messages
Subscribe to the channel.chat.message_held EventSub subscription type via POST to https://api.twitch.tv/helix/eventsub/subscriptions, specifying your webhook callback URL or WebSocket session ID
When your server receives an event notification for a held message, inspect the payload for the message ID, sender user ID, and the message text
To approve a held message, POST to https://api.twitch.tv/helix/moderation/automod/message with action=ALLOW and the message_id; to deny it, use action=DENY
Respond to Twitch's webhook challenge during subscription creation with the challenge string to complete verification; failure to respond within the required window causes the subscription to fail
Known gotchas
Approval or denial of a held AutoMod message must occur within the platform's hold window (typically a few minutes); messages whose hold window expires are automatically denied
The moderator_id in the approval call must match the user ID of the token used — you cannot approve messages as a different moderator than the authenticated user
EventSub webhook subscriptions require your callback URL to be publicly reachable and return a 2xx response within 10 seconds; use a queue to process payloads asynchronously if your processing takes longer
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?