1. Get Your API Key
Sign up at tik.tools and get a free sandbox API key from the dashboard. No credit card required.2. Install (Optional)
If using the Node.js SDK, install it via npm:npm install @tiktool/live
3. Connect
import { TikTokLive } from '@tiktool/live';
const client = new TikTokLive({
apiKey: 'YOUR_API_KEY',
uniqueId: 'streamer_username',
});
client.on('chat', (event) => {
console.log(`${event.user.uniqueId}: ${event.comment}`);
});
client.on('gift', (event) => {
console.log(`${event.user.uniqueId} sent ${event.giftName} (${event.diamondCount}π)`);
});
client.on('connected', () => console.log('Connected!'));
await client.connect();
import WebSocket from 'ws';
const ws = new WebSocket('wss://api.tik.tools?uniqueId=streamer_name&apiKey=YOUR_KEY');
ws.on('open', () => console.log('Connected!'));
ws.on('message', (raw) => {
const { event, data } = JSON.parse(raw);
switch (event) {
case 'chat': console.log(`π¬ ${data.user.uniqueId}: ${data.comment}`); break;
case 'gift': console.log(`π ${data.user.uniqueId} sent ${data.giftName}`); break;
case 'like': console.log(`β€οΈ ${data.user.uniqueId} liked Γ ${data.likeCount}`); break;
case 'member': console.log(`π ${data.user.uniqueId} joined`); break;
case 'roomUserSeq': console.log(`π Viewers: ${data.viewerCount}`); break;
}
});
ws.on('close', (code, reason) => console.log('Closed:', code, reason.toString()));
import asyncio, websockets, json
async def listen():
url = "wss://api.tik.tools?uniqueId=streamer_name&apiKey=YOUR_KEY"
async with websockets.connect(url) as ws:
print("Connected!")
async for message in ws:
msg = json.loads(message)
event = msg["event"]
data = msg.get("data", {})
user = data.get("user", {}).get("uniqueId", "")
if event == "chat": print(f"π¬ {user}: {data.get('comment', '')}")
elif event == "gift": print(f"π {user} sent {data.get('giftName', '')}")
elif event == "like": print(f"β€οΈ {user} liked Γ {data.get('likeCount', 0)}")
elif event == "member": print(f"π {user} joined")
elif event == "roomUserSeq": print(f"π Viewers: {data.get('viewerCount', 0)}")
asyncio.run(listen())
# Install wscat for WebSocket testing:
npm install -g wscat
# Connect to a live stream:
wscat -c "wss://api.tik.tools?uniqueId=streamer_name&apiKey=YOUR_KEY"
# Or check if a user is live via REST:
curl "https://api.tik.tools/webcast/check_alive?apiKey=YOUR_KEY&unique_id=streamer_name"
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
import java.net.URI;
var ws = new WebSocketClient(new URI("wss://api.tik.tools?uniqueId=streamer_name&apiKey=YOUR_KEY")) {
public void onMessage(String msg) {
var json = new org.json.JSONObject(msg);
if (json.getString("event").equals("chat")) {
var data = json.getJSONObject("data");
System.out.println(data.getJSONObject("user").getString("uniqueId") + ": " + data.getString("comment"));
}
}
public void onOpen(ServerHandshake h) { System.out.println("Connected!"); }
public void onClose(int code, String reason, boolean remote) {}
public void onError(Exception e) { e.printStackTrace(); }
};
ws.connect();
package main
import (
"fmt"
"log"
"github.com/gorilla/websocket"
)
func main() {
url := "wss://api.tik.tools?uniqueId=streamer_name&apiKey=YOUR_KEY"
conn, _, err := websocket.DefaultDialer.Dial(url, nil)
if err != nil { log.Fatal(err) }
defer conn.Close()
for {
_, msg, err := conn.ReadMessage()
if err != nil { break }
fmt.Println(string(msg))
}
}
using System.Net.WebSockets;
using System.Text;
using System.Text.Json;
var ws = new ClientWebSocket();
await ws.ConnectAsync(new Uri("wss://api.tik.tools?uniqueId=streamer_name&apiKey=YOUR_KEY"), CancellationToken.None);
var buf = new byte[4096];
while (ws.State == WebSocketState.Open) {
var result = await ws.ReceiveAsync(buf, CancellationToken.None);
var msg = Encoding.UTF8.GetString(buf, 0, result.Count);
var json = JsonDocument.Parse(msg);
if (json.RootElement.GetProperty("event").GetString() == "chat") {
var data = json.RootElement.GetProperty("data");
Console.WriteLine(data.GetProperty("user").GetProperty("uniqueId") + ": " + data.GetProperty("comment"));
}
}
4. Whatβs Next?
WebSocket Events
See all 30+ event types you can receive.
REST API
Explore signing, room info, rankings, and more.
Live Captions
Add real-time AI transcription to any stream.
Authentication
Learn about API keys and JWT tokens for frontend use.