Guía para desarrolladores

TikTok LIVE API para Node.js

Crea asistentes, overlays y dashboards de TikTok LIVE en JavaScript. npm install, conéctate en 3 líneas y recibe eventos en tiempo real. SDK gratis, de código abierto, licencia MIT.

¿Por qué Node.js?

Node.js es el runtime más popular para integraciones con TikTok LIVE. El SDK oficial @tiktool/live está escrito en TypeScript, publicado en npm e incluye definiciones de tipos completas de serie. Obtienes:

  • Tipado seguro - definiciones de TypeScript completas para cada evento y método
  • Reconexión automática - el SDK maneja las conexiones caídas automáticamente
  • Basado en eventos - el patrón .on('event', handler) de siempre
  • Funciona en todas partes - Node.js 18+, Bun, Deno

Instala el SDK

npm install @tiktool/live

O con otros gestores de paquetes:

# Yarn
yarn add @tiktool/live

# pnpm
pnpm add @tiktool/live

# Bun
bun add @tiktool/live

Inicio rápido: 3 líneas para tener datos en vivo

Crea app.mjs y pega:

import { TikTokLive } from '@tiktool/live'

const client = new TikTokLive({
  uniqueId: 'tv_asahi_news',   // TikTok username (without @)
  apiKey: process.env.TIKTOOL_API_KEY
})

client.on('chat', (event) => {
  console.log(`${event.nickname}: ${event.comment}`)
})

await client.connect()

Ejecútalo:

TIKTOOL_API_KEY=your_api_key node app.mjs

En segundos verás los mensajes del chat llegando a tu terminal.

Todos los eventos disponibles

El SDK emite eventos estructurados para cada interacción en la transmisión:

import { TikTokLive } from '@tiktool/live'

const client = new TikTokLive({
  uniqueId: 'target_username',
  apiKey: process.env.TIKTOOL_API_KEY
})

// Chat messages
client.on('chat', (event) => {
  console.log(`[CHAT] ${event.nickname}: ${event.comment}`)
})

// Virtual gifts (Rose, Universe, etc.)
client.on('gift', (event) => {
  console.log(`[GIFT] ${event.nickname} sent ${event.giftName} (${event.diamondCount} 💎)`)
})

// New followers
client.on('follow', (event) => {
  console.log(`[FOLLOW] ${event.nickname} just followed!`)
})

// Likes
client.on('like', (event) => {
  console.log(`[LIKE] ${event.nickname} liked (total: ${event.totalLikeCount})`)
})

// Viewer count changes
client.on('viewer_count', (event) => {
  console.log(`[VIEWERS] ${event.viewerCount} watching`)
})

// Member joins (someone enters the stream)
client.on('member', (event) => {
  console.log(`[JOIN] ${event.nickname} joined the stream`)
})

// Share events
client.on('share', (event) => {
  console.log(`[SHARE] ${event.nickname} shared the stream`)
})

await client.connect()
console.log('✅ Connected and listening!')

Resultado esperado

✅ Connected and listening!
[VIEWERS] 3,412 watching
[CHAT] viewer_1: Hello everyone! 👋
[FOLLOW] new_fan just followed!
[GIFT] whale_user sent Universe (34,000 💎)
[LIKE] cool_viewer liked (total: 12,847)
[CHAT] fan_123: Love this stream!
[JOIN] curious_viewer joined the stream
[SHARE] supporter_1 shared the stream

Soporte de TypeScript

El SDK está escrito en TypeScript. Los tipos vienen incluidos automáticamente, no necesitas el paquete @types:

import { TikTokLive } from '@tiktool/live'
import type { ChatEvent, GiftEvent } from '@tiktool/live'

const client = new TikTokLive({
  uniqueId: 'target_username',
  apiKey: process.env.TIKTOOL_API_KEY
})

client.on('chat', (event: ChatEvent) => {
  // event.comment, event.nickname, event.userId - all typed
  console.log(event.nickname, event.comment)
})

client.on('gift', (event: GiftEvent) => {
  // event.giftName, event.diamondCount, event.repeatCount - all typed
  if (event.diamondCount >= 100) {
    console.log(`Big gift from ${event.nickname}!`)
  }
})

await client.connect()

WebSocket directo (sin SDK)

¿Prefieres usar el WebSocket directamente? Funciona con cualquier lenguaje o framework:

import WebSocket from 'ws'  // npm install ws

const ws = new WebSocket(
  'wss://api.tik.tools?uniqueId=tv_asahi_news&apiKey=YOUR_API_KEY'
)

ws.on('message', (raw) => {
  const msg = JSON.parse(raw.toString())

  switch (msg.event) {
    case 'chat':
      console.log(`${msg.data.user.nickname}: ${msg.data.comment}`)
      break
    case 'gift':
      console.log(`Gift: ${msg.data.giftName} (${msg.data.diamondCount} 💎)`)
      break
    case 'viewer_count':
      console.log(`Viewers: ${msg.data.viewerCount}`)
      break
  }
})

ws.on('open', () => console.log('Connected!'))

Preguntas frecuentes

¿TikTok tiene una API oficial de Node.js?

No. TikTok no ofrece una API pública para datos de transmisiones LIVE. La API de TikTools es un servicio gestionado de terceros que da acceso fiable y en tiempo real al chat, los regalos, los espectadores y otros eventos LIVE. El paquete npm @tiktool/live es el SDK oficial de esta API.

¿Es gratis?

Sí. El plan Sandbox te da 5,000 solicitudes/día y 3 conexiones WebSocket simultáneas: gratis, solo para evaluación, sin tarjeta de crédito. Regístrate aquí.

¿Puedo usarlo con Express, Fastify o Next.js?

Sí. El SDK funciona en cualquier entorno Node.js. Úsalo en route handlers de Express, plugins de Fastify, API routes de Next.js o scripts independientes.

¿Funciona con Bun y Deno?

Sí. El SDK es compatible con Bun y Deno. Instálalo con bun add @tiktool/live o impórtalo desde npm en Deno.