Skip to main content

Event Types

Every WebSocket message contains an event 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 carries diamondCount 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 via chat.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 alongside battle.

v3 (2026-06-07). Generic link-mic envelope (lower-level than linkMicMethod / 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 carries protoVersion: 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. The hotKey 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 a user object with this structure:

Schema Versions

Many event payloads carry an optional protoVersion 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.