🔐 Аутентификация: Все API эндпоинты требуют заголовок
X-API-Key с вашим API ключом.
API ключи можно создать на странице Настройки.
1. Отправка сообщения
POST
/api/v1/send
Отправляет текстовое сообщение через Meshtastic сеть. Сообщение может быть отправлено всем узлам или конкретному узлу.
Параметры запроса:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
message |
string | Да | Текст сообщения (1-200 символов) |
node_id |
string | Нет | ID узла получателя (например, !acaad23c). Если не указан, сообщение отправляется всем узлам. |
reply_id |
integer | Нет | ID сообщения Meshtastic (meshtastic_message_id), на которое это ответ |
Пример запроса:
curl -X POST "https://mesh.maxus51.ru/api/v1/send" -H "X-API-Key: ваш_api_ключ" -H "Content-Type: application/json" -d '{"message": "Привет из API!", "node_id": "!acaad23c"}'
Пример ответа (успех):
{
"success": true,
"message_id": 123
}
Пример ответа (ошибка):
{
"success": false,
"error": "Meshtastic сервис недоступен"
}
2. Получение списка сообщений
GET
/api/v1/messages
Получает список сообщений с пагинацией. Если API ключ привязан к узлу, возвращаются только сообщения этого узла.
Параметры запроса (query string):
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
page |
integer | Нет | Номер страницы (по умолчанию: 1) |
per_page |
integer | Нет | Количество сообщений на странице (по умолчанию: 50, максимум: 100) |
Пример запроса:
curl -X GET "https://mesh.maxus51.ru/api/v1/messages?page=1&per_page=50" -H "X-API-Key: ваш_api_ключ"
Пример ответа:
{
"messages": [
{
"id": 123,
"node_id": "!acaad23c",
"node_name": "sputnik_spr_s",
"message_text": "Привет из API!",
"timestamp": "2026-01-11T15:30:00Z",
"is_sent": true,
"api_key_id": 1,
"source": "API",
"meshtastic_message_id": 1152684322,
"reply_id": null,
"rx_snr": "6.0",
"rx_rssi": "-57",
"hop_limit": 3
}
],
"total": 150,
"page": 1,
"per_page": 50
}
3. Получение списка узлов
GET
/api/v1/nodes
Получает список всех узлов в Meshtastic сети с их информацией (имя, координаты, статус и т.д.).
Пример запроса:
curl -X GET "https://mesh.maxus51.ru/api/v1/nodes" -H "X-API-Key: ваш_api_ключ"
Пример ответа:
{
"nodes": [
{
"node_id": "!acaad23c",
"node_name": "sputnik_spr_s",
"short_name": "#spr",
"hardware_model": "HELTEC_V3",
"latitude": "53.1322°",
"longitude": "45.0387°",
"altitude": "170m",
"battery_level": "Powered",
"snr": "N/A",
"last_seen": "2026-01-11T15:57:46Z"
}
]
}
4. Webhook для Uptime Kuma
POST
/api/v1/uptime-kuma
Специальный эндпоинт для интеграции с Uptime Kuma. Принимает webhook-запросы от Uptime Kuma и отправляет уведомления через Meshtastic.
Поддерживаемые поля:
| Поле | Тип | Описание |
|---|---|---|
msg |
string | Сообщение уведомления (переменная в Liquid) |
name |
string | Имя сервиса/монитора (переменная ) |
status |
string | Статус (up, down и т.д., переменная ) |
hostnameOrURL |
string | Hostname или URL (переменная ) |
title |
string | Заголовок сообщения (если используется формат Title/Body) |
body |
string | Тело сообщения (если используется формат Title/Body) |
message |
string | Альтернативное поле для сообщения |
heartbeatJSON |
object | Объект heartbeat (доступен только для UP/DOWN уведомлений) |
monitorJSON |
object | Объект монитора (доступен только для UP/DOWN и cert expiry уведомлений) |
Пример запроса (формат 1 - Title/Body):
curl -X POST "https://mesh.maxus51.ru/api/v1/uptime-kuma" -H "X-API-Key: ваш_api_ключ" -H "Content-Type: application/json" -d '{"Title": "Uptime Kuma Alert - Монитор", "Body": "Сервис недоступен!"}'
# Windows PowerShell (альтернатива с Invoke-WebRequest):
$headers = @{"X-API-Key" = "ваш_api_ключ"; "Content-Type" = "application/json"}
$body = '{"Title": "Uptime Kuma Alert - Монитор", "Body": "Сервис недоступен!"}'
Invoke-WebRequest -Uri "https://mesh.maxus51.ru/api/v1/uptime-kuma" -Method POST -Headers $headers -Body $body
Пример запроса (формат 2 - стандартный Uptime Kuma):
# Linux/Mac/Windows:
curl -X POST "https://mesh.maxus51.ru/api/v1/uptime-kuma" -H "X-API-Key: ваш_api_ключ" -H "Content-Type: application/json" -d '{"msg": "Сервис недоступен!", "name": "Мой сервис", "status": "down", "hostnameOrURL": "https://example.com"}'
Настройка в Uptime Kuma:
Пошаговая инструкция:
- Перейдите в настройки уведомлений в Uptime Kuma
- Выберите тип "Webhook" или "Custom"
- URL:
https://mesh.maxus51.ru/api/v1/uptime-kuma - Метод:
POST - Включите "Дополнительные Заголовки" (переключатель должен быть включен)
- В поле "Дополнительные Заголовки" введите JSON с API ключом:
{ "X-API-Key": "ваш_api_ключ_здесь" }Важно: Заменитеваш_api_ключ_здесьна ваш реальный API ключ, который можно получить на странице Настройки. - Тело запроса (JSON):
{ "Title": "Uptime Kuma Alert", "Body": "" }
📝 Пример полной настройки:
- URL:
https://mesh.maxus51.ru/api/v1/uptime-kuma - Метод:
POST - Дополнительные Заголовки (JSON):
{ "X-API-Key": "abc123def456ghi789jkl012mno345pqr678stu901vwx234yz" } - Тело запроса (JSON):
{ "Title": "Uptime Kuma Alert", "Body": "" }
Пример ответа:
{
"success": true,
"message_id": 124
}
Коды ошибок
| Код | Описание |
|---|---|
401 |
Неверный или отсутствующий API ключ |
403 |
Доступ запрещен (например, попытка отправить на другой узел при привязанном ключе) |
503 |
Meshtastic сервис недоступен |
Ограничения
- Максимальная длина сообщения: 200 символов
- Сообщения длиннее 200 символов будут отклонены с ошибкой валидации
- Если API ключ привязан к узлу, все сообщения отправляются только на этот узел
- Если API ключ не привязан к узлу, можно указать
node_idв запросе