EVENT-REFERENZ · LIVE-FIREHOSE · JETZT LIVE

Das komplette Event-Vokabular von TikTok LIVE

Chat. Geschenke. Likes. Beitritte. Follows. Battles. Abos. Jedes Event aus TikTok LIVE kommt über einen WebSocket, mit umfangreichen Metadaten. Der Feed unten ist gerade die echte öffentliche Firehose - kein Mockup.

Live-Event-Feed

0 Events gepuffert · echter öffentlicher Stream

Warte auf das nächste Live-Event...

Die öffentliche Firehose ist maskiert, aber jedes Event ist ein echter Push aus einem echten TikTok-LIVE-Raum. Verbinde dich mit deinem eigenen Key, um den kompletten unmaskierten Payload zu bekommen (echte Usernamen, echte Profilbilder, echte Diamantenzahlen) - zwischen den Tarifen ändert sich nur das Limit gleichzeitiger Verbindungen.

Abonnier die Firehose in deinem Stack

Sprache wählen. Kopieren. Ausführen. Sandbox-Key gibt's auf /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()

Jedes Event: was es auslöst und was im Payload steckt

Alle Events teilen sich den Umschlag { event: string, data: object }. Unten: jeder Eventtyp und die Daten, die er mitbringt.

chatSehr häufig

Wird ausgelöst, wenn ein Zuschauer eine Chatnachricht sendet. Das häufigste Event.

userObjectuniqueId, nickname, profilePictureUrl, badges
commentStringDer Nachrichtentext
userIdStringNumerische TikTok-User-ID
{
  "event": "chat",
  "data": {
    "user": {
      "uniqueId": "viewer42",
      "nickname": "Viewer 42"
    },
    "comment": "Hello!",
    "userId": "7123456789"
  }
}

giftMittel

Wird ausgelöst, wenn ein Zuschauer ein virtuelles Geschenk sendet. Enthält Geschenkname, Diamantenwert und Streak-Daten.

userObjectAbsender
giftNameStringz. B. "Rose", "Galaxy"
giftIdNumberNumerische Geschenk-ID
diamondCountNumberDiamantenwert
repeatCountNumberStreak-Zähler
repeatEndBooleanTrue, wenn der Streak endet
{
  "event": "gift",
  "data": {
    "user": {
      "uniqueId": "big_fan"
    },
    "giftName": "Rose",
    "giftId": 5655,
    "diamondCount": 1,
    "repeatCount": 5,
    "repeatEnd": true
  }
}

likeSehr häufig

Wird ausgelöst, wenn ein Zuschauer auf den Like-Button tippt. Enthält die gesammelten Likes insgesamt.

userObjectLiker
likeCountNumberAnzahl in diesem Event
totalLikeCountNumberSumme im Stream
{
  "event": "like",
  "data": {
    "user": {
      "uniqueId": "liker1"
    },
    "likeCount": 15,
    "totalLikeCount": 12500
  }
}

memberMittel

Wird ausgelöst, wenn ein Zuschauer den Live-Raum betritt.

userObjectBeitretender User
{
  "event": "member",
  "data": {
    "user": {
      "uniqueId": "new_viewer",
      "nickname": "New Viewer"
    }
  }
}

followSelten

Wird ausgelöst, wenn ein Zuschauer dem Streamer während des LIVE folgt.

userObjectFolgender User
{
  "event": "follow",
  "data": {
    "user": {
      "uniqueId": "new_follower"
    }
  }
}

shareSelten

Wird ausgelöst, wenn ein Zuschauer den Livestream teilt.

userObjectTeilender User
{
  "event": "share",
  "data": {
    "user": {
      "uniqueId": "sharer"
    }
  }
}

roomUserSeqRegelmäßig

Regelmäßiges Update der Zuschauerzahl. Der wichtigste Weg, Zuschauerzahlen in Echtzeit zu verfolgen. Das SDK sendet es zusätzlich als viewer_count (Alias, gleicher Payload).

viewerCountNumberAktuelle Live-Zuschauer
topViewersArrayNach Engagement sortiert
{
  "event": "roomUserSeq",
  "data": {
    "viewerCount": 1234,
    "topViewers": [
      {
        "user": {
          "uniqueId": "top_fan"
        },
        "coinCount": 5000
      }
    ]
  }
}

subscribeSehr selten

Wird ausgelöst, wenn ein Zuschauer den Streamer abonniert.

userObjectAbonnent
{
  "event": "subscribe",
  "data": {
    "user": {
      "uniqueId": "subscriber1"
    }
  }
}

linkMicBattleWährend Battles

Wird ausgelöst, wenn ein TikTok-LIVE-Battle startet, sich aktualisiert oder endet. Enthält Punktestände + Teilnehmer.

battleUsersArrayTeilnehmer mit Punkteständen
typeNumber1=Start, 2=Update, 3=Ende
{
  "event": "linkMicBattle",
  "data": {
    "type": 1,
    "battleUsers": [
      {
        "uniqueId": "streamer1"
      },
      {
        "uniqueId": "streamer2"
      }
    ]
  }
}

roomPinSehr selten

Wird ausgelöst, wenn der Streamer eine Chatnachricht anpinnt.

pinnedMessageObjectNachrichteninhalt + Absender
{
  "event": "roomPin",
  "data": {
    "pinnedMessage": {
      "text": "Welcome!",
      "user": {
        "uniqueId": "streamer"
      }
    }
  }
}

Häufige Fragen

Brauche ich einen bezahlten Tarif, um Events zu empfangen?

Nein. Der Sandbox-Tarif ist kostenlos und liefert den kompletten echten Event-Payload (echte Usernamen, echte Diamanten usw.) - dein Client signiert den Upstream-WebSocket mit seinem eigenen TikTok-Cookie. Die einzigen festen Limits sind 3 gleichzeitige WebSocket-Verbindungen und 5.000 REST-Anfragen/Tag. Basic für $7/Wo. hebt das Limit auf 20 gleichzeitige WS + 10.000 Anfragen/Tag.

Welches Event kommt in einem vollen Stream am häufigsten?

`like` und `chat` liegen bei der Häufigkeit vorn. `gift` ist pro Event das wertvollste Signal.

Kann ich mehrere TikTok-Creator gleichzeitig abonnieren?

Ja. Öffne einen WebSocket pro uniqueId. Der Pro-Tarif erlaubt 50 gleichzeitige WS, Ultra 250.

Wie erkenne ich, wann ein Geschenk-Streak endet?

Nur streakfähige Geschenke (`giftType` 1) laufen als Streak: Achte auf `repeatEnd === true` oder schließ den Streak selbst ab, wenn ein paar Sekunden lang kein neuer Frame kommt, und nimm den höchsten `repeatCount`. Andere Geschenke senden nie einen End-Frame: Ein Mengen-Geschenk wie 8x ist ein einzelner Frame mit `repeatCount` 8, zähl es also direkt beim Eintreffen. So oder so gilt: Diamanten gesamt = `diamondCount * repeatCount`.

Wie hoch ist die Latenz im Vergleich zum eigentlichen Stream?

Events kommen ~150-400 ms an, nachdem sie auf TikTok ausgelöst wurden. Auf den meisten CDNs schneller als der Videostream selbst.

Werden Battles für beide Creator ausgelöst?

Ja. Verbinde dich mit einem der beiden Creator im Battle - beide bekommen dasselbe `linkMicBattle`-Event, bei dem `battleUsers` für beide befüllt ist.