API v1

API LastLeak / LsMonitoring

Здесь описан весь доступный интерфейс API проекта: создание карточек серверов, каталог, статус, рейтинги, голоса, избранное, API ботов и служебные запросы сайта. Документация рассчитана на человека, обычный скрипт и AI-агента.

База v1https://lastleak.org/lsmonitoring/api/v1/
1. Авторизуйтесь

Для защищённых методов передайте API-токен.

2. Отправьте запрос

Ответы API приходят в JSON.

3. Используйте ответ

Для сервера сохраняйте id, slug и url.

Важно про URL

Для этого проекта используется путь /lsmonitoring/api/v1/. Не убирайте /lsmonitoring.

01

Авторизация

API-токен можно передать четырьмя способами. Для серверных интеграций лучше использовать заголовок.

X-API-Keyрекомендуется
Authorization: Bearerдля серверных приложений
?api_key=удобно для простых GET
?token=совместимый вариант
Не публикуйте токен

Токен даёт права своего владельца. Не вставляйте его в клиентский JavaScript, Git-репозиторий или публичную документацию.

Проверка токена
curl "https://lastleak.org/lsmonitoring/api/v1/me" -H "X-API-Key: lsm_ВАШ_ТОКЕН"
Bearer
curl "https://lastleak.org/lsmonitoring/api/v1/me" -H "Authorization: Bearer lsm_ВАШ_ТОКЕН"
02

Лимиты и правила

Лимит считается отдельно для каждого токена и минуты.

600 / миндля admin API-токена
API_DEFAULT_RATEдля обычного токена; точное значение задаётся конфигурацией проекта
429возвращается при превышении лимита
API не создаёт базу данных и не меняет системную конфигурацию. Для создания сервера нужны права, которые выданы самому токену.
03

Создание сервера

Полная точка: POST /admin/servers. Нужен admin-токен с правом manage:server.

POST
Что происходит при дубле

Если карточка уже существует по серверному адресу, API не создаёт вторую запись, а возвращает существующие id, slug и url.

Минимальный JSON
curl -X POST "https://lastleak.org/lsmonitoring/api/v1/admin/servers" \
  -H "X-API-Key: lsm_АДМИН_ТОКЕН" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My Server",
    "ip": "play.example.org",
    "port": 25565,
    "type": "java"
  }'
Новый сервер
{
  "ok": true,
  "created": true,
  "id": 42,
  "slug": "my-server",
  "url": "https://lastleak.org/lsmonitoring/server/my-server",
  "catalog_visible": true,
  "moderation_status": "approved"
}
Дубликат
{
  "ok": true,
  "created": false,
  "id": 42,
  "slug": "my-server",
  "reason": "duplicate"
}
04

Все поля «Добавить сервер»

Это полный набор полей, который использует форма добавления сервера в кабинете.

ПолеТипОбяз.Что передавать
namestringдаНазвание сервера, до 80 символов.
versionstringнетВерсия Minecraft, например 1.21.8.
ipstringдаОсновной домен или IP. Допустим алиас address.
portintegerнет1–65535. По умолчанию 25565.
typestringнетjava или bedrock. Значение be приводится к bedrock.
short_descriptionstringнетДо 220 символов.
descriptionstringнетПолное описание, до 20 000 символов.
site_urlURLнетСайт проекта. Алиас: site.
discord_urlURLнетПриглашение Discord. Алиас: discord.
youtube_channel_urlURLнетСсылка на YouTube-канал.
youtube_video_urlURLнетСсылка на конкретное видео.
addressesarray|stringнетДополнительные игровые адреса. До 10.
categoriesarrayнетID, slug или точное название категории. До лимита каталога.
pluginsarrayнетID или точное название плагина. До лимита каталога.
countrystringнетСтрана/регион.
tagsstringнетТеги, например survival,skyblock,pvp.
banner_urlURLнетПрямая ссылка на JPG/PNG/WebP. Алиас: banner.
screenshotsarrayнетМассив URL изображений.
moderation_statusstringнетapproved или pending. По умолчанию approved.
owner_user_idintegerнетID пользователя LastLeak, которому привязать владельца.
id, slug, даты, токен владельца и служебные поля создаются самим сайтом. Передавать их не требуется.
05

Баннер и скриншоты

Можно отправлять URL или реальные файлы.

