API Документация
REST API для программного доступа к данным игроков Standoff 2.
Base URL http://lunarisapi.duckdns.org/api/v1
Авторизация заголовок X-API-Key: lun_ваш_ключ
Rate limit 30 запросов в минуту
Swagger UI /docs
Эндпоинты
GET
/api/v1/player/{player_id}
Получить полную информацию об игроке.
Параметры
| Параметр | Тип | Описание |
|---|---|---|
player_id | string (path) | ID игрока Standoff 2 |
Пример запроса
curl -H "X-API-Key: lun_ваш_ключ" http://lunarisapi.duckdns.org/api/v1/player/123456789
Пример ответа (200)
{
"status": "ok",
"cached": false,
"data": {
"nickname": "PlayerName",
"player_id": "123456789",
"hours": 156.5,
"last_login": "19.07.2018 в 03:45",
"reg_date": "18.07.2018 в 22:25",
"matchmaking": "Bronze II · 300",
"allies": "Bronze II · 300",
"duels": "Bronze II · 300",
"best_matchmaking": "Silver I · 620",
"best_allies": "Bronze III · 410",
"best_duels": "Bronze II · 300",
"banned": true,
"ban_code": "1006",
"ban_scope": "GLOBAL",
"ban_until": "PERMAMENT",
"error": "",
"raw_text": "..."
}
}
GET
/api/v1/player/{player_id}/check-hours
Проверка кол-ва часов на аккаунте и наличия бана.
Query-параметры
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
hours | float | 100 | Необходимое кол-во часов |
Пример запроса
curl -H "X-API-Key: lun_ваш_ключ" \
"http://lunarisapi.duckdns.org/api/v1/player/123456789/check-hours?hours=50"
Пример ответа (200)
{
"status": "ok",
"player_id": "123456789",
"hours": 156.5,
"required_hours": 50,
"has_required_hours": true,
"banned": false,
"cached": false
}
GET
/api/v1/me
Информация о владельце API-ключа.
Пример ответа (200)
{
"status": "ok",
"user": {
"telegram_id": 123456789,
"username": "myuser",
"role": "premium",
"queries": 42
}
}
Коды ошибок
| Код | Описание |
|---|---|
401 | Невалидный или отсутствующий API-ключ |
404 | Игрок не найден |
429 | Превышен rate limit |
500 | Внутренняя ошибка сервера |
Python пример
import requests
API_KEY = "lun_ваш_ключ"
BASE_URL = "http://lunarisapi.duckdns.org/api/v1"
def check_player(player_id: str, required_hours: float = 100) -> dict:
resp = requests.get(
f"{BASE_URL}/player/{player_id}/check-hours",
params={"hours": required_hours},
headers={"X-API-Key": API_KEY},
)
resp.raise_for_status()
return resp.json()
result = check_player("123456789", 50)
print(f"Часов: {result['hours']} — проходит: {result['has_required_hours']}")