API
Данные твоего сервера —в твоих инструментах.
API только для чтения для Premium-серверов: кто онлайн, матч, игроки, киллы и история. Ключи создаются в WARPANEL → Настройки → API.
Эндпоинты · warpanel.gg/api/v1Только чтение
GET/v1/serversТвои серверы сейчас (браузер серверов)
GET/v1/serverСервер сейчас
GET/v1/playersИгроки и их статистика (рейтинги)
GET/v1/players/{steamId}Один игрок
GET/v1/matchesПоследние матчи
GET/v1/eventsЛента событий (киллы и итоги матчей)
GET/v1/weaponsОружие
GET/v1/mapsКарты
GET/v1/totalsИтоги (сегодня, сезон, всё время)
GET/v1/historyИстория и самые загруженные часы
~❯curl -H "Authorization: Bearer $WARPANEL_API_KEY" https://warpanel.gg/api/v1/server
{
"server": {
"id": "x7k2p9",
"name": "[DOGS] Dog House EU | KOTK",
"joinCode": "ABCD1234",
"region": "eu-central",
"source": "rcon"
},
"online": true,
"players": {
"current": 58,
"max": 100
},
"match": {
"map": "Bakurani",
"lighting": "Day",
~❯
Как это работает
- 01JSON только для чтения по HTTPS. Базовый URL: https://warpanel.gg/api/v1
- 02Авторизация: передавай ключ как
Authorization: Bearer wpk_…(илиX-API-Key: wpk_…). Ключи создаёт владелец сервера в WARPANEL → Настройки → API. Ключ сервера читает один сервер; сетевой ключ (только для владельца) читает все серверы владельца в WARPANEL. - 03Сетевой ключ выбирает сервер через ?server=<id> (id из GET /servers; подойдёт и slug или код подключения) или ?server=all, чтобы объединить серверы (игроки объединяются по Steam ID). Без ?server эндпоинты, которые умеют объединять, так и делают (all), а /server просит указать один. С ключом сервера ?server можно не указывать.
- 04Только для Premium-серверов. Ключ перестаёт отвечать (403 premium_required), пока сервер, на котором он создан, на тарифе Free.
- 0560 запросов в минуту на ключ. Заголовки: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset (секунды). Сверх лимита: 429 с Retry-After.
- 06У нас live-данные кэшируются на 10 секунд, лента событий — на 5 секунд, статистика — на 1–2 минуты, история — на 10 минут, так что опрашивать чаще бессмысленно. Кэшируй и у себя (для сайта 30–60 с более чем достаточно).
- 07Время в ISO 8601 по UTC. /totals и /history принимают ?tz= (зона IANA, например Europe/Berlin) для «сегодня» и самых загруженных часов. Steam ID — 17-значные строки SteamID64. Команды: Valkyra (красные), Lonestar (синие) и Manticore (зелёные); на сервере до 100 игроков.
- 08Игроки, скрывшие себя из рейтингов, не попадают в списки игроков; в остальных местах (live-список, матчи, события) они отображаются как "Hidden player" с steamId null.
- 09CORS открыт для GET, но держи ключ на сервере (бэкенд-роут, serverless-функция или Cloudflare Worker) — всё, что есть в JavaScript в браузере, может прочитать любой посетитель.