REFERENSI EVENT · FIREHOSE LIVE · SEDANG BERJALAN
Kosakata event lengkap dari TikTok LIVE
Chat. Hadiah. Like. Join. Follow. LIVE match. Langganan. Semua event di TikTok LIVE mengalir lewat satu WebSocket dengan metadata lengkap. Feed di bawah ini adalah firehose publik asli saat ini - bukan mockup.
Feed event live
Menunggu event live berikutnya...
Firehose publik disamarkan, tapi setiap event adalah push asli dari room TikTok LIVE asli. Sambungkan dengan key kamu sendiri untuk menerima payload lengkap yang terbuka penuh (username asli, avatar asli, jumlah berlian asli) - satu-satunya yang berbeda antar paket adalah batas koneksi bersamaan.
Langgani firehose di stack kamu
Pilih bahasanya. Salin. Jalankan. Key sandbox dari /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()Setiap event, pemicunya, dan isi payload-nya
Semua event memakai format { event: string, data: object } yang sama. Di bawah ini: setiap jenis event dan data yang dibawanya.
chatSangat sering
Terpicu saat penonton mengirim pesan chat. Event paling umum.
userObjectuniqueId, nickname, profilePictureUrl, badgescommentStringTeks pesanuserIdStringID pengguna TikTok (angka){
"event": "chat",
"data": {
"user": {
"uniqueId": "viewer42",
"nickname": "Viewer 42"
},
"comment": "Hello!",
"userId": "7123456789"
}
}giftSedang
Terpicu saat penonton mengirim hadiah virtual. Berisi nama hadiah, nilai berlian, dan data streak.
userObjectPengirimgiftNameStringmis. "Rose", "Galaxy"giftIdNumberID hadiah (angka)diamondCountNumberNilai berlianrepeatCountNumberJumlah streakrepeatEndBooleanTrue saat streak selesai{
"event": "gift",
"data": {
"user": {
"uniqueId": "big_fan"
},
"giftName": "Rose",
"giftId": 5655,
"diamondCount": 1,
"repeatCount": 5,
"repeatEnd": true
}
}likeSangat sering
Terpicu saat penonton mengetuk tombol like. Berisi total like yang terkumpul.
userObjectPemberi likelikeCountNumberJumlah di event initotalLikeCountNumberTotal siaran{
"event": "like",
"data": {
"user": {
"uniqueId": "liker1"
},
"likeCount": 15,
"totalLikeCount": 12500
}
}memberSedang
Terpicu saat penonton masuk ke room siaran live.
userObjectPengguna yang masuk{
"event": "member",
"data": {
"user": {
"uniqueId": "new_viewer",
"nickname": "New Viewer"
}
}
}followJarang
Terpicu saat penonton mengikuti streamer selama live.
userObjectPengguna yang mengikuti{
"event": "follow",
"data": {
"user": {
"uniqueId": "new_follower"
}
}
}shareJarang
Terpicu saat penonton membagikan siaran live.
userObjectPengguna yang membagikan{
"event": "share",
"data": {
"user": {
"uniqueId": "sharer"
}
}
}roomUserSeqBerkala
Update jumlah penonton secara berkala. Cara utama melacak jumlah penonton real-time. SDK juga mengirimnya sebagai viewer_count (alias, payload sama).
viewerCountNumberPenonton live saat initopViewersArrayDiurutkan menurut engagement{
"event": "roomUserSeq",
"data": {
"viewerCount": 1234,
"topViewers": [
{
"user": {
"uniqueId": "top_fan"
},
"coinCount": 5000
}
]
}
}subscribeLangka
Terpicu saat penonton berlangganan ke streamer.
userObjectPelanggan{
"event": "subscribe",
"data": {
"user": {
"uniqueId": "subscriber1"
}
}
}linkMicBattleSelama LIVE match
Terpicu saat LIVE match TikTok dimulai, diperbarui, atau berakhir. Berisi skor + peserta.
battleUsersArrayPeserta beserta skornyatypeNumber1=mulai, 2=update, 3=selesai{
"event": "linkMicBattle",
"data": {
"type": 1,
"battleUsers": [
{
"uniqueId": "streamer1"
},
{
"uniqueId": "streamer2"
}
]
}
}roomPinLangka
Terpicu saat streamer menyematkan pesan chat.
pinnedMessageObjectIsi pesan + pengirim{
"event": "roomPin",
"data": {
"pinnedMessage": {
"text": "Welcome!",
"user": {
"uniqueId": "streamer"
}
}
}
}Pertanyaan umum
Apakah saya butuh paket berbayar untuk menerima event?
Tidak. Paket Sandbox gratis dan mengirim payload event asli yang lengkap (username asli, berlian asli, dll) - client kamu menandatangani WebSocket upstream dengan cookie TikTok miliknya sendiri. Batas kerasnya hanya 3 koneksi WebSocket bersamaan dan 5.000 request REST/hari. Basic seharga $7/mgg menaikkan batasnya ke 20 WS bersamaan + 10.000 request/hari.
Event mana yang paling sering terpicu di siaran yang ramai?
`like` dan `chat` paling mendominasi dari segi frekuensi. `gift` adalah sinyal dengan nilai tertinggi per event.
Bisakah saya berlangganan ke beberapa kreator TikTok sekaligus?
Bisa. Buka satu WebSocket per uniqueId. Paket Pro mengizinkan 50 WS bersamaan, Ultra 250.
Bagaimana cara mendeteksi kapan streak hadiah selesai?
Hanya hadiah yang bisa di-streak (`giftType` 1) yang punya streak: pantau `repeatEnd === true`, atau tutup sendiri kalau tidak ada frame baru selama beberapa detik, lalu ambil `repeatCount` tertinggi. Hadiah lain tidak pernah mengirim frame akhir: pengiriman dengan jumlah seperti 8x adalah satu frame dengan `repeatCount` 8, jadi hitung saat frame itu datang. Apa pun kasusnya, total berlian = `diamondCount * repeatCount`.
Berapa latensinya dibanding siaran aslinya?
Event tiba sekitar 150-400ms setelah terjadi di TikTok. Lebih cepat dari stream videonya sendiri di sebagian besar CDN.
Apakah event LIVE match terpicu untuk kedua kreator?
Ya. Sambungkan ke salah satu kreator di LIVE match itu - keduanya menerima event `linkMicBattle` yang sama dengan `battleUsers` milik kedua pihak terisi.