Гайд

TikTok LIVE WebSocket API

Подключайтесь к любой трансляции TikTok LIVE через WebSocket. Получайте сообщения чата, подарки, число зрителей, баттлы и данные о вовлечённости в реальном времени с задержкой меньше 50 мс. Работает с любым языком программирования.

Как работает WebSocket TikTok LIVE

TikTool предоставляет управляемый WebSocket-эндпоинт wss://api.tik.tools, который стримит события любой трансляции TikTok LIVE в реальном времени. Вы подключаетесь с API-ключом и никнеймом в TikTok - сервер сам берёт на себя протокол, авторизацию и переподключение.

В отличие от прямого подключения к инфраструктуре трансляций TikTok (которое часто ломается), WebSocket API TikTool - это стабильный ретранслятор продакшен-уровня.

Быстрый старт - подключение в 3 строки

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()

Или подключайтесь напрямую через нативный WebSocket (SDK не нужен):

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", {}))

Любой язык

Подходит любой язык с поддержкой WebSocket - Go, Rust, Java, C#, Ruby, PHP. Просто подключитесь к:

wss://api.tik.tools?uniqueId=TIKTOK_USERNAME&apiKey=YOUR_API_KEY

Параметры WebSocket-подключения

ПараметрОбязательныйОписание
uniqueId✓Никнейм стримера в TikTok (без @)
apiKey✓Ваш API-ключ TikTool
jwtKeyАвторизация по JWT (альтернатива apiKey для браузерных клиентов с токенами)

Типы событий

Каждое сообщение WebSocket - это JSON-объект с полями event и data. Вот какие события вы будете получать:

chat

Новое сообщение зрителя в чате. Содержит данные пользователя, текст сообщения и бейджи.

gift

Виртуальный подарок от зрителя. Содержит название подарка, стоимость в алмазах и число повторов.

like

Зритель поставил лайк стриму. Содержит общее число лайков.

member

Зритель зашёл на стрим. Срабатывает, когда пользователь входит в комнату эфира.

social

Подписка / репост / избранное. Поле data.action показывает, что именно (follow, share, favourite).

roomUserSeq

Обновление числа зрителей. Содержит текущие viewerCount и topViewers.

subscribe

Зритель оформил подписку на стримера.

battle

Событие баттла LinkMic. Содержит статус баттла, счёт, длительность и участников.

battleArmies

Обновление армий баттла. Счёт команд и рейтинг участников.

linkMic

Обновление раскладки гостей LinkMic. Содержит ID слотов/гостей для эфиров с несколькими ведущими.

roomPin

Стример закрепил сообщение в чате.

liveIntro

Обновление описания стрима. Содержит название и описание трансляции.

emoteChat

Кастомный эмоут в чате. Содержит ID эмоута и URL изображения.

envelope

Событие сундука / красного конверта на стриме.

question

Вопрос от зрителя в режиме вопросов и ответов.

rankUpdate

Обновление места стримера в региональном рейтинге.

barrage

Сообщение-баннер/объявление вверху экрана.

superFan

Зритель стал Super Fan или повысил уровень. Содержит новый уровень.

superFanJoin

Super Fan зашёл в комнату.

superFanBox

Событие бокса / награды Super Fan.

control

Управление жизненным циклом стрима (пауза, завершение и т. д.).

Лимиты подключений по тарифам

ТарифПодключенияЦена
Sandbox (бесплатно)15Тариф Sandbox
Pro50от $15/нед.
Ultra250от $45/нед.
Agency500 + Firehoseот $119/нед.

Обработка ошибок и переподключение

WebSocket закрывается со стандартными кодами закрытия. Ваш клиент должен сам обрабатывать переподключение:

// 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()

Частые вопросы

Как подключиться к трансляции TikTok через WebSocket?

Какие языки программирования работают с WebSocket TikTok LIVE?

WebSocket API TikTok LIVE бесплатный?

Чем это отличается от open-source библиотек для трансляций?

Какая задержка у WebSocket-подключения?