Публічний API моніторингу повітряних загроз України. Дані оновлюються у реальному часі.
https://mapa.ua/api/v1 — Усі відповіді у форматі JSON. Автентифікація не потрібна.
GET /api/v1/current
Повертає активну атаку та всі об'єкти у повітрі прямо зараз.
▶ Спробувати{
"attack": { "id": 42, "started_at": 1710288000, "status": "active", ... },
"objects": [
{
"id": 1, "kind": "drone_piston", "amount": 1,
"title": "Shahed на Київ", "status": "active",
"lat": 49.12, "lon": 31.45, "heading": 340,
"from_zone": "chauda", "to_city": "kyiv",
"speed_kmh": 165, "trail": [[34.1,45.0,1710288000], ...],
"subkind": "drone_piston",
"predicted_lat": 49.15, "predicted_lon": 31.44
}, ...
],
"raw_count": 15,
"ts": 1710291600
}
GET /api/v1/attacks
Список атак. Без параметрів — останні 60 атак (за started_at, новіші перші).
| Параметр | Тип | Опис |
|---|---|---|
date | string | Дата YYYY-MM-DD (атаки, що перетинають добу) або nowoptional |
limit | integer | Кількість, 1–500 (дефолт 60). Ігнорується, якщо задано dateoptional |
nocache | string | 1 — обійти кешoptional |
{
"attacks": [
{
"id": 42,
"started_at": 1710288000,
"ended_at": 1710331200,
"status": "ended",
"title": "2025-03-12-20_2025-03-13-08",
"total_objects": 45,
"total_drones": 126,
"total_missiles": 1,
"total_bombs": 0,
"official_drones": 126,
"official_missiles": 1,
"official_bombs": 0,
"official_launched_total": 127,
"official_shot_total": 121
}, ...
]
}
GET /api/v1/objects
Усі об'єкти (дрони, ракети, бомби) конкретної атаки з trail-маршрутами.
| Параметр | Тип | Опис |
|---|---|---|
attack_id | integer | ID атаки (обов'язковий) |
{
"objects": [ ... ], // масив об'єктів (формат як в /current)
"raw_count": 45 // кількість унікальних груп (до розширення юнітів)
}
GET /api/v1/attack_replay
Повна інформація для відтворення атаки на таймлайні.
| Параметр | Тип | Опис |
|---|---|---|
attack_id | integer | ID атаки |
{
"attack": { ... },
"objects": [ ... ], // з trail-масивами для анімації
"raw_count": 45
}
GET /api/v1/trails
Деталізований маршрут одного об'єкта.
| Параметр | Тип | Опис |
|---|---|---|
object_id | integer | ID об'єкта |
{
"trail": [[30.52, 45.10, 1710288000, 340], ...]
// [lon, lat, unix_timestamp, heading_degrees]
}
GET /api/v1/calendar
Кількість повідомлень по дням (для вибору дати).
▶ Спробувати{
"days": [
{ "d": "2025-03-13", "c": 847 },
{ "d": "2025-03-12", "c": 623 },
...
]
}
GET /api/v1/flights
Поточні цивільні авіарейси в зоні (AirLabs Flight Data API).
| Параметр | Тип | Опис |
|---|---|---|
scope | string | global — світові рейси optional |
radius | integer | Радіус довантаження ADS-B навколо зони, кмoptional |
GET /api/v1/geo/cities
Коди міст (поле to_city об'єктів) → відображувані назви українською та англійською.
{
"cities": {
"kyiv": { "ua": "Київ", "en": "Kyiv" },
"odesa": { "ua": "Одеса", "en": "Odesa" },
...
},
"ts": 1710291600
}
GET /api/v1/nearby
Активні загрози в радіусі від заданої точки (за поточним зрізом /current). Per-user, не кешується.
| Параметр | Тип | Опис |
|---|---|---|
lat | float | Широта (обов'язково) |
lon | float | Довгота (обов'язково) |
radius_km | integer | Радіус, 10–1000 км (дефолт 150)optional |
{
"threats": [
{ "id": "12_u0", "kind": "drone_piston", "subkind": "drone_piston",
"status": "active", "amount": 1, "heading": 320,
"lat": 50.10, "lon": 30.90, "distance_km": 41.3 }, ...
],
"count": 3,
"radius": 150,
"ts": 1710291600
}
Push-сповіщення про загрози у заданому радіусі. Відправку виконує notify.js.
GET /api/v1/push/vapid
Публічний VAPID-ключ для підписки браузера.
{ "publicKey": "BPx…base64url" }
POST /api/v1/push/subscribe
Зберегти підписку браузера разом із координатами та радіусом оповіщення.
// тіло запиту (JSON)
{
"subscription": { "endpoint": "…", "keys": { "p256dh": "…", "auth": "…" } },
"lat": 50.45, "lon": 30.52,
"radius_km": 150 // 10–1000, дефолт 150
}
// → { "ok": true, "subscriptions": 1234 }
POST /api/v1/push/update
Оновити координати/радіус наявної підписки.
{ "endpoint": "…", "lat": 50.45, "lon": 30.52, "radius_km": 200 } // → { "ok": true }
POST /api/v1/push/unsubscribe
{ "endpoint": "…" } // → { "ok": true }
GET /api/v1/recruit/regions
Регіони для блоку «стань джерелом інформації» (з лічильником маркерів).
▶ Спробувати{
"regions": [ { "name": "Одещина", "lat": 46.40, "lon": 30.70, "marker_count": 12 }, ... ],
"count": 8,
"ts": 1710291600
}
POST /api/v1/recruit/click
Зафіксувати клік по регіону / CTA (аналітика).
{ "region": "Одещина", "cta_clicked": true } // → { "ok": true }
| Kind | Опис | Швидкість |
|---|---|---|
drone_piston | Shahed-136, Герань, Гербера, Пародія, Італмас | ~165 км/г |
drone_jet | Shahed-238, реактивний БПЛА | ~450 км/г |
missile_cruise | Калібр, Х-101, Х-55, Х-59, Х-69 | ~800 км/г |
missile_ballistic | Іскандер-М, Кинджал, KN-23 | ~7500 км/г |
bomb | КАБ, УМПК, ФАБ | ~750 км/г |
| Status | Опис |
|---|---|
active | Об'єкт у повітрі |
eliminated | Збито ППО / мобільними групами / F-16 |
hit_target | Влучив у ціль |
lost | Зник з радарів (РЕБ / дрон-приманка) |
| Zone | Опис |
|---|---|
chauda | Мис Чауда, Крим |
crimea | Крим (загально) |
sevastopol | Севастополь, Крим |
gvardiiske | Гвардійське, Крим |
black_sea_w | Чорне море (захід) |
black_sea_e | Чорне море (схід) |
novorossiysk | Новоросійськ, РФ |
primorsk | Приморсько-Ахтарськ, РФ |
eysk | Єйськ, РФ |
rostov | Ростов-на-Дону, РФ |
millerovo | Міллерово, РФ |
morozovsk | Морозовськ, РФ (КАБ / авіація) |
kursk | Курськ, РФ |
belgorod | Бєлгород, РФ |
bryansk | Брянськ, РФ |
orel | Орел, РФ |
shaykivka | Шайківка, РФ (стратегічна авіація) |
baltimor | Балтимор / Воронеж, РФ |
buturlinovka | Бутурлинівка, РФ |
engels | Енгельс, РФ (стратегічна авіація) |
caspian | Каспійське море (пуски КР зі стратегічної авіації) |
mozyr | Вхід з півночі через кордон РБ (р-н Мозиря) |
tot_donbas | ТОТ Донбасу |
tot_zap | ТОТ Запоріжжя |
unknown | Напрямок не визначено |
Масив точок: [[lon, lat, unix_ts], ...]
Відсортований хронологічно. Перша точка — місце запуску, остання — поточна/фінальна позиція.