RIFERIMENTO EVENTI · FIREHOSE LIVE · IN DIRETTA ORA

Tutti gli eventi di TikTok LIVE

Chat. Regali. Like. Ingressi. Follow. Sfide. Abbonamenti. Ogni evento delle LIVE di TikTok passa da un unico WebSocket con metadati completi. Il feed qui sotto è il vero firehose pubblico in questo momento, non una demo finta.

Feed eventi live

0 eventi in buffer · diretta pubblica reale

In attesa del prossimo evento live...

Il firehose pubblico è oscurato, ma ogni evento è un push reale da una vera stanza LIVE di TikTok. Collegati con la tua chiave per ricevere il payload completo in chiaro (username reali, avatar reali, diamanti reali): l'unica cosa che cambia tra i piani è il limite di connessioni simultanee.

Iscriviti al firehose nel tuo stack

Scegli il linguaggio. Copia. Esegui. Chiave sandbox da /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()

Ogni evento: cosa lo fa scattare e cosa c'è nel payload

Tutti gli eventi condividono la struttura { event: string, data: object }. Qui sotto: ogni tipo di evento e i dati che contiene.

chatMolto frequente

Scatta quando uno spettatore invia un messaggio in chat. È l'evento più comune.

userObjectuniqueId, nickname, profilePictureUrl, badges
commentStringIl testo del messaggio
userIdStringID utente TikTok numerico
{
  "event": "chat",
  "data": {
    "user": {
      "uniqueId": "viewer42",
      "nickname": "Viewer 42"
    },
    "comment": "Hello!",
    "userId": "7123456789"
  }
}

giftModerata

Scatta quando uno spettatore invia un regalo virtuale. Include nome del regalo, valore in diamanti e dati della serie.

userObjectMittente
giftNameStringes. "Rosa", "Galassia"
giftIdNumberID numerico del regalo
diamondCountNumberValore in diamanti
repeatCountNumberNumero della serie
repeatEndBooleanTrue quando la serie finisce
{
  "event": "gift",
  "data": {
    "user": {
      "uniqueId": "big_fan"
    },
    "giftName": "Rose",
    "giftId": 5655,
    "diamondCount": 1,
    "repeatCount": 5,
    "repeatEnd": true
  }
}

likeMolto frequente

Scatta quando uno spettatore tocca il pulsante like. Include il totale dei like accumulati.

userObjectChi mette like
likeCountNumberLike di questo evento
totalLikeCountNumberTotale della diretta
{
  "event": "like",
  "data": {
    "user": {
      "uniqueId": "liker1"
    },
    "likeCount": 15,
    "totalLikeCount": 12500
  }
}

memberModerata

Scatta quando uno spettatore entra nella stanza della diretta.

userObjectUtente che entra
{
  "event": "member",
  "data": {
    "user": {
      "uniqueId": "new_viewer",
      "nickname": "New Viewer"
    }
  }
}

followBassa

Scatta quando uno spettatore segue lo streamer durante la LIVE.

userObjectUtente che segue
{
  "event": "follow",
  "data": {
    "user": {
      "uniqueId": "new_follower"
    }
  }
}

shareBassa

Scatta quando uno spettatore condivide la diretta.

userObjectUtente che condivide
{
  "event": "share",
  "data": {
    "user": {
      "uniqueId": "sharer"
    }
  }
}

roomUserSeqPeriodica

Aggiornamento periodico del numero di spettatori. È il modo principale per seguire gli spettatori in tempo reale. L'SDK lo emette anche come viewer_count (alias, stesso payload).

viewerCountNumberSpettatori live in questo momento
topViewersArrayOrdinati per engagement
{
  "event": "roomUserSeq",
  "data": {
    "viewerCount": 1234,
    "topViewers": [
      {
        "user": {
          "uniqueId": "top_fan"
        },
        "coinCount": 5000
      }
    ]
  }
}

subscribeRara

Scatta quando uno spettatore si abbona allo streamer.

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

linkMicBattleDurante le sfide

Scatta quando una sfida TikTok LIVE inizia, si aggiorna o finisce. Include punteggi + partecipanti.

battleUsersArrayPartecipanti con punteggi
typeNumber1=inizio, 2=aggiornamento, 3=fine
{
  "event": "linkMicBattle",
  "data": {
    "type": 1,
    "battleUsers": [
      {
        "uniqueId": "streamer1"
      },
      {
        "uniqueId": "streamer2"
      }
    ]
  }
}

roomPinRara

Scatta quando lo streamer fissa un messaggio della chat.

pinnedMessageObjectContenuto del messaggio + mittente
{
  "event": "roomPin",
  "data": {
    "pinnedMessage": {
      "text": "Welcome!",
      "user": {
        "uniqueId": "streamer"
      }
    }
  }
}

Domande frequenti

Mi serve un piano a pagamento per ricevere gli eventi?

No. Il piano Sandbox è gratuito e fornisce il payload reale completo (username reali, diamanti reali, ecc.): il tuo client firma il WebSocket upstream con il proprio cookie TikTok. Gli unici limiti fissi sono 3 connessioni WebSocket simultanee e 5.000 richieste REST/giorno. Basic a $7/sett. alza il limite a 20 WS simultanei + 10.000 richieste/giorno.

Quale evento scatta più spesso in una diretta affollata?

`like` e `chat` dominano per frequenza. `gift` è il segnale di maggior valore per singolo evento.

Posso iscrivermi a più creator TikTok contemporaneamente?

Sì. Apri un WebSocket per ogni uniqueId. Il piano Pro consente 50 WS simultanei, Ultra 250.

Come capisco quando finisce una serie di regali?

Solo i regali a serie (`giftType` 1) creano una serie: aspetta `repeatEnd === true`, oppure chiudila tu quando non arrivano nuovi frame per qualche secondo, e prendi il `repeatCount` più alto. Gli altri regali non inviano mai un frame di fine: un invio a quantità come 8x è un unico frame con `repeatCount` 8, quindi contalo appena arriva. In entrambi i casi i diamanti totali = `diamondCount * repeatCount`.

Qual è la latenza rispetto alla diretta vera e propria?

Gli eventi arrivano circa 150-400ms dopo che sono avvenuti su TikTok. Più veloce dello stream video stesso sulla maggior parte delle CDN.

Le sfide arrivano per entrambi i creator?

Sì. Collegati a uno qualsiasi dei due creator della sfida: entrambi ricevono lo stesso evento `linkMicBattle` con entrambi i `battleUsers` compilati.