REFERENCIA DE EVENTOS · FIREHOSE EN VIVO · TRANSMITIENDO AHORA
Todos los eventos de TikTok LIVE
Chat. Regalos. Likes. Entradas. Follows. Batallas. Suscripciones. Cada evento de TikTok LIVE llega por un solo WebSocket con metadatos completos. El feed de abajo es el firehose público real en este momento, no una maqueta.
Feed de eventos en vivo
Esperando el próximo evento en vivo...
El firehose público está oculto, pero cada evento es un envío real desde una sala real de TikTok LIVE. Conéctate con tu propia key para recibir el payload completo sin ocultar (usuarios reales, avatares reales, diamantes reales): lo único que cambia entre planes es el límite de conexiones simultáneas.
Suscríbete al firehose desde tu stack
Elige tu lenguaje. Copia. Ejecuta. Key Sandbox desde /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()Cada evento, qué lo dispara y qué trae el payload
Todos los eventos comparten el envoltorio { event: string, data: object }. Abajo: cada tipo de evento y los datos que lleva.
chatMuy frecuente
Se dispara cuando un espectador envía un mensaje en el chat. Es el evento más común.
userObjectuniqueId, nickname, profilePictureUrl, badgescommentStringEl texto del mensajeuserIdStringID numérico de usuario de TikTok{
"event": "chat",
"data": {
"user": {
"uniqueId": "viewer42",
"nickname": "Viewer 42"
},
"comment": "Hello!",
"userId": "7123456789"
}
}giftModerada
Se dispara cuando un espectador envía un regalo virtual. Incluye nombre del regalo, valor en diamantes y datos de la racha.
userObjectQuien lo envíagiftNameStringp. ej. "Rose", "Galaxy"giftIdNumberID numérico del regalodiamondCountNumberValor en diamantesrepeatCountNumberNúmero de la racharepeatEndBooleanTrue cuando termina la racha{
"event": "gift",
"data": {
"user": {
"uniqueId": "big_fan"
},
"giftName": "Rose",
"giftId": 5655,
"diamondCount": 1,
"repeatCount": 5,
"repeatEnd": true
}
}likeMuy frecuente
Se dispara cuando un espectador toca el botón de like. Incluye el total de likes acumulados.
userObjectQuien da likelikeCountNumberLikes de este eventototalLikeCountNumberTotal de la transmisión{
"event": "like",
"data": {
"user": {
"uniqueId": "liker1"
},
"likeCount": 15,
"totalLikeCount": 12500
}
}memberModerada
Se dispara cuando un espectador entra a la sala de la transmisión en vivo.
userObjectUsuario que entra{
"event": "member",
"data": {
"user": {
"uniqueId": "new_viewer",
"nickname": "New Viewer"
}
}
}followBaja
Se dispara cuando un espectador sigue al streamer durante el LIVE.
userObjectUsuario que sigue{
"event": "follow",
"data": {
"user": {
"uniqueId": "new_follower"
}
}
}shareBaja
Se dispara cuando un espectador comparte la transmisión en vivo.
userObjectUsuario que comparte{
"event": "share",
"data": {
"user": {
"uniqueId": "sharer"
}
}
}roomUserSeqPeriódica
Actualización periódica del número de espectadores. La forma principal de seguir los espectadores en tiempo real. El SDK también lo emite como viewer_count (alias, mismo payload).
viewerCountNumberEspectadores en vivo ahora mismotopViewersArrayClasificados por interacción{
"event": "roomUserSeq",
"data": {
"viewerCount": 1234,
"topViewers": [
{
"user": {
"uniqueId": "top_fan"
},
"coinCount": 5000
}
]
}
}subscribeRara
Se dispara cuando un espectador se suscribe al streamer.
userObjectSuscriptor{
"event": "subscribe",
"data": {
"user": {
"uniqueId": "subscriber1"
}
}
}linkMicBattleDurante batallas
Se dispara cuando una batalla de TikTok LIVE empieza, se actualiza o termina. Incluye puntuaciones + participantes.
battleUsersArrayParticipantes con sus puntuacionestypeNumber1=inicio, 2=actualización, 3=fin{
"event": "linkMicBattle",
"data": {
"type": 1,
"battleUsers": [
{
"uniqueId": "streamer1"
},
{
"uniqueId": "streamer2"
}
]
}
}roomPinRara
Se dispara cuando el streamer fija un mensaje del chat.
pinnedMessageObjectContenido del mensaje + remitente{
"event": "roomPin",
"data": {
"pinnedMessage": {
"text": "Welcome!",
"user": {
"uniqueId": "streamer"
}
}
}
}Preguntas frecuentes
¿Necesito un plan de pago para recibir eventos?
No. El plan Sandbox es gratis y entrega el payload real completo de los eventos (usuarios reales, diamantes reales, etc.): tu cliente firma el WebSocket de origen con su propia cookie de TikTok. Los únicos límites fijos son 3 conexiones WebSocket simultáneas y 5,000 solicitudes REST/día. Basic, a $7/sem, sube el límite a 20 WS simultáneos + 10,000 solicitudes/día.
¿Qué evento se dispara más en una transmisión con mucha actividad?
`like` y `chat` dominan en frecuencia. `gift` es la señal de mayor valor por evento.
¿Puedo suscribirme a varios creadores de TikTok a la vez?
Sí. Abre un WebSocket por cada uniqueId. El plan Pro permite 50 WS simultáneos y Ultra 250.
¿Cómo detecto cuándo termina una racha de regalos?
Solo los regalos que admiten racha (`giftType` 1) hacen racha: espera `repeatEnd === true`, o ciérrala tú cuando no llegue un frame nuevo en unos segundos, y toma el `repeatCount` más alto. Los demás regalos nunca envían un frame de fin: un envío por cantidad, como 8x, es un solo frame con `repeatCount` 8, así que cuéntalo en cuanto llegue. En ambos casos, el total de diamantes = `diamondCount * repeatCount`.
¿Cuál es la latencia respecto a la transmisión real?
Los eventos llegan ~150-400ms después de dispararse en TikTok. Más rápido que el propio video en la mayoría de las CDNs.
¿Las batallas se disparan para ambos creadores?
Sí. Conéctate a cualquiera de los dos creadores de la batalla: ambos reciben el mismo evento `linkMicBattle` con los dos `battleUsers` completos.