API для разработчиков
REST API /v1: WN8, история игроков, статистика танков, пороги отметок, кланы и сессии. Источник данных — Леста Игры.
Быстрый старт
Ключ, SDK и один запрос. Ответы в JSON, ошибки с машинным кодом.
Создайте ключ
Войдите и создайте ключ в кабинете разработчика. Секрет показывается один раз.
Установите SDK
bun add @otmetki/sdk— типы, повторы и проверка вебхуков. Из любого другого языка передавайте заголовокX-API-Key.Отправьте запрос
По нику или id игрока вернётся сводка с WN8, ЭФФ, Броня-Индексом и recent-периодами.
https://api.triotmetki.ruimport { createOtmetkiClient, getPlayer } from '@otmetki/sdk';
const client = createOtmetkiClient({
apiKey: process.env.OTMETKI_API_KEY,
baseUrl: 'https://api.triotmetki.ru'
});
const { data: player } = await getPlayer({ client, path: { idOrNick: 'Tanker' }, throwOnError: true });
console.log(player.summary.nickname, player.summary.overall.wn8.value);Справочник API
Эндпоинты /v1 с параметрами, схемами ответов и примерами запросов — в интерактивном справочнике на сервере API.
Вебхуки
Сервер отправляет POST на ваш адрес, когда подписанный игрок получает отметку, заканчивает сессию или меняется состав клана.
События
Игрок получил новую отметку на стволе. Приходит для подписанных игроков и участников подписанных кланов.
{
"id": "6f1c2a4e-8d3b-4c7a-9e21-3b5f0d8a7c10",
"event": "mark.gained",
"createdAt": "2026-09-24T19:42:07.000Z",
"data": {
"accountId": 12345678,
"nickname": "Tanker",
"tankId": 7249,
"marks": 3,
"previousMarks": 2,
"percent": 95.12,
"source": "mod"
}
}Заголовки
- webhook-signature
- Список подписей вида «v1,» + base64 через пробел: HMAC-SHA256 секретом вебхука (без префикса whsec_, из base64) над строкой «id.время.тело» по стандарту Standard Webhooks.
- webhook-timestamp
- Время отправки, секунды Unix. Входит в подпись.
- X-Otmetki-Event
- Имя события, дублирует поле event.
- webhook-id
- Id доставки: входит в подпись, используйте его для идемпотентности.
Проверка подписи
import { verifyWebhook } from '@otmetki/sdk';
app.post('/otmetki', async (request, reply) => {
try {
const { event, data } = verifyWebhook({
secret: process.env.OTMETKI_WEBHOOK_SECRET,
body: request.rawBody,
headers: request.headers
});
return reply.code(204).send();
} catch {
return reply.code(401).send();
}
});- Отклоняйте доставки старше 5 минут — это защита от повтора.
- Неудачную доставку повторяем до 6 раз с растущей паузой.
- После 20 неудач подряд вебхук отключается, включить его снова можно в кабинете.
Лимиты
API бесплатный для всех. Подписка Плюс повышает личные лимиты, а открытые бесплатные проекты для сообщества получают расширенные лимиты по запросу.
| Лимит | Бесплатный | Плюс | Сообщество |
|---|---|---|---|
| Запросов в сутки | 10 000 | 50 000 | 2 000 000 |
| Запросов в секунду | 5 | 10 | 100 |
| Вебхуков | 1 | 5 | 50 |
| Как получить | Сразу, с любым ключом | С подпиской Плюс, для личного некоммерческого использования | Бесплатно для открытых бесплатных проектов — напишите нам |
Условия использования API
- Публичный API бесплатный: ключ выдаётся любому пользователю, платных тарифов у API нет.
- Лимиты Плюса — для личного некоммерческого использования: своих ботов, виджетов и скриптов.
- Открытые бесплатные проекты для сообщества могут бесплатно получить лимиты уровня «Сообщество» — напишите нам о проекте.
- Нельзя перепродавать доступ к нашему API или прятать его данные за платным доступом.
- Данные частично получены из API Лесты, поэтому действуют и условия Лесты Игры: указывайте источник данных и не используйте их коммерчески.