Overview
VMSC connects to Kick using the Pusher WebSocket protocol. No API key or OAuth token is required — VMSC only needs your Kick channel slug (the part after kick.com/) to subscribe to public channel events.
All Kick events are normalized into the VMSC StreamEvent format with source set to "kick".
Pusher WebSocket Connection
| Setting | Value |
|---|---|
| WebSocket URL | wss://ws-us2.pusher.com/app/{key} |
| Protocol | Pusher Protocol v7 |
| Channel Format | chatrooms.{chatroomId}.v2 |
| Auth Required | No (public channels only) |
| Keepalive | Pusher ping/pong every 120 seconds |
VMSC resolves your channel slug to a chatroom ID automatically by querying the Kick API on connection. You only need to enter the slug (e.g., myusername).
Auto-Reconnect with Exponential Backoff
If the Pusher WebSocket connection drops (network interruption, server restart, etc.), VMSC automatically attempts to reconnect using exponential backoff.
| Attempt | Delay |
|---|---|
| 1st retry | 1 second |
| 2nd retry | 2 seconds |
| 3rd retry | 4 seconds |
| 4th retry | 8 seconds |
| 5th+ retry | 16 seconds (max) |
The backoff resets once a successful connection is established. A small random jitter (0–1 second) is added to each delay to prevent reconnection storms.
Kick Events
The following Pusher events are captured from the chatroom channel and normalized into VMSC event types.
| Pusher Event | VMSC Event Type | Description |
|---|---|---|
App\Events\ChatMessageEvent |
chat |
A viewer sends a message in the chatroom. |
App\Events\FollowEvent |
follow |
A user follows the channel. |
App\Events\SubscriptionEvent |
subscribe |
A user subscribes to the channel. |
App\Events\GiftedSubscriptionsEvent |
gift_sub |
A user gifts one or more subscriptions to other viewers. |
Per-Event Data Fields
chat (ChatMessageEvent)
| Field | Type | Description |
|---|---|---|
message | string | Full text of the chat message. |
emotes | object[] | Array of emote objects with id and name. |
chatId | string | Unique ID of the chat message. |
senderIdentity | object | Sender identity with color and badges. |
follow (FollowEvent)
| Field | Type | Description |
|---|---|---|
followersCount | number | Updated total follower count for the channel. |
subscribe (SubscriptionEvent)
| Field | Type | Description |
|---|---|---|
months | number | Total months subscribed. |
gift_sub (GiftedSubscriptionsEvent)
| Field | Type | Description |
|---|---|---|
giftedCount | number | Number of subscriptions gifted. |
gifterUsername | string | Display name of the gifter. |
Limitations
Kick does not currently provide an authenticated API for streamers. VMSC subscribes to public chatroom events only. Some events that require authentication (e.g., detailed subscriber data, moderation actions) are not available.
- No official Kick API documentation — event structures may change without notice.
- Moderation events (bans, timeouts) are not available on the public channel.
- Donation/tip events are not natively supported by Kick — use Streamlabs or StreamElements for donation tracking.
- VMSC monitors the Kick event format and updates the integration when changes are detected.