Таблицы лидеров и статистика FastBuilder и дуэлей — те же цифры, что на сайте, в JSON. Для ботов, оверлеев на стриме, сторонних сайтов и любых ваших поделок.
Регистрации, ключей и заголовков нет: откройте адрес в браузере — увидите ответ. CORS открыт, поэтому запрос можно слать прямо со страницы.
curl "https://weakestww.ru/api/v1/duels/top?mode=bridge&limit=5"
Список эндпоинтов отдаёт и само API — GET /api/v1.
| Что | Как |
|---|---|
| Лимит | 2 запроса в секунду, до 60 «в запасе» на адрес. Сверх — 429 с
заголовком Retry-After. Остаток видно в
X-RateLimit-Remaining.
|
| Кэш | Ответы кэшируются: дуэли — 2 минуты, FastBuilder — 10. Точное время
стоит в Cache-Control, момент расчёта — в поле
updatedAt. Опрашивать чаще смысла нет.
|
| Версия | Всё лежит под /api/v1. Поля из ответов не пропадают и не
переименовываются; несовместимые изменения приедут как
/api/v2.
|
| Прочие адреса | Эндпоинты сайта вне /api/v1 (например
/api/duels/*) — внутренние. Они меняются без
предупреждения, на них не завязывайтесь.
|
Рекорды бриджинга. В зачёт идут только проверенные забеги — те же, что стоят в таблице рекордов в игре и на сайте.
Список арен: сколько на каждой зачётных забегов и разных игроков.
id отсюда — то, что подставляется в эндпоинты ниже.
Таблица рекордов арены: по лучшему времени каждого игрока, от быстрого к медленному.
| Параметр | Значение |
|---|---|
| :arena | Ключ арены, регистр не важен: Short, short — одно и то же. |
| limit | 1…100, по умолчанию 10. |
{
"arena": "Short",
"updatedAt": "2026-09-06T04:50:20.899Z",
"top": [
{ "place": 1, "nickname": "Alpha", "timeMs": 4200,
"date": "2026-08-01T12:00:00.000Z", "replayId": 501 }
]
}
replayId — реплей этого забега, его видно по адресу
https://weakestww.ru/r/501.
Лучшее время игрока на каждой арене, где у него есть зачётный забег, и место
в таблице этой арены. Ник — без учёта регистра; в ответе он в том виде, в
котором записан в базе. Если зачётных забегов нет — 404.
{
"nickname": "Machi",
"runs": 27,
"arenas": [
{ "arena": "Short", "place": 2, "timeMs": 4300,
"date": "2026-08-03T12:00:00.000Z", "runs": 22 }
]
}
Статистика дуэлей и командных режимов: победы, серии, K/D.
Режимы, число игроков с историей в каждом и общий счётчик сыгранных матчей.
id отсюда идёт в ?mode=.
Таблица лидеров.
| Параметр | Значение |
|---|---|
| mode | GLOBAL (по умолчанию — все режимы вместе) либо режим из
/duels/modes: bridge, mlgrush,
bedfight, stickfight, fireballfight,
bedwars, rushbedwars, mlgrush4x1.
|
| period | all (по умолчанию), daily, weekly,
monthly. Период — текущие сутки, неделя с понедельника и месяц.
|
| sort | wins (по умолчанию), winrate, games,
streak. |
| limit | 1…100, по умолчанию 10. |
{
"mode": "bridge", "period": "all", "sort": "wins",
"minGamesForWinrate": null,
"top": [
{ "place": 1, "nickname": "Alpha", "wins": 30, "losses": 5, "games": 35,
"kills": 90, "deaths": 20, "goals": 10,
"currentStreak": 3, "bestStreak": 9, "winrate": 85.71, "kd": 4.5 }
]
}
Сводка игрока по всем режимам (summary), разбивка по режимам
(modes) и место в общем рейтинге по победам (rank).
Если игрок не сыграл ни одного матча — 404.
{
"nickname": "Machi", "rank": 4,
"lastMatchAt": "2026-09-01T10:00:00.000Z",
"summary": { "wins": 10, "losses": 5, "games": 15, "kills": 40, "deaths": 20,
"goals": 3, "currentStreak": 2, "bestStreak": 6,
"winrate": 66.67, "kd": 2 },
"modes": [ { "mode": "bridge", "label": "Bridge Duel", "wins": 7, "...": "" } ]
}
У ошибки всегда одна форма: код для программы, пояснение для человека.
{ "error": "unknown_mode", "message": "No such duel mode",
"allowed": ["GLOBAL", "bridge", "mlgrush", "..."] }
| HTTP | error | Когда |
|---|---|---|
| 400 | bad_limit, bad_name, unknown_mode, unknown_period, unknown_sort |
Параметр не из списка. Допустимые значения приходят в самом ответе — опечатка не превращается в молча пустой топ. |
| 404 | unknown_arena, player_not_found, unknown_endpoint |
Нет такой арены, у игрока нет зачётной истории, или адрес набран неверно. |
| 429 | rate_limited | Превышен лимит. В retryAfter и Retry-After —
через сколько секунд можно снова. |
| 500 | internal_error | Сломалось у нас. Повторите позже. |
Несколько вещей, без которых числа читаются неправильно.
bridge,
bridge_doubles и bridge_teams — один режим
bridge: иначе рекорды игрока расползались бы по трём таблицам, а
серия побед рвалась при переходе 1v1 → 2v2.sort=winrate в таблицу попадают
только игроки, у которых матчей не меньше minGamesForWinrate
(сейчас 30). Без порога верх занимали бы новички с одной победой из одной игры.