So funktioniert der TikTok LIVE WebSocket
TikTool stellt unter wss://api.tik.tools einen gemanagten WebSocket-Endpunkt bereit, der Events von jedem TikTok-LIVE-Stream in Echtzeit liefert. Du verbindest dich mit deinem API-Key und einem TikTok-Usernamen - Protokoll-Aushandlung, Authentifizierung und Reconnect-Logik übernimmt der Server.
Anders als direkte Protokollverbindungen zur Broadcast-Infrastruktur von TikTok (die oft kaputtgehen) ist die WebSocket API von TikTool ein stabiles Relay für den Produktivbetrieb.
Schnellstart - Verbinden in 3 Zeilen
JavaScript / Node.js
import { TikTokLive } from '@tiktool/live'
const client = new TikTokLive({ uniqueId: 'streamer_username', apiKey: 'YOUR_KEY' })
client.on('chat', e => console.log(`${e.user.uniqueId}: ${e.comment}`))
client.connect()Oder verbinde dich direkt mit nativem WebSocket (kein SDK nötig):
const ws = new WebSocket('wss://api.tik.tools?uniqueId=USERNAME&apiKey=YOUR_KEY')
ws.onmessage = (msg) => {
const event = JSON.parse(msg.data)
console.log(event.event, event.data)
}Python
import asyncio, websockets, json
async def connect():
uri = "wss://api.tik.tools?uniqueId=USERNAME&apiKey=YOUR_KEY"
async with websockets.connect(uri) as ws:
async for message in ws:
event = json.loads(message)
print(event["event"], event.get("data", {}))Jede Sprache
Jede Sprache mit WebSocket-Unterstützung funktioniert - Go, Rust, Java, C#, Ruby, PHP. Verbinde dich einfach mit:
wss://api.tik.tools?uniqueId=TIKTOK_USERNAME&apiKey=YOUR_API_KEYParameter der WebSocket-Verbindung
uniqueId✓TikTok-Username (ohne @) des StreamersapiKey✓Dein TikTool API-KeyjwtKeyJWT-basierte Authentifizierung (Alternative zu apiKey für Browser-Clients mit Token)Eventtypen
Jede WebSocket-Nachricht ist ein JSON-Objekt mit den Feldern event und data. Diese Events bekommst du:
chatNeue Chatnachricht eines Zuschauers. Enthält User-Infos, Nachrichtentext und Badges.
giftVirtuelles Geschenk eines Zuschauers. Enthält Geschenkname, Diamantenwert und Anzahl der Wiederholungen.
likeEin Zuschauer hat den Stream geliked. Enthält die Gesamtzahl der Likes.
memberEin Zuschauer ist dem Stream beigetreten. Wird ausgelöst, wenn User den Live-Raum betreten.
socialFollow / Share / Favorit. Das Feld data.action sagt dir, was davon (follow, share, favourite).
roomUserSeqUpdate der Zuschauerzahl. Enthält die aktuellen Werte viewerCount und topViewers.
subscribeEin Zuschauer hat den Streamer abonniert.
battleLinkMic-Battle-Event. Enthält Battle-Status, Punktestände, Dauer und Teilnehmer.
battleArmiesUpdate der Battle-Teams. Team-Punktestände und Rangfolge der Teilnehmer.
linkMicUpdate des LinkMic-Gast-Layouts. Enthält Slot- und Gast-User-IDs für Streams mit mehreren Hosts.
roomPinDer Streamer hat eine Chatnachricht angepinnt.
liveIntroUpdate der Stream-Beschreibung. Enthält Stream-Titel und Beschreibung.
emoteChatEigenes Emote im Chat gesendet. Enthält Emote-ID und Bild-URL.
envelopeSchatztruhen- / Red-Envelope-Event im Stream.
questionVon einem Zuschauer gestellte Frage im Q&A.
rankUpdateAktualisierter Rang des Streamers pro Region.
barrageBarrage- bzw. Ankündigungsnachricht am oberen Bildschirmrand.
superFanEin Zuschauer ist Super Fan geworden oder im Level aufgestiegen. Enthält das neue Level.
superFanJoinEin Super Fan hat den Raum betreten.
superFanBoxSuper-Fan-Box- / Belohnungs-Event.
controlSteuerung des Stream-Lebenszyklus (Pause, Ende usw.).
Verbindungslimits nach Tarif
Fehlerbehandlung & Reconnect
Der WebSocket wird mit Standard-Close-Codes geschlossen. Dein Client sollte sich dann neu verbinden:
// Auto-reconnect pattern (Node.js)
function connect() {
const ws = new WebSocket('wss://api.tik.tools?uniqueId=USERNAME&apiKey=KEY')
ws.onmessage = (msg) => {
const event = JSON.parse(msg.data)
// Process event
}
ws.onclose = (e) => {
console.log(`Disconnected (${e.code}). Reconnecting in 3s...`)
setTimeout(connect, 3000)
}
ws.onerror = (err) => {
console.error('WebSocket error:', err.message)
ws.close()
}
}
connect()