Kick · event: moderation.banned ·
content type: application/json
This is a representative sample — fake IDs, real structure. To see a payload with your data, point the provider at a capture URL (button below).
One click creates a free capture bin with this exact payload already in it — pretty-printed, headers inspectable, replayable to your own endpoint:
Then paste the bin's URL into Kick's webhook settings to capture a real delivery. No signup.
content-type: application/json kick-event-message-id: 01K3YFHM2W8Z6S3YHFEW0BJNXR kick-event-subscription-id: 01K3YFHM3X9A7T4ZJGFX1CKPYS kick-event-message-timestamp: 2026-08-30T09:58:06Z kick-event-type: moderation.banned kick-event-version: 1 kick-event-signature: gMl5TtqLmdEZIttPssZ55B56FJzaCfiM/Jk/4hXithNDnOjza0xZN3JA9PvXAXx6z5OmKVDdHNDO+N2LwaWhrH00HmOeGNPx+LNP6yUBcHnnEtWTh+kpOz/5Sd9Xn7U+4XfCBNCt+0bl3jafvzCUgj4+kpuEAydYRgIq4vCA08MtHqVkjauA23ZxXg99cYLTHgINmdACCccBG7FKrV0CTN9i9/VwZZxGbk7HKk5Y7JMZvUteBx9ad148a0SaoyltWOgeCDZNDDybJU3ohFgLG7t6DPrheGoEFrGccgDPWN7xzM/wKjl3SWA7PEzHao3L5+8In+wQYhej5IeQiDJ+eA==
{
"broadcaster": {
"is_anonymous": false,
"user_id": 123456789,
"username": "broadcaster_name",
"is_verified": true,
"profile_picture": "https://example.com/broadcaster_avatar.jpg",
"channel_slug": "broadcaster_channel",
"identity": null
},
"moderator": {
"is_anonymous": false,
"user_id": 987654321,
"username": "moderator_name",
"is_verified": false,
"profile_picture": "https://example.com/moderator_avatar.jpg",
"channel_slug": "moderator_channel",
"identity": null
},
"banned_user": {
"is_anonymous": false,
"user_id": 135790135,
"username": "banned_user_name",
"is_verified": false,
"profile_picture": "https://example.com/banned_user_avatar.jpg",
"channel_slug": "banned_user_channel",
"identity": null
},
"metadata": {
"reason": "spamming links",
"created_at": "2026-08-30T09:58:05Z",
"expires_at": "2026-08-30T10:08:05Z"
}
}
messageId + "." + timestamp + "." + rawBody. Paste into the
signature debugger (Kick scheme) or set the
Kick scheme on a capture bin.metadata.expires_at:
set (here: 10 minutes after created_at) means a timeout;
null means a permanent ban. A handler that treats every
moderation.banned as permanent will wrongly flag every 5-minute
timeout.kicks.gifted) — nothing fires when a
ban is lifted or when a timeout expires. If you mirror ban state, you must
poll the moderation API to notice unbans; webhook-only state drifts forever.identity is null for all three user objects here —
badge/color identity data only appears on chat-message sender objects.
Don't make your struct require it.Reproduce this delivery against any endpoint (your handler, a bin, staging):
$ curl -X POST https://your-endpoint.example/hook \
-H 'content-type: application/json' \
-H 'kick-event-message-id: 01K3YFHM2W8Z6S3YHFEW0BJNXR' \
-H 'kick-event-subscription-id: 01K3YFHM3X9A7T4ZJGFX1CKPYS' \
-H 'kick-event-message-timestamp: 2026-08-30T09:58:06Z' \
-H 'kick-event-type: moderation.banned' \
-H 'kick-event-version: 1' \
-H 'kick-event-signature: gMl5TtqLmdEZIttPssZ55B56FJzaCfiM/Jk/4hXithNDnOjza0xZN3JA9PvXAXx6z5OmKVDdHNDO+N2LwaWhrH00HmOeGNPx+LNP6yUBcHnnEtWTh+kpOz/5Sd9Xn7U+4XfCBNCt+0bl3jafvzCUgj4+kpuEAydYRgIq4vCA08MtHqVkjauA23ZxXg99cYLTHgINmdACCccBG7FKrV0CTN9i9/VwZZxGbk7HKk5Y7JMZvUteBx9ad148a0SaoyltWOgeCDZNDDybJU3ohFgLG7t6DPrheGoEFrGccgDPWN7xzM/wKjl3SWA7PEzHao3L5+8In+wQYhej5IeQiDJ+eA==' \
-d '{
"broadcaster": {
"is_anonymous": false,
"user_id": 123456789,
"username": "broadcaster_name",
"is_verified": true,
"profile_picture": "https://example.com/broadcaster_avatar.jpg",
"channel_slug": "broadcaster_channel",
"identity": null
},
"moderator": {
"is_anonymous": false,
"user_id": 987654321,
"username": "moderator_name",
"is_verified": false,
"profile_picture": "https://example.com/moderator_avatar.jpg",
"channel_slug": "moderator_channel",
"identity": null
},
"banned_user": {
"is_anonymous": false,
"user_id": 135790135,
"username": "banned_user_name",
"is_verified": false,
"profile_picture": "https://example.com/banned_user_avatar.jpg",
"channel_slug": "banned_user_channel",
"identity": null
},
"metadata": {
"reason": "spamming links",
"created_at": "2026-08-30T09:58:05Z",
"expires_at": "2026-08-30T10:08:05Z"
}
}'