Ссылками
{
  "banner_url": "https://example.org/banner.jpg",
  "screenshots": [
    "https://example.org/s1.jpg",
    "https://example.org/s2.jpg"
  ]
}
Файлами
curl -X POST "https://lastleak.org/lsmonitoring/api/v1/admin/servers" \
  -H "X-API-Key: lsm_АДМИН_ТОКЕН" \
  -F "name=My Server" \
  -F "ip=play.example.org" \
  -F "port=25565" \
  -F "type=java" \
  -F "banner=@./banner.jpg" \
  -F "screens[]=@./screen1.jpg" \
  -F "screens[]=@./screen2.jpg"
Допустимые изображения: JPG, PNG, WebP. Для URL баннера используется banner_url; для multipart-файла — поле banner. Для нескольких файлов — screens[].
06

Каталог, категории и поиск

Методы чтения, которые удобно использовать в боте, мониторинге или внешнем каталоге.

GET/health

Проверка доступности API. Аутентификация не нужна в обычной конфигурации.

GET/categories

Список всех категорий: id, название и slug.

GET/plugins

Список всех плагинов: id и название.

GET/search?q=skyblock&category=1&type=java

Умный поиск по каталогу. Результат ограничен первыми 100 карточками.

GET/events

События каталога и победители.

GET/me

Возвращает аккаунт, к которому относится токен.

GET/owned

Серверы, принадлежащие владельцу токена.

Поиск
curl "https://lastleak.org/lsmonitoring/api/v1/search?q=skyblock&category=1&type=java" \
  -H "X-API-Key: lsm_ВАШ_ТОКЕН"
07

Данные конкретного сервера

Все эти методы используют /server/{slug}.

GET/server/{slug}

Полная базовая карточка: адрес, тип, версия, онлайн, голоса, ссылки и URL карточки.

GET/server/{slug}/online

Текущий онлайн, максимум, ping, версия, MOTD и время проверки.

GET/server/{slug}/players

То же состояние онлайн/игроков, удобно для мониторинга.

GET/server/{slug}/status

Сводный текущий статус сервера.

GET/server/{slug}/rank

Позиции сервера в рейтингах.

GET/server/{slug}/votes

Количество голосов и список голосовавших.

GET/server/{slug}/addresses

Все игровые адреса сервера.

GET/server/{slug}/plugins

Плагины, привязанные к карточке.

GET/server/{slug}/achievements

Достижения сервера.

GET/server/{slug}/screenshots

Список скриншотов.

GET/server/{slug}/owner

Подтверждённый владелец.

GET/server/{slug}/uptime

Uptime за 7 и 30 дней.

GET/server/{slug}/history?hours=24

История игроков за 1–168 часов.

GET/server/{slug}/motd

Последний MOTD и время проверки.

GET/server/{slug}/faq?question=Какой%20IP?

Короткий ответ FAQ по карточке сервера.

GET/server/{slug}/events

События каталога.

GET/server/{slug}/ping

Live-пинг сервера.

GET/ping/{slug}

Короткий live-пинг сервера вне группы server.

08

Действия

Требуют прав токена и, для записи, метода POST.

POST/server/{slug}/vote

Отдать голос от имени аккаунта токена. Scope: write:vote.

POST/server/{slug}/favorite

Добавить или убрать сервер из избранного. Scope: write:favorite.

POST/admin/servers

Создание карточки. Scope: manage:server и admin-токен.

Endpoint /ping/{slug} и методы внутри /server/{slug} могут требовать соответствующий read/ping scope, в зависимости от текущего токена.
09

API пользовательских ботов

Отдельный API для созданных через LastLeak ботов. Авторизация — bot token.

Bot APIhttps://lastleak.org/lsmonitoring/api/bots.php
POSThttps://lastleak.org/lsmonitoring/api/bots.php?action=me

Информация о текущем боте по X-BOT-TOKEN или X-API-Key.

POSThttps://lastleak.org/lsmonitoring/api/bots.php?action=send

Отправить сообщение пользователю. JSON: {"user_id":123,"message":"Привет"}.

POSThttps://lastleak.org/lsmonitoring/api/bots.php?action=group_add

Добавить бота в группу. JSON: {"group_id":10}.

Важное ограничение

Bot API не должен использовать обычный пользовательский API-токен. Для него нужен именно bot token конкретного бота.

10

Внутренние API сайта

Это рабочие AJAX endpoint'ы самого интерфейса. Они используют сессию пользователя и/или CSRF и не являются заменой публичному v1 API.

Chat API
https://lastleak.org/lsmonitoring/api/chat.php

list, user_search, messages, send, delete, favorite, pin, favorites_list, favorites_chat, звонки, друзья, группы, жалобы и модерация.

Tickets API
https://lastleak.org/lsmonitoring/api/tickets.php

list, view, create, reply, close. Используется авторизацией сайта.

Actions API
https://lastleak.org/lsmonitoring/api/actions.php

vote, favorite, boost, claim, профиль, создание и отзыв API-токенов.

Уведомления
https://lastleak.org/lsmonitoring/api/notifications-poll.php

Получение уведомлений пользователя и счётчика непрочитанных.

Умные категории
https://lastleak.org/lsmonitoring/api/smart-categories.php

Подбор категорий по описанию при заполнении карточки.

Подсказки поиска
https://lastleak.org/lsmonitoring/api/search-suggestions.php

Короткие подсказки серверов для живого поиска.

FAQ
https://lastleak.org/lsmonitoring/api/faq.php

Ответ на вопрос по конкретному серверу.

Live ping
https://lastleak.org/lsmonitoring/api/ping.php

Ручная проверка сервера по его внутреннему ID.

Эти endpoint'ы могут требовать cookie-сессию, CSRF и права пользователя. Для внешнего интегратора используйте публичный /api/v1/ и bot API.
11

Ошибки

Короткая расшифровка, чтобы не искать ответ по логам.

400Неверное действие или данные запроса.
401Нет токена или токен не найден.
403Токен есть, но права недостаточны.
404Endpoint или сервер не найден.
429Превышен лимит запросов.
500 при создании сервера

Сохраните request_id. Подробная причина записывается в api/api.log. Не публикуйте токены в логе или сообщении об ошибке.

12

Инструкция для AI-агента

Можно передать этот блок агенту целиком.

Agent Contract
Base URL: https://lastleak.org/lsmonitoring/api/v1Authentication: X-API-Key: lsm_...
Alternative: Authorization: Bearer lsm_...

Public v1 endpoints:
GET  /health
GET  /categories
GET  /plugins
GET  /me
GET  /owned
GET  /search
GET  /events
GET  /ping/{slug}
GET  /server/{slug}
GET  /server/{slug}/online
GET  /server/{slug}/players
GET  /server/{slug}/status
GET  /server/{slug}/rank
GET  /server/{slug}/votes
GET  /server/{slug}/addresses
GET  /server/{slug}/plugins
GET  /server/{slug}/achievements
GET  /server/{slug}/screenshots
GET  /server/{slug}/owner
GET  /server/{slug}/uptime
GET  /server/{slug}/history?hours=24
GET  /server/{slug}/motd
GET  /server/{slug}/faq?question=...
GET  /server/{slug}/events
GET  /server/{slug}/ping
POST /server/{slug}/vote
POST /server/{slug}/favorite
POST /admin/servers

Create server required fields:
name, ip, port, type
Allowed type: java | bedrock

Optional fields:
version, short_description, description, site_url, discord_url,
youtube_channel_url, youtube_video_url, addresses, categories,
plugins, country, tags, banner_url, screenshots,
moderation_status, owner_user_id

Rules:
1. Never invent an IP or a server address.
2. Do not create a second server when the API returns duplicate=true/created=false.
3. Save id, slug and url from the response.
4. For files use multipart/form-data with banner and screens[].
5. If the name is ambiguous, ask the user for the exact address.
6. On error, keep request_id and do not expose the API token.
7. Use /api/v1/ for external integrations; internal AJAX endpoints are session/CSRF protected.
13

Полный пример создания

Скопируйте и замените значения своими.

Все основные поля
curl -X POST "https://lastleak.org/lsmonitoring/api/v1/admin/servers" \
  -H "X-API-Key: lsm_АДМИН_ТОКЕН" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Gamster",
    "version": "1.21.8",
    "ip": "mc.gamster.org",
    "port": 25565,
    "type": "java",
    "short_description": "Выживание, SkyBlock и PvP",
    "description": "Полное описание сервера.",
    "site_url": "https://example.org",
    "discord_url": "https://discord.gg/example",
    "youtube_channel_url": "https://youtube.com/@example",
    "youtube_video_url": "https://youtube.com/watch?v=example",
    "addresses": [
      "mc.gamster.org:25565",
      "bedrock.example.org:19132"
    ],
    "categories": ["survival", "skyblock"],
    "plugins": ["Economy"],
    "country": "RU",
    "tags": "survival,skyblock,pvp",
    "banner_url": "https://example.org/banner.jpg",
    "screenshots": ["https://example.org/one.jpg"]
  }'
Если интеграция не проходит, приложите URL, HTTP-код и request_id ответа. Токен целиком не отправляйте.