📡 Meshtastic API

Документация по API для отправки и получения сообщений

🔐 Аутентификация: Все 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:

Пошаговая инструкция:
  1. Перейдите в настройки уведомлений в Uptime Kuma
  2. Выберите тип "Webhook" или "Custom"
  3. URL: https://mesh.maxus51.ru/api/v1/uptime-kuma
  4. Метод: POST
  5. Включите "Дополнительные Заголовки" (переключатель должен быть включен)
  6. В поле "Дополнительные Заголовки" введите JSON с API ключом:
    {
      "X-API-Key": "ваш_api_ключ_здесь"
    }
    Важно: Замените ваш_api_ключ_здесь на ваш реальный API ключ, который можно получить на странице Настройки.
  7. Тело запроса (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 в запросе