Air raid alert & statistics API

A public JSON API with current air raid alerts and statistics for Ukrainian oblasts and districts. No registration or key required. Same data as the statistics page and the map.

General rules

Endpoints

EndpointReturns
GET /api/v1/regionsRegion directory: 24 oblasts, the city of Kyiv and every district. For a district, oblast_slug points to its oblast.
GET /api/v1/alertsEvery alert active right now — oblasts and districts together, with start times.
GET /api/v1/alerts/{slug}State of a single region. For an oblast it also lists districts under alert and an active_anywhere flag.
GET /api/v1/stats?period=24hPeriod summary: threats by type and oblasts ranked by time spent under alert.
GET /api/v1/stats/{slug}?period=7dStatistics for one region: alerts in the period, recent episodes, threats by type and a district breakdown (for an oblast).
GET /api/v1/districts/{slug}?period=7dAlerts per district of the given oblast for the period.

Examples

GET /api/v1/alerts

curl https://tryvoha.online/api/v1/alerts

{
  "updated_at": "2026-08-31T08:47:35Z",
  "active": 43,
  "alerts": [
    {
      "slug": "brovarskii-raion",
      "type": "district",
      "name_uk": "Броварський район",
      "name_en": "Brovarskyi district",
      "oblast_slug": "kyivska",
      "started_at": "2026-08-31T08:21:06Z"
    }
  ]
}

GET /api/v1/alerts/kyivska

{
  "slug": "kyivska",
  "type": "state",
  "name_uk": "Київська область",
  "active": false,
  "started_at": null,
  "districts_active": [
    { "slug": "brovarskii-raion", "name_uk": "Броварський район", "started_at": "2026-08-31T08:21:06Z" }
  ],
  "active_anywhere": true
}

GET /api/v1/stats/kyivska?period=24h

{
  "slug": "kyivska",
  "type": "state",
  "period": "24h",
  "from": "2026-08-30T08:47:36Z",
  "to": "2026-08-31T08:47:36Z",
  "alerts": {
    "count": 5,
    "minutes_total": 746,
    "minutes_avg": 149,
    "minutes_max": 278,
    "recent": [
      { "started_at": "2026-08-31T08:20:51Z", "ended_at": null, "minutes": 27 },
      { "started_at": "2026-08-31T04:41:58Z", "ended_at": "2026-08-31T07:20:20Z", "minutes": 158 }
    ]
  },
  "threats": { "d": 35 },
  "districts": [
    {
      "slug": "brovarskii-raion",
      "name_uk": "Броварський район",
      "alerts": 7,
      "minutes_total": 1096,
      "minutes_avg": 157,
      "minutes_max": 457
    }
  ]
}

GET /api/v1/districts/kyivska?period=7d

{
  "oblast_slug": "kyivska",
  "period": "7d",
  "districts": [
    {
      "slug": "brovarskii-raion",
      "name_uk": "Броварський район",
      "name_en": "Brovarskyi district",
      "alerts": 42,
      "minutes_total": 4466,
      "minutes_avg": 106,
      "minutes_max": 506
    }
  ]
}

How alerts are counted

Terms of use

The API is free for non-commercial and commercial use provided you credit Tryvoha.online. This is an informational service based on open sources — it is not an official alert channel and must not be relied upon for life-safety decisions. No availability guarantees. Questions and requests for higher limits — via the email or Telegram in the footer.

Alert & threat statistics →
Tryvoha.online is an informational service based on open sources. Data may be delayed or contain inaccuracies. For safety-critical decisions rely on official alert channels and follow instructions from the authorities.