Event Types
Every WebSocket message contains anevent field and a data object. Below is the complete list of events.
chat
A viewer sends a chat message.gift
A viewer sends a virtual gift.For streak gifts (
giftType: 1), wait for repeatEnd: true to get the final count. Intermediate events show the running count.like
A viewer sends likes.member
A viewer joins the live stream.caption
v3 (2026-06-07). TikTok native auto-captions on the LIVE WebSocket. Each frame carries one caption window with text + start/end timestamps +isFinal flag. This is what TikTok’s own viewer UI renders for accessibility and the Discover feed; it is independent of the operator-managed TikTok Live Captions product.
linkMicOpponentGift
v3 (2026-06-07). Per-gift breakdown from the OPPONENT side of a PK. TikTok now ships every gift sent on the opposing host’s stream as a separate frame, so PK dashboards no longer need to relay-tap the opponent’s room separately. v3.1 (2026-07-07). Now carriesdiamondCount and repeatCount, making cross-room and out-of-room gifts fully itemizable from a single connection: price a combo frame as diamondCount x (repeatCount delta) keyed on transactionId.
Being phased out (2026-07-07). TikTok has stopped emitting this standalone event for most rooms and instead embeds the triggering gift inline on
battleArmies as lastGift. Consume both: prefer battleArmies.lastGift when present, fall back to this event.imDelete
v3 (2026-06-07). Chat moderation delete. Correlate back to the original chat event viachat.messageUuid (also v3).
goalUpdate
v3 (2026-06-07). Stream goal progress (subscriber goal, gift goal, watch-time goal).countdownForAll
v3.2 (2026-07-07). A timed “countdown for all” ranking round shown to every viewer - the gift-race / mission countdown used by game-mode PKs. Carries the round window and a live rank-ordered leaderboard of participants with their scores.competitionRankList
v3.2 (2026-07-07). A competition / event ranking snapshot pushed to the room (seasonal events, hosted tournaments). Rank-ordered entries with score. Rare - a handful per hour across all rooms.privilegeAdvance
v3 (2026-06-07). Viewer privilege tier-up notification (gallery lit-up, sub-perk advances). Carries TikTok CDN background frame URLs so overlays can render the banner without a separate fetch.commentTray
v3 (2026-06-07). Comment tray UI state change.linkLayer
v3 (2026-06-07). PK / link-mic negotiation event (invite, cancel, accept, source change). Fires throughout the PK lifecycle alongsidebattle.
link
v3 (2026-06-07). Generic link-mic envelope (lower-level thanlinkMicMethod / linkMicLayoutState).
giftPanelUpdate
v3 (2026-06-07). Real-time gift catalog change for the room. Use as a cache-bust signal for local/webcast/gift_info copies - no need to re-fetch on every frame.
updatedAtSec is epoch seconds, not ms.gameServerFeature
v3 (2026-06-07). TikTok Gaming live integration descriptor (e.g. “106 Roblox”, “2348 Marvel Rivals”).anchorToolModification
v3 (2026-06-07). Creator modified a panel/widget on their stream (added a video anchor, changed Q&A topic, etc.).shareRevenueNotice
v3 (2026-06-07). Share-revenue subscriber count change notice.viewerPicksUpdate
v3 (2026-06-07). “Viewer picks” - TikTok-promoted gift highlights shown to viewers as quick picks.fanTicket
v3 (2026-06-07). Fan-club ticket flow event.v3 Tier 4 events
The events below were modeled from a 30-minute capture across 1963 concurrent rooms (752,955 frames). Each carriesprotoVersion: 3.
giftDynamicRestriction
Dynamic gift-catalog restriction flip (per-room availability / age-gating).inRoomBanner
In-room activity banner (challenges, donation drives) carrying a JSON descriptor.battlePunishFinish
PK punishment phase finished. Loser-side punishment screen ended.battleNotice
PK notice (version-mismatch toasts, invite-failure messages).hostBoard
Host leaderboard board update.poll
In-stream poll lifecycle (open / vote / close).competition
Cross-stream competition event (gift duels, group challenges).streamStatus
Stream status flip (recording state, content-classification rechecks).streamEnd
v3.2 (2026-07-07). The creator ended or restarted their live. Emitted once, immediately before the socket closes with code 4005 (STREAM_END). Previously a creator ending mid-session closed the socket with a bare 1006 that was indistinguishable from a network error - this event and the 4005 code make it unambiguous.Always auto-reconnect. TikTok live connections drop constantly, most of all when a creator restarts a stream. A client with reconnect disabled will appear to “only work 1 in 3-4 times”. Treat
1006/1005/1011 the same as 4005: the stream is over, reconnect on your next preflight tick. The server resolves the creator’s new room automatically.battleGameplay
PK mini-game gameplay state (Whack-A-Mole, Tic-Tac-Toe, etc.).aiSummary
TikTok AI summary of the room (entry-time recap).giftGallery
Host-side gift wall snapshot.cohostLayoutUpdate
Cohost layout subtype change.fansEvent
Fan-club event (tier-up, community heart-me look refresh, etc.).linkScreenChange
PK split-screen layout flip (1v1 / 1vN / cohost mode swap).roomSticker
Room-wide sticker drop (host posted a labelled sticker).bottomMessage
Bottom-bar safety / risk notice ("LIVE health warning", "risk_notice ...").
oecLiveShopping
OEC live-shopping event (product card display / hide).rankText
Rank text update (top-viewer announcement template).accessRecall
Access recall (content-classification recheck pulls a gift / chat permission).unauthorizedMember
Unauthorized member notice (non-logged-in viewer hit a gated feature).guestShowdown
Guest showdown lifecycle (showdown intro / round flip).v3 Tier 5 events (long tail)
Modeled from<20-frame samples across the 10-min + 30-min capture runs. Field shapes carry less confidence than Tier 1-4; future captures may refine semantics. Each carries protoVersion: 3.
hotRoom
TikTok promoted the room to a high-traffic slot. ThehotKey carries the surface descriptor (e.g. "revenue_high_traffic").
envelopePortal
Red-envelope portal advance (multi-room envelope chain).groupLiveMemberNotify
Group-live member join / leave notify.shortTouch
Short-touch UI state change (poll, ecommerce lucky bag, custom UI element).linkMicAnchorGuide
Anchor (creator) guide nudges (TikTok prompts the host with a tip).gameMoment
PK / mini-game moment window (highlight clip start / end).competitionContributor
Per-contributor breakdown inside a cross-stream competition.pictionaryUpdate
Drawing-game (Pictionary) round update.pictionaryEnd
Drawing-game round end with revealed answer.pictionaryExit
Drawing-game exit (early quit).oecLiveManager
OEC live-manager event (manager assigned / unassigned).oecLiveBillboard
OEC live billboard slot (product wall snapshot).perception
Perception event (mute cancel etc - TikTok hint signal sent to the room).questionSelected
Host picked a viewer-submitted question.questionSlideDown
Selected-question card slid down (UI dismiss).giftUnlock
Gift-unlock reveal (host unlocked a gated gift; viewer hint shown).ecShortItemRefresh
Short-touch ecommerce item refresh (lucky bag drop refreshed).capsule
Capsule overlay (TikTok service-plus pin reminder for high-intention viewers).roomVerify
Room age / content-classification verification event.smbBoard
SMB (small/medium-business) board overlay - a styled sponsor/business panel rendered on the LIVE. Rare (~1/hr, host-triggered). The payload is a UI panel definition (3D text styling, colors, layout), not a data leaderboard.follow
A viewer follows the streamer.share
A viewer shares the live stream.roomUserSeq
Periodic viewer count update.subscribe
A viewer subscribes to the streamer.battle
PK lifecycle - fires when a battle (Link Mic PK) starts, changes status, or ends.battleArmies
Periodic score update during a PK with per-host MVP breakdown.transactionId is a top-level field on the battleArmies frame (a sibling of lastGift), not a field inside lastGift. Dedup a combo on the pair (transactionId, lastGift.repeatCount).hosts[0].contributors[0] is always the MVP (highest gifter on that side).Battle gift itemization (2026-07-07): TikTok is phasing out the standalone
linkMicOpponentGift event for many rooms and instead embeds the triggering gift here as lastGift. Consume both: prefer battleArmies.lastGift when present, fall back to linkMicOpponentGift.battleItemCard
Booster / power-up card activated during a PK: x2/x3 multipliers, gloves (crit), mist, thunder, extra-time, match-guide. Includes drop-in overlay assets straight from TikTok’s CDN.roomPin
A message is pinned in the live room.emote
An animated emote is sent.envelope
A treasure box / envelope event.questionNew
A Q&A question is submitted.roomInfo
Initial room metadata sent immediately after connecting.User Object
Most events include auser object with this structure:
Schema Versions
Many event payloads carry an optionalprotoVersion field. It is the schema revision the relay parser decoded the event against, allowing v1 and v2 clients to coexist with v3 producers.
protoVersion is only emitted on events that actually carry v3-additive fields - if a chat message has no language tag and no UUID, protoVersion is 2. Clients written against the v1 or v2 schema can keep ignoring the field; clients that want the new data can read if (evt.protoVersion === 3) { ... } without any feature-detection.
The full v3 discovery spec was built from a 10-minute capture across 1739 concurrent TikTok LIVE rooms (304,325 frames decoded across 67 distinct method names) and a follow-on 30-minute capture across 1963 rooms (752,955 frames). Every event documented above ships as of the v3 rollout. Long-tail rare methods observed only a handful of times across both runs (single-digit frame counts) are tracked internally and will land in point releases as sample diversity allows safe field modelling.