Персональные данные API

Войдите в аккаунт, чтобы увидеть свой токен, slug'и и готовые команды для OBS.

API v2: полная справка

Эта страница дополняет быстрый старт: здесь собраны все методы, полезные ответы и рекомендации, чтобы автоматизировать счётчики, таймеры и панели под ваш поток.

Быстрая шпаргалка

  • Базовый URL: https://vsestream.live/api/v2/
  • Авторизация: токен передаётся в пути: /api/v2/.../{TOKEN}/...
  • Формат: все ответы в JSON; при ошибке вернётся ok: false, error и пояснение.
  • Онлайн-песочница: /api/v2/docs/ автоматически подставляет ваш токен.

Что умеет API

Счётчики смертей

Атомарные increment/decrement/set/reset, пакетные запросы и панель управления в пару кликов.

Таймеры

Старт, пауза, сброс и toggle. Возвращаем текущее состояние и время в секундах.

Единое состояние

/state/ отдаёт все счётчики, таймеры и базовые данные стрима одним JSON.

OBS-панели

Готовый HTML-интерфейс для Browser Source с кнопками и хоткеями I/O/R.

Проверка работоспособности

URL:GET /api/v2/health/
Авторизация:Не требуется
Что даёт:Статус сервиса и версия API
{
  "ok": true,
  "version": "2.0",
  "status": "healthy",
  "timestamp": "2024-01-20T15:30:00Z"
}

Счётчики смертей

Любое изменение приходит по URL вида /api/v2/counter/{TOKEN}/{SLUG}/. Ниже — базовые операции.

Получаем текущее значение

Метод:GET /api/v2/counter/{token}/{slug}/
Возвращает:Название, значение, время последнего обновления
{
  "ok": true,
  "counter": {
    "slug": "dark-souls",
    "name": "Dark Souls Deaths",
    "value": 42,
    "updated_at": "2024-01-20T15:30:00Z"
  },
  "timestamp": "2024-01-20T15:30:05Z"
}

Меняем значение

Метод:POST /api/v2/counter/{token}/{slug}/
Тип тела:application/json
ActionПараметрыЧто делает
incrementvalue (по умолчанию 1)Плюсом увеличивает значение
decrementvalue (по умолчанию 1)Уменьшает счётчик
setvalue (обязательно)Устанавливает точное число
resetСбрасывает в ноль
{
  "ok": true,
  "counter": {
    "slug": "dark-souls",
    "name": "Dark Souls Deaths",
    "value": 43,
    "updated_at": "2024-01-20T15:31:00Z"
  },
  "old_value": 42,
  "new_value": 43,
  "timestamp": "2024-01-20T15:31:00Z"
}

Обновляем сразу несколько счётчиков

Метод:POST /api/v2/counter/{token}/batch/
Когда удобно:Хотите синхронно обновить несколько игр или сцен
{
  "operations": [
    {"slug": "dark-souls", "action": "increment", "value": 1},
    {"slug": "elden-ring", "action": "increment", "value": 1},
    {"slug": "bloodborne", "action": "reset"}
  ]
}

Таймеры

Структура аналогичная счётчикам. Используйте, если нужно запускать раны, отсчитывать время до события или паузить кат-сцены.

Метод:POST /api/v2/timer/{token}/{slug}/
Доступные действия:start, pause, reset, toggle
{
  "ok": true,
  "timer": {
    "slug": "speedrun",
    "name": "Speedrun Timer",
    "running": true,
    "elapsed_seconds": 125.342,
    "updated_at": "2024-01-20T15:33:00Z"
  },
  "timestamp": "2024-01-20T15:33:00Z"
}

Единое состояние

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

Метод:GET /api/v2/state/{token}/
Использование:Оверлеи, чат-боты, дашборды
{
  "ok": true,
  "counters": [
    {"slug": "dark-souls", "name": "Dark Souls", "value": 43},
    {"slug": "elden-ring", "name": "Elden Ring", "value": 129}
  ],
  "timers": [
    {"slug": "speedrun", "name": "Speedrun", "running": true}
  ],
  "stream": {
    "live": true,
    "death_count": 43
  },
  "timestamp": "2024-01-20T15:34:00Z"
}

Панель управления

Для быстрого старта откройте готовую страницу или добавьте её в OBS как Browser Source.

URL:https://vsestream.live/api/v2/control/{TOKEN}/{SLUG}/
Что внутри:Кнопки + горячие клавиши I/O/R, статус счётчика, обновления в реальном времени

Если получили ошибку

Ответы с ошибками выглядят одинаково:

{
  "ok": false,
  "error": "invalid_token",
  "message": "Токен отключён или не существует"
}
403 — invalid_token
Проверьте, что используете последний токен из раздела Integrations. Старые или отключённые токены блокируются мгновенно.
404 — not_found
Slug написан с ошибкой или сущность ещё не создана. Подсказку найдёте в карточке счётчика.
400 — bad_request
Чаще всего забыли указать поле value для действия set или отправили некорректный JSON.
КодHTTPОписание
invalid_token403Токен недействителен или выключен
not_found404Счётчик или таймер не найден
bad_request400Некорректные параметры запроса
bad_action400Неизвестное или запрещённое действие
invalid_json400Тело запроса не JSON или повреждено

Примеры кода

Python

import requests

TOKEN = "YOUR_TOKEN"
BASE_URL = "https://vsestream.live/api/v2"

def increment_counter(slug, value=1):
    resp = requests.post(
        f"{BASE_URL}/counter/{TOKEN}/{slug}/",
        json={"action": "increment", "value": value}
    )
    data = resp.json()
    if data.get("ok"):
        print("Counter", data["counter"]["value"])
    else:
        print("Error", data.get("error"))

increment_counter("dark_souls", 1)

JavaScript / Node.js

const TOKEN = "YOUR_TOKEN";
const BASE_URL = "https://vsestream.live/api/v2";

async function incrementCounter(slug, value = 1) {
  const response = await fetch(`${BASE_URL}/counter/${TOKEN}/${slug}/`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ action: 'increment', value })
  });

  const data = await response.json();
  if (!data.ok) {
    throw new Error(`${data.error}: ${data.message}`);
  }
  return data.counter.value;
}

incrementCounter('dark_souls').then(console.log);

cURL

# Увеличить счётчик
curl -X POST "https://vsestream.live/api/v2/counter/TOKEN/SLUG/" \
  -H "Content-Type: application/json" \
  -d '{"action":"increment","value":1}'

# Получить текущее значение
curl "https://vsestream.live/api/v2/counter/TOKEN/SLUG/"

Советы по внедрению

Обрабатывайте ошибки

async function safeAPICall(url, options) {
  try {
    const response = await fetch(url, options);
    const data = await response.json();
    if (!data.ok) {
      console.error('API error:', data.error, data.message);
      return null;
    }
    return data;
  } catch (error) {
    console.error('Network error:', error);
    return null;
  }
}

Не спамьте запросами

Если кнопка нажимается много раз подряд, заверните обработчик в debounce/throttle, чтобы не забить очередь запросов.

Используйте batch там, где можно

Один пакетный POST вместо трёх отдельных — меньше задержка и нагрузка.

Если переходите с v1

Подробные шаги есть в руководстве по миграции. Вкратце:

  • Меняем пути /integrations/overlay/api/ на /api/v2/.
  • Действия выполняем POST-запросами с JSON телом.
  • Читаем числа прямо из ответа JSON, а не из HTML.
  • Используем готовые действия decrement, set и пакетные операции.

Полезные ссылки

Нашли неточность или нужна подсказка? Напишите в поддержку с ссылкой на этот раздел.

Версия справки: API v2 Full v2. Содержимое актуально на октябрь 2025.