API LastLeak / LsMonitoring
Здесь описан весь доступный интерфейс API проекта: создание карточек серверов, каталог, статус, рейтинги, голоса, избранное, API ботов и служебные запросы сайта. Документация рассчитана на человека, обычный скрипт и AI-агента.
https://lastleak.org/lsmonitoring/api/v1/Для защищённых методов передайте API-токен.
Ответы API приходят в JSON.
Для сервера сохраняйте id, slug и url.
Для этого проекта используется путь /lsmonitoring/api/v1/. Не убирайте /lsmonitoring.
Авторизация
API-токен можно передать четырьмя способами. Для серверных интеграций лучше использовать заголовок.
Токен даёт права своего владельца. Не вставляйте его в клиентский JavaScript, Git-репозиторий или публичную документацию.
curl "https://lastleak.org/lsmonitoring/api/v1/me" -H "X-API-Key: lsm_ВАШ_ТОКЕН"curl "https://lastleak.org/lsmonitoring/api/v1/me" -H "Authorization: Bearer lsm_ВАШ_ТОКЕН"Лимиты и правила
Лимит считается отдельно для каждого токена и минуты.
Создание сервера
Полная точка: POST /admin/servers. Нужен admin-токен с правом manage:server.
Если карточка уже существует по серверному адресу, API не создаёт вторую запись, а возвращает существующие id, slug и url.
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"
}Все поля «Добавить сервер»
Это полный набор полей, который использует форма добавления сервера в кабинете.
| Поле | Тип | Обяз. | Что передавать |
|---|---|---|---|
name | string | да | Название сервера, до 80 символов. |
version | string | нет | Версия Minecraft, например 1.21.8. |
ip | string | да | Основной домен или IP. Допустим алиас address. |
port | integer | нет | 1–65535. По умолчанию 25565. |
type | string | нет | java или bedrock. Значение be приводится к bedrock. |
short_description | string | нет | До 220 символов. |
description | string | нет | Полное описание, до 20 000 символов. |
site_url | URL | нет | Сайт проекта. Алиас: site. |
discord_url | URL | нет | Приглашение Discord. Алиас: discord. |
youtube_channel_url | URL | нет | Ссылка на YouTube-канал. |
youtube_video_url | URL | нет | Ссылка на конкретное видео. |
addresses | array|string | нет | Дополнительные игровые адреса. До 10. |
categories | array | нет | ID, slug или точное название категории. До лимита каталога. |
plugins | array | нет | ID или точное название плагина. До лимита каталога. |
country | string | нет | Страна/регион. |
tags | string | нет | Теги, например survival,skyblock,pvp. |
banner_url | URL | нет | Прямая ссылка на JPG/PNG/WebP. Алиас: banner. |
screenshots | array | нет | Массив URL изображений. |
moderation_status | string | нет | approved или pending. По умолчанию approved. |
owner_user_id | integer | нет | ID пользователя LastLeak, которому привязать владельца. |
id, slug, даты, токен владельца и служебные поля создаются самим сайтом. Передавать их не требуется.Баннер и скриншоты
Можно отправлять 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"banner_url; для multipart-файла — поле banner. Для нескольких файлов — screens[].Каталог, категории и поиск
Методы чтения, которые удобно использовать в боте, мониторинге или внешнем каталоге.
/healthПроверка доступности API. Аутентификация не нужна в обычной конфигурации.
/categoriesСписок всех категорий: id, название и slug.
/pluginsСписок всех плагинов: id и название.
/search?q=skyblock&category=1&type=javaУмный поиск по каталогу. Результат ограничен первыми 100 карточками.
/eventsСобытия каталога и победители.
/meВозвращает аккаунт, к которому относится токен.
/ownedСерверы, принадлежащие владельцу токена.
curl "https://lastleak.org/lsmonitoring/api/v1/search?q=skyblock&category=1&type=java" \
-H "X-API-Key: lsm_ВАШ_ТОКЕН"Данные конкретного сервера
Все эти методы используют /server/{slug}.
/server/{slug}Полная базовая карточка: адрес, тип, версия, онлайн, голоса, ссылки и URL карточки.
/server/{slug}/onlineТекущий онлайн, максимум, ping, версия, MOTD и время проверки.
/server/{slug}/playersТо же состояние онлайн/игроков, удобно для мониторинга.
/server/{slug}/statusСводный текущий статус сервера.
/server/{slug}/rankПозиции сервера в рейтингах.
/server/{slug}/votesКоличество голосов и список голосовавших.
/server/{slug}/addressesВсе игровые адреса сервера.
/server/{slug}/pluginsПлагины, привязанные к карточке.
/server/{slug}/achievementsДостижения сервера.
/server/{slug}/screenshotsСписок скриншотов.
/server/{slug}/ownerПодтверждённый владелец.
/server/{slug}/uptimeUptime за 7 и 30 дней.
/server/{slug}/history?hours=24История игроков за 1–168 часов.
/server/{slug}/motdПоследний MOTD и время проверки.
/server/{slug}/faq?question=Какой%20IP?Короткий ответ FAQ по карточке сервера.
/server/{slug}/eventsСобытия каталога.
/server/{slug}/pingLive-пинг сервера.
/ping/{slug}Короткий live-пинг сервера вне группы server.
Действия
Требуют прав токена и, для записи, метода POST.
/server/{slug}/voteОтдать голос от имени аккаунта токена. Scope: write:vote.
/server/{slug}/favoriteДобавить или убрать сервер из избранного. Scope: write:favorite.
/admin/serversСоздание карточки. Scope: manage:server и admin-токен.
/ping/{slug} и методы внутри /server/{slug} могут требовать соответствующий read/ping scope, в зависимости от текущего токена.API пользовательских ботов
Отдельный API для созданных через LastLeak ботов. Авторизация — bot token.
https://lastleak.org/lsmonitoring/api/bots.phphttps://lastleak.org/lsmonitoring/api/bots.php?action=meИнформация о текущем боте по X-BOT-TOKEN или X-API-Key.
https://lastleak.org/lsmonitoring/api/bots.php?action=sendОтправить сообщение пользователю. JSON: {"user_id":123,"message":"Привет"}.
https://lastleak.org/lsmonitoring/api/bots.php?action=group_addДобавить бота в группу. JSON: {"group_id":10}.
Bot API не должен использовать обычный пользовательский API-токен. Для него нужен именно bot token конкретного бота.
Внутренние API сайта
Это рабочие AJAX endpoint'ы самого интерфейса. Они используют сессию пользователя и/или CSRF и не являются заменой публичному v1 API.
https://lastleak.org/lsmonitoring/api/chat.phplist, user_search, messages, send, delete, favorite, pin, favorites_list, favorites_chat, звонки, друзья, группы, жалобы и модерация.
https://lastleak.org/lsmonitoring/api/tickets.phplist, view, create, reply, close. Используется авторизацией сайта.
https://lastleak.org/lsmonitoring/api/actions.phpvote, 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Короткие подсказки серверов для живого поиска.
https://lastleak.org/lsmonitoring/api/faq.phpОтвет на вопрос по конкретному серверу.
https://lastleak.org/lsmonitoring/api/ping.phpРучная проверка сервера по его внутреннему ID.
/api/v1/ и bot API.Ошибки
Короткая расшифровка, чтобы не искать ответ по логам.
Сохраните request_id. Подробная причина записывается в api/api.log. Не публикуйте токены в логе или сообщении об ошибке.
Инструкция для AI-агента
Можно передать этот блок агенту целиком.
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.
Полный пример создания
Скопируйте и замените значения своими.
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"]
}'request_id ответа. Токен целиком не отправляйте.