RÉFÉRENCE DES ÉVÉNEMENTS · FIREHOSE LIVE · EN DIRECT

Tout le vocabulaire d'événements de TikTok LIVE

Chat. Cadeaux. Likes. Arrivées. Follows. Battles. Abonnements. Chaque événement des streams TikTok LIVE passe par un seul WebSocket avec des métadonnées riches. Le flux ci-dessous est le vrai firehose public en ce moment - pas une maquette.

Flux d'événements en direct

0 événements en mémoire · vrai stream public

En attente du prochain événement live...

Le firehose public est masqué, mais chaque événement est un vrai push venant d'une vraie salle TikTok LIVE. Connecte-toi avec ta propre clé pour recevoir le payload complet sans masquage (vrais pseudos, vrais avatars, vrais nombres de diamants) - la seule chose qui change d'une offre à l'autre, c'est la limite de connexions simultanées.

Abonne-toi au firehose dans ta stack

Choisis ton langage. Copie. Lance. Clé sandbox sur /pricing.

import { TiktokLiveClient } from '@tiktool/live'

const client = new TiktokLiveClient({
  apiKey: process.env.TIKTOOL_API_KEY,
  uniqueId: 'tiktok_handle_here',
})

client.on('gift', (e) => {
  console.log(`${e.user.uniqueId} sent ${e.giftName} (${e.diamondCount} diamonds)`)
})

client.on('chat', (e) => console.log(`${e.user.uniqueId}: ${e.comment}`))
client.on('member', (e) => console.log(`+ join ${e.user.uniqueId}`))
client.on('like', (e) => console.log(`+ ${e.likeCount} likes`))
client.on('linkMicBattle', (e) => console.log('battle update', e.battleUsers))

await client.connect()

Chaque événement, ce qui le déclenche, ce que contient le payload

Tous les événements partagent l'enveloppe { event: string, data: object }. Ci-dessous : chaque type d'événement et les données qu'il transporte.

chatTrès fréquent

Déclenché quand un spectateur envoie un message dans le chat. L'événement le plus courant.

userObjectuniqueId, nickname, profilePictureUrl, badges
commentStringLe texte du message
userIdStringID numérique de l'utilisateur TikTok
{
  "event": "chat",
  "data": {
    "user": {
      "uniqueId": "viewer42",
      "nickname": "Viewer 42"
    },
    "comment": "Hello!",
    "userId": "7123456789"
  }
}

giftModéré

Déclenché quand un spectateur envoie un cadeau virtuel. Inclut le nom du cadeau, sa valeur en diamants et les données de série.

userObjectExpéditeur
giftNameStringex. "Rose", "Galaxy"
giftIdNumberID numérique du cadeau
diamondCountNumberValeur en diamants
repeatCountNumberNombre dans la série
repeatEndBooleanTrue à la fin de la série
{
  "event": "gift",
  "data": {
    "user": {
      "uniqueId": "big_fan"
    },
    "giftName": "Rose",
    "giftId": 5655,
    "diamondCount": 1,
    "repeatCount": 5,
    "repeatEnd": true
  }
}

likeTrès fréquent

Déclenché quand un spectateur appuie sur le bouton like. Inclut le total de likes cumulés.

userObjectAuteur du like
likeCountNumberNombre pour cet événement
totalLikeCountNumberTotal du stream
{
  "event": "like",
  "data": {
    "user": {
      "uniqueId": "liker1"
    },
    "likeCount": 15,
    "totalLikeCount": 12500
  }
}

memberModéré

Déclenché quand un spectateur rejoint la salle du live.

userObjectUtilisateur qui arrive
{
  "event": "member",
  "data": {
    "user": {
      "uniqueId": "new_viewer",
      "nickname": "New Viewer"
    }
  }
}

followFaible

Déclenché quand un spectateur suit le streamer pendant le live.

userObjectUtilisateur qui suit
{
  "event": "follow",
  "data": {
    "user": {
      "uniqueId": "new_follower"
    }
  }
}

shareFaible

Déclenché quand un spectateur partage le live.

userObjectUtilisateur qui partage
{
  "event": "share",
  "data": {
    "user": {
      "uniqueId": "sharer"
    }
  }
}

roomUserSeqPériodique

Mise à jour périodique du nombre de spectateurs. Le moyen principal de suivre l'audience en temps réel. Le SDK l'émet aussi sous le nom viewer_count (alias, même payload).

viewerCountNumberSpectateurs en ce moment
topViewersArrayClassés par engagement
{
  "event": "roomUserSeq",
  "data": {
    "viewerCount": 1234,
    "topViewers": [
      {
        "user": {
          "uniqueId": "top_fan"
        },
        "coinCount": 5000
      }
    ]
  }
}

subscribeRare

Déclenché quand un spectateur s'abonne au streamer.

userObjectAbonné
{
  "event": "subscribe",
  "data": {
    "user": {
      "uniqueId": "subscriber1"
    }
  }
}

linkMicBattlePendant les battles

Déclenché quand une battle TikTok LIVE commence, évolue ou se termine. Inclut les scores et les participants.

battleUsersArrayParticipants avec leurs scores
typeNumber1=début, 2=mise à jour, 3=fin
{
  "event": "linkMicBattle",
  "data": {
    "type": 1,
    "battleUsers": [
      {
        "uniqueId": "streamer1"
      },
      {
        "uniqueId": "streamer2"
      }
    ]
  }
}

roomPinRare

Déclenché quand le streamer épingle un message du chat.

pinnedMessageObjectContenu du message + expéditeur
{
  "event": "roomPin",
  "data": {
    "pinnedMessage": {
      "text": "Welcome!",
      "user": {
        "uniqueId": "streamer"
      }
    }
  }
}

Questions fréquentes

Faut-il une offre payante pour recevoir les événements ?

Pas pour évaluer. La clé Sandbox fonctionne pendant 7 jours et fournit le vrai payload complet (vrais pseudos, vrais diamants, etc.) - ton client signe le WebSocket amont avec son propre cookie TikTok. Pendant l'évaluation, les limites sont 3 connexions WebSocket simultanées et 5 000 requêtes REST/jour. Après 7 jours, une offre payante est nécessaire ; Basic à $7/sem. donne 20 WS simultanés + 10 000 req/jour.

Quel événement se déclenche le plus souvent sur un stream chargé ?

`like` et `chat` dominent en fréquence. `gift` est le signal le plus précieux par événement.

Puis-je m'abonner à plusieurs créateurs TikTok en même temps ?

Oui. Ouvre un WebSocket par uniqueId. L'offre Pro permet 50 WS simultanés, Ultra 250.

Comment détecter la fin d'une série de cadeaux ?

Seuls les cadeaux à série (`giftType` 1) font une série : surveille `repeatEnd === true`, ou clôture-la toi-même quand aucune nouvelle trame n'arrive pendant quelques secondes, et garde le `repeatCount` le plus élevé. Les autres cadeaux n'envoient jamais de trame de fin : un envoi en quantité comme 8x est une seule trame avec `repeatCount` 8, donc compte-le dès son arrivée. Dans les deux cas, le total de diamants = `diamondCount * repeatCount`.

Quelle est la latence par rapport au stream réel ?

Les événements arrivent environ 150-400ms après leur déclenchement sur TikTok. Plus vite que le flux vidéo lui-même sur la plupart des CDN.

Les battles se déclenchent-elles pour les deux créateurs ?

Oui. Connecte-toi à l'un ou l'autre créateur de la battle - les deux reçoivent le même événement `linkMicBattle` avec les deux `battleUsers` renseignés.