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

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

Переход с API v1 на v2

Если в проектах ещё используются старые ссылки /integrations/overlay/api/..., эта страница поможет обновить их до нового API v2 без неожиданностей.

План миграции в трёх шагах

  1. Замените URL и методы запросов.
  2. Обновите обработку ответов и ошибок (теперь чистый JSON).
  3. Включите новые возможности: decrement, set, пакетные операции и /state/.

Каждый шаг описан ниже с примерами кода.

Что изменилось между версиями

ФункцияAPI v1API v2
Формат ответаHTML redirectJSON с полем ok
Метод измененияGET с query-параметрамиPOST с JSON телом
Уменьшение счётчикаНет — только reset + incrementЕсть decrement
Batch-запросыОтсутствуют/counter/{token}/batch/
Единое состояниеНесколько запросов/state/{token}/
CORSОграниченШирокая поддержка

Сопоставление URL

Получить значение

v1: GET /integrations/overlay/api/death-counter/{token}/{slug}/current/

v2: GET /api/v2/counter/{token}/{slug}/

Increment

v1: GET .../increment/?value=1

v2: POST /api/v2/counter/{token}/{slug}/ + тело {"action":"increment","value":1}

Decrement

v1: нужно reset + increment

v2: {"action":"decrement","value":1}

Reset

v1: GET .../reset/

v2: {"action":"reset"}

Как выглядел код и как станет

JavaScript / Fetch API

Было:

// API v1 — GET и HTML-ответ
await fetch(`https://vsestream.live/integrations/overlay/api/death-counter/${TOKEN}/${SLUG}/increment/?value=1`);
// Нужно было парсить редирект руками

Стало:

// API v2 — POST и JSON
const resp = await fetch(`https://vsestream.live/api/v2/counter/${TOKEN}/${SLUG}/`, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ action: 'increment', value: 1 })
});

const data = await resp.json();
if (!data.ok) {
  throw new Error(data.error);
}
console.log('New value:', data.counter.value);

Python / Requests

Было:

import requests

resp = requests.get(
    f"https://vsestream.live/integrations/overlay/api/death-counter/{TOKEN}/{SLUG}/increment/",
    params={'value': 1}
)
html = resp.text  # приходилось искать число в HTML

Стало:

import requests

resp = requests.post(
    f"https://vsestream.live/api/v2/counter/{TOKEN}/{SLUG}/",
    json={'action': 'increment', 'value': 1}
)
data = resp.json()
print('New value:', data['counter']['value'])

cURL

Было:

curl "https://vsestream.live/integrations/overlay/api/death-counter/TOKEN/SLUG/increment/?value=1"

Стало:

curl -X POST "https://vsestream.live/api/v2/counter/TOKEN/SLUG/" \
  -H "Content-Type: application/json" \
  -d '{"action":"increment","value":1}'

Чек-лист миграции

  • ☐ Заменили все URL на /api/v2/... и обновили slug путей.
  • ☐ Поменяли методы: для действий теперь POST с JSON.
  • ☐ Обновили клиентский код: читаем data.ok, data.error и data.counter.
  • ☐ Реализовали новые действия decrement, set вместо обходных путей.
  • ☐ Протестировали сценарии в интерактивной документации.

Что обязательно проверить

Ответы HTML → JSON
Если код раньше искал значение через регулярки в HTML, замените на парсинг JSON.
Перенос параметров в тело
Любые значения теперь отправляются в JSON. Query-параметры игнорируются.
Ошибки и rate limit
API возвращает понятные коды (invalid_token, bad_request). Обработайте их в логике бота.

Что появилось нового

Batch операции

await fetch(`https://vsestream.live/api/v2/counter/${TOKEN}/batch/`, {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    operations: [
      { slug: 'dark-souls', action: 'increment', value: 1 },
      { slug: 'elden-ring', action: 'increment', value: 1 },
      { slug: 'bloodborne', action: 'reset' }
    ]
  })
});

/state/

const resp = await fetch(`https://vsestream.live/api/v2/state/${TOKEN}/`);
const data = await resp.json();
console.log(data.counters, data.timers);

Готовая панель

Добавьте https://vsestream.live/api/v2/control/TOKEN/SLUG/ в OBS Browser Source и управляйте счётчиком без кода.

Лучшая поддержка web-приложений

CORS-настройки позволяют вызывать API прямо из фронтенда, не обходя ограничения v1.

Что почитать дальше

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

Версия руководства: Migration Guide v2. Обновлено в октябре 2025.