Към съдържанието

API v1 · OpenAPI 3.1

API и отворени данни за нивото на Дунав

Безплатен JSON API за нивото на Дунав: станции с прагове LDC/HDC, дневни редове, GeoJSON и договор OpenAPI 3.1, с лимити на заявките и примерен код.

Базов URL
https://danubealert.arcm.ro/api/v1
Удостоверяване
Authorization: Bearer <key>

Безплатен API ключ →Договор OpenAPI 3.1

Преглед

Публичното API v1 дава хидрологичните данни на басейна на Дунав във формат JSON: станциите с прагове LDC/HDC, измерванията и прогнозите, официалните прагове, критичните места за корабоплаване, хидрологичните бюлетини, GeoJSON и състоянието на източниците. Пълният договор: /api/v1/openapi.json (OpenAPI 3.1).

Планове и ограничения

Анонимно (без заглавка): 60 заявки в минута, CORS * при GET. С ключ на интегратор (Authorization: Bearer <ключ>): 600 заявки в минута. Ключовете се създават безплатно от профила ви. Неправилен, непознат или отменен ключ получава 401 (WWW-Authenticate: Bearer error="invalid_token"), а не анонимен достъп; отмененият ключ спира да работи веднага.

  • Анонимно

    60заявки / минута

    Без заглавие, CORS * за GET — достатъчно, за да пробваш всеки маршрут.

  • Безплатен API ключ

    600заявки / минута

    Authorization: Bearer <ключ>, създаден в профила ти, показва се веднъж.

  • Тежки маршрути

    10заявки / минута

    Серии и експорти ( observations, export ), на ключ или IP.

Пример

Последното дневно ниво на станция, с curl и с TypeScript.

curl
curl -sS "https://danubealert.arcm.ro/api/v1/stations/budapest/observations"
TypeScript
// Днешното ниво в Будапеща
const r = await fetch('https://danubealert.arcm.ro/api/v1/stations/budapest/observations?interval=daily&from=2026-10-01', {
  headers: { Authorization: `Bearer ${process.env.DANUBEALERT_KEY}` },
})
const { data } = await r.json()
console.log(data.at(-1)) // { observed_at: "2026-10-21T00:00:00Z", level_cm: 468 }

Крайни точки

Всички маршрути на публичния API v1, само четене ( GET ), с параметрите им и готова заявка.

Примери по маршрут

Всеки маршрут по-долу има изпълнима заявка curl, JavaScript и Python, своя лимит на заявки и блока `_attribution`, който трябва да покажеш.

Блок `_attribution`
{
  "source": "National hydrological services of the Danube basin (see /v1/meta/sources)",
  "url": "https://danubealert.com/en/about",
  "data_updated_at": "2026-10-21T00:00:00Z"
}
_attribution · /export/daily
{
  "source": "National hydrological services of the Danube basin (see /v1/meta/sources)",
  "url": "https://danubealert.com/en/about",
  "license": {
    "id": "CC-BY-4.0",
    "name": "Creative Commons Attribution 4.0 International",
    "url": "https://creativecommons.org/licenses/by/4.0/"
  },
  "data_updated_at": "2026-10-21T00:00:00Z"
}

Станции

  • GET/api/v1/alerts/confirmИзпратената по имейл връзка за потвърждение на известие или дневен отчет: не включва нищо, отваря страницата за потвърждение

    Параметри

    • t*query
    • formatquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/alerts/confirm?t=t"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/alerts/confirm?t=t')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/alerts/confirm?t=t", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • POST/api/v1/alerts/confirmВключва известието или дневния отчет от страницата за потвърждение ( единствената стъпка, която го активира )

    Параметри

    • tquery
  • GET/api/v1/basin-precipitationСума на валежите за 24 / 72 ч по подбасейн, свързана със станцията надолу по течението

    Параметри

    • stationquery
    • riverquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/basin-precipitation"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/basin-precipitation')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/basin-precipitation", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/countries/{code}/stationsСтанциите на една държава

    Параметри

    • code*path
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/countries/HU/stations"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/countries/HU/stations')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/countries/HU/stations", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/report/todayДенят в един обект: състояние на басейна, какво се променя днес, станции над / под праговете, прогноза за 24–72 ч
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/report/today"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/report/today')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/report/today", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/stationsСписък на станциите

    Параметри

    • countryquery
    • riverquery
    • qquery
    • limitquery
    • next_cursorquery
    • sortquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/stations"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/stations')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/stations", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/stations/{slug}Станция, праговете ѝ LDC/HDC и отклонението на деня от климатологията

    Параметри

    • slug*path
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/stations/budapest"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/stations/budapest')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/stations/budapest", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/stations/{slug}/eventsИсторически наводнения и засушавания на една станция

    Параметри

    • slug*path
    • tipquery
    • limitquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/stations/budapest/events"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/stations/budapest/events')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/stations/budapest/events", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/stations/{slug}/neighborsСъседи нагоре / надолу по течението и вливания

    Параметри

    • slug*path
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/stations/budapest/neighbors"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/stations/budapest/neighbors')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/stations/budapest/neighbors", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v2/stationsСписък на станциите ( v2, курсор + полета + формат )

    Параметри

    • countryquery
    • riverquery
    • qquery
    • limitquery
    • next_cursorquery
    • fieldsquery
    • formatquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v2/stations"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v2/stations')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v2/stations", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/wizard

    Параметри

    • qquery
    • limitquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/wizard"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/wizard')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/wizard", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

Измервания и прогнози

  • GET/api/v1/forecast/accuracyТочност на официалните прогнози спрямо измерените стойности, по източник и хоризонт ( +24 / +48 / +72 ч )10/min

    Параметри

    • stationquery
    • daysquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/forecast/accuracy"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/forecast/accuracy')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/forecast/accuracy", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Тежък маршрут: 10 заявки/минута, дори с ключ.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/measurementsТемпература на водата, отток, температура на въздуха

    Параметри

    • station*query
    • measurequery
    • fromquery
    • toquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/measurements?station=budapest"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/measurements?station=budapest')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/measurements?station=budapest", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/observationsСравнение на до 6 станции в един отговор10/min

    Параметри

    • stations*query
    • fromquery
    • toquery
    • intervalquery
    • riverquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/observations?stations=budapest%2Cmohacs"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/observations?stations=budapest%2Cmohacs')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/observations?stations=budapest%2Cmohacs", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Тежък маршрут: 10 заявки/минута, дори с ключ.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/stations/{slug}/climatologyКлиматология по ден от годината от цялата редица: средно, медиана и перцентили10/min

    Параметри

    • slug*path
    • dayquery
    • limitquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/stations/budapest/climatology"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/stations/budapest/climatology')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/stations/budapest/climatology", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Тежък маршрут: 10 заявки/минута, дори с ключ.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/stations/{slug}/dischargeРедица от оттоци ( м³/с )

    Параметри

    • slug*path
    • sourcequery
    • fromquery
    • toquery
    • intervalquery
    • formatquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/stations/budapest/discharge"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/stations/budapest/discharge')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/stations/budapest/discharge", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/stations/{slug}/forecastПрогноза за станцията ( където има )

    Параметри

    • slug*path
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/stations/budapest/forecast"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/stations/budapest/forecast')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/stations/budapest/forecast", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/stations/{slug}/forecast-accuracyТочност на прогнозата в една станция, по източник и хоризонт: колко добра е прогнозата тук10/min

    Параметри

    • slug*path
    • daysquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/stations/budapest/forecast-accuracy"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/stations/budapest/forecast-accuracy')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/stations/budapest/forecast-accuracy", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Тежък маршрут: 10 заявки/минута, дори с ключ.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/stations/{slug}/iceЛедени явления от националните бюлетини, уеднаквени по станция и ден

    Параметри

    • slug*path
    • limitquery
    • fromquery
    • toquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/stations/budapest/ice"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/stations/budapest/ice')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/stations/budapest/ice", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/stations/{slug}/observationsРедица от нива ( см )10/min

    Параметри

    • slug*path
    • sourcequery
    • include_legacyquery
    • fromquery
    • toquery
    • intervalquery
    • formatquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/stations/budapest/observations"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/stations/budapest/observations')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/stations/budapest/observations", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Тежък маршрут: 10 заявки/минута, дори с ключ.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/stations/{slug}/percentileПерцентил на днешната стойност спрямо същия ден през последните 30 години10/min

    Параметри

    • slug*path
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/stations/budapest/percentile"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/stations/budapest/percentile')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/stations/budapest/percentile", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Тежък маршрут: 10 заявки/минута, дори с ключ.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/stations/{slug}/recordsИсторически рекорди10/min

    Параметри

    • slug*path
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/stations/budapest/records"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/stations/budapest/records')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/stations/budapest/records", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Тежък маршрут: 10 заявки/минута, дори с ключ.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/stations/{slug}/same-dayСъщият ден в предишни години10/min

    Параметри

    • slug*path
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/stations/budapest/same-day"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/stations/budapest/same-day')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/stations/budapest/same-day", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Тежък маршрут: 10 заявки/минута, дори с ключ.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/stations/{slug}/winterЗимни явления и дебелина на леда

    Параметри

    • slug*path
    • limitquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/stations/budapest/winter"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/stations/budapest/winter')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/stations/budapest/winter", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/summary/low-waterНиски води: последователни дни под LDC, по участък, с история и сравнение

    Параметри

    • yearquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/summary/low-water"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/summary/low-water')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/summary/low-water", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/summary/todayДнешната обстановка: нива, прагове, прогнози, аномалиите на деня и какво се променя днес в басейна
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/summary/today"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/summary/today')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/summary/today", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

Реки и държави

  • GET/api/v1/countriesДържавите в басейна
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/countries"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/countries')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/countries", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/riversРеките в басейна и броят на станциите им
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/rivers"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/rivers')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/rivers", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/rivers/{rau}Граф на реката: устие, притоци, държави

    Параметри

    • rau*path
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/rivers/sava"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/rivers/sava')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/rivers/sava", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v2/countriesДържавите в басейна, странициране с курсор ( v2 )

    Параметри

    • limitquery
    • next_cursorquery
    • fieldsquery
    • formatquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v2/countries"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v2/countries')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v2/countries", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v2/riversРеките в басейна, странициране с курсор ( v2 )

    Параметри

    • limitquery
    • next_cursorquery
    • fieldsquery
    • formatquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v2/rivers"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v2/rivers')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v2/rivers", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

Експорти

  • GET/api/v1/export/country/{cod}Експорт CSV / JSON по държава10/min

    Параметри

    • cod*path
    • formatquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/export/country/HU"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/export/country/HU')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/export/country/HU", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Тежък маршрут: 10 заявки/минута, дори с ключ.

    Експортът също съдържа `_attribution`, с лиценза в `_attribution.license` (CC BY 4.0); покажи `_attribution.source`, `_attribution.url` и лиценза до файла.

  • GET/api/v1/export/dailyДневен експорт CSV / JSON по държава10/min

    Параметри

    • country*query
    • formatquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/export/daily?country=HU"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/export/daily?country=HU')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/export/daily?country=HU", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Тежък маршрут: 10 заявки/минута, дори с ключ.

    Експортът също съдържа `_attribution`, с лиценза в `_attribution.license` (CC BY 4.0); покажи `_attribution.source`, `_attribution.url` и лиценза до файла.

  • GET/api/v1/export/rangeЕкспорт на дълги периоди за изследователи ( CSV / Parquet, със странициране чрез курсор и лиценз за всеки ред )10/min

    Параметри

    • from*query
    • to*query
    • countryquery
    • formatquery
    • limitquery
    • cursorquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/export/range?from=2026-01-01&to=2026-10-23"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/export/range?from=2026-01-01&to=2026-10-23')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/export/range?from=2026-01-01&to=2026-10-23", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Тежък маршрут: 10 заявки/минута, дори с ключ.

    Експортът също съдържа `_attribution`, с лиценза в `_attribution.license` (CC BY 4.0); покажи `_attribution.source`, `_attribution.url` и лиценза до файла.

  • GET/api/v1/export/range/licensesЛицензи на източниците и начин на цитиране при експорта на период
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/export/range/licenses"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/export/range/licenses')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/export/range/licenses", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Експортът също съдържа `_attribution`, с лиценза в `_attribution.license` (CC BY 4.0); покажи `_attribution.source`, `_attribution.url` и лиценза до файла.

  • GET/api/v1/export/river/{rau}Експорт CSV / JSON по река10/min

    Параметри

    • rau*path
    • formatquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/export/river/sava"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/export/river/sava')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/export/river/sava", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Тежък маршрут: 10 заявки/минута, дори с ключ.

    Експортът също съдържа `_attribution`, с лиценза в `_attribution.license` (CC BY 4.0); покажи `_attribution.source`, `_attribution.url` и лиценза до файла.

Прагове, корабоплаване, бюлетини

  • GET/api/v1/bulletinsХидрологични бюлетини по държава

    Параметри

    • countryquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/bulletins"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/bulletins')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/bulletins", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/navigationКритични точки и ограничения за корабоплаването

    Параметри

    • riverquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/navigation"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/navigation')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/navigation", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/thresholdsОфициални прагове ( LDC/HDC, RNW/HSW, защита от наводнения )

    Параметри

    • stationquery
    • pagequery
    • limitquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/thresholds"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/thresholds')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/thresholds", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v2/bulletinsХидрологични бюлетини, странициране с курсор ( v2 )

    Параметри

    • countryquery
    • limitquery
    • next_cursorquery
    • fieldsquery
    • formatquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v2/bulletins"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v2/bulletins')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v2/bulletins", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v2/navigationКорабоплаване, един списък със странициране ( v2 )

    Параметри

    • riverquery
    • limitquery
    • next_cursorquery
    • fieldsquery
    • formatquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v2/navigation"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v2/navigation')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v2/navigation", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v2/thresholdsОфициални прагове, странициране с курсор ( v2 )

    Параметри

    • stationquery
    • limitquery
    • next_cursorquery
    • fieldsquery
    • formatquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v2/thresholds"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v2/thresholds')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v2/thresholds", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

Епизоди на сигнали

  • GET/api/v1/episodesПублични епизоди LDC/HDC

    Параметри

    • countryquery
    • typequery
    • limitquery
    • next_cursorquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/episodes"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/episodes')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/episodes", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/episodes/{id}Един епизод на известие

    Параметри

    • id*path
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/episodes/1"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/episodes/1')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/episodes/1", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

GeoJSON

  • GET/api/v1/geojson/riversПлавателната линия на Дунав + Сава / Тиса
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/geojson/rivers"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/geojson/rivers')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/geojson/rivers", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/geojson/stationsFeatureCollection на станциите

    Параметри

    • countryquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/geojson/stations"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/geojson/stations')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/geojson/stations", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

Източници и качество на данните

  • GET/api/v1/meta/availabilityМесечна наличност по източник ( 12 месеца ): дни с данни и последните изпълнения
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/meta/availability"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/meta/availability')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/meta/availability", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/meta/healthСъстояние на източниците
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/meta/health"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/meta/health')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/meta/health", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/meta/qualityКачество на данните по станция: съмнителни измервания и състояние на източника
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/meta/quality"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/meta/quality')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/meta/quality", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v1/meta/sourcesПоследна актуализация по източник
    curl
    curl -sS "https://danubealert.arcm.ro/api/v1/meta/sources"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v1/meta/sources')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v1/meta/sources", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

  • GET/api/v2/meta/sourcesИзточници на данни, странициране с курсор ( v2 )

    Параметри

    • limitquery
    • next_cursorquery
    • fieldsquery
    • formatquery
    curl
    curl -sS "https://danubealert.arcm.ro/api/v2/meta/sources"
    JavaScript
    const r = await fetch('https://danubealert.arcm.ro/api/v2/meta/sources')
    if (!r.ok) throw new Error(`HTTP ${r.status}`)
    const body = await r.json()
    console.log(body)
    console.log(body._attribution.source, body._attribution.url)
    Python
    import requests
    
    r = requests.get("https://danubealert.arcm.ro/api/v2/meta/sources", timeout=30)
    r.raise_for_status()
    body = r.json()
    print(body)
    print(body["_attribution"]["source"], body["_attribution"]["url"])

    Лимит на заявки: Анонимно: 60 заявки/минута (плъзгащ се прозорец); с `Authorization: Bearer <ключ>`: 600/минута.

    Отговорът съдържа `_attribution`; покажи `_attribution.source` и `_attribution.url` до данните.

Ограничение на заявките

Плъзгащ се прозорец от 60 секунди; редът от измервания е тежка крайна точка (10 в минута). Над лимита: 429 с retry_after_seconds в тялото и заглавки Retry-After и X-RateLimit-*. Отказаните заявки не се броят за следващия прозорец.

Ограничение на заявките
ЗаглавиеЗначение
X-RateLimit-Limit60 / 600 / 3000 / 10
X-RateLimit-Remaining0 … limit
Retry-Afters ( 429 )
429 · retry_after_secondsJSON

Типизиран TypeScript клиент

Типове, генерирани директно от договора — всеки маршрут, параметър и отговор, без ръчно писани модели.

TypeScript
npx openapi-typescript https://danubealert.arcm.ro/api/v1/openapi.en.json -o danubealert.d.ts

import type { paths } from './danubealert'
type Observatii = paths['/stations/{slug}/observations']['get']['responses']['200']['content']['application/json']

Експорт на отворени данни

Файловете от предходния ден, по един ред за станция, за всяка държава от басейна, във формат CSV или JSON. Отговорите могат да се кешират (ETag, Last-Modified, Cache-Control); лицензът и посочването на източника са в заглавките на файла и в блока _attribution на JSON.

Лиценз: Creative Commons Attribution 4.0 International · Посочване на източника: DanubeAlert и националните хидрологични служби · Предходният ден, в часовата зона на държавата.

Конфигуратор на уиджет

Нивото на станция директно на вашия сайт: изберете станцията, темата, езика и брандинга, вижте уиджета на живо и копирайте iframe кода във всяка CMS.

Твоите уиджети в три стъпки

Избери типа и настройките — прегледът и кодът се обновяват веднага.

Тема
Размер

Преглед ( миниатюра )

Код за вмъкване

<iframe
  src="https://danubealert.arcm.ro/embed/v1/station?slug=achleiten&theme=auto&lang=bg&accent=00BABE"
  title="Danube water level — Ахлайтен"
  width="100%"
  height="300"
  style="border:0;max-width:640px;"
  loading="lazy"
  referrerpolicy="strict-origin-when-cross-origin"
></iframe>

Пълният договор: /api/v1/openapi.en.json · /api/v1/openapi.json · Данни: националните хидрологични служби, чрез DanubeAlert