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
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, badgescommentStringIl testo del messaggiouserIdStringID 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.
userObjectMittentegiftNameStringes. "Rosa", "Galassia"giftIdNumberID numerico del regalodiamondCountNumberValore in diamantirepeatCountNumberNumero della serierepeatEndBooleanTrue 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 likelikeCountNumberLike di questo eventototalLikeCountNumberTotale 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 momentotopViewersArrayOrdinati 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 punteggitypeNumber1=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.