Mediu v1 / Avertizari
Warning history
The warnings issued over a past interval, each with the phenomenon, level, zones and validity period. Use include_anulate to include the withdrawn ones.
GET
https://oneapi.ro/api/mediu/v1/avertizari/istoric
Query parameters
NameTypeDescriptionAccepted values
de_laoptional
string | null
Start of the interval (ISO 8601). Defaults to 30 days ago.
e.g. 2026-09-01e.g. 2024-06-15
pana_laoptional
string | null
End of the interval. Defaults to now.
e.g. 2026-09-07e.g. 2024-06-15
judetoptional
string | null
The county vehicle code (e.g.
CJ).
max 4 car.
sirutaoptional
integer | null
The SIRUTA code of an administrative unit — resolved to its county.
1
niveloptional
integer | null
Only that exact level (2 yellow, 3 orange, 4 red).
1 – 4
nivel_minoptional
integer | null
Only from this level upwards — the filter you want for alerting.
1 – 4
tipoptional
integer | null
The phenomenon type code, from
/avertizari/nomenclator.
1 – 20
include_anulateoptional
boolean | null
1 also includes withdrawn warnings. Excluded by default.
e.g. true
per_paginaoptional
text
How many warnings per page (default 50, max 200).
e.g. 50
paginaoptional
text
The page, counted from 1.
e.g. 1
How it behaves
- The part that does not exist at the source. The MeteoAlarm feed holds only what is currently valid; we never delete, so we accumulate a series nobody publishes.
- Warnings that OVERLAP the interval are returned, not only those starting in it — one that began Monday and ended Thursday counts for a question about Tuesday.
acoperire.istoricul_incepe_lais the real limit: there is nothing before our first import, and what was not captured cannot be recovered.
What it is for
- Reconstruct which warnings were in force on a given day, for a claim file.
- Document how many severe-weather episodes an area had in a season.
- Check whether a transport delay coincided with a real warning.
Response structure
FieldTypeDescription
data.de_la
string
Start of the interval used.
data.pana_la
string
End of the interval used.
data.avertizari[].identificator
string
The CAP identifier, globally unique. It is the key you use to request the detail and to follow the same warning across requests.
data.avertizari[].tip_mesaj
string
Alert, Update or Cancel. A cancellation deletes nothing here — that a warning existed and was withdrawn is itself information.
data.avertizari[].status
string
State of the item, as published by the source.
data.avertizari[].anulata
boolean
Whether the warning was withdrawn by a later message.
data.avertizari[].anulata_la
null
data.avertizari[].inlocuieste
array
The identifiers of the warnings this message supersedes.
data.avertizari[].tip
object
The phenomenon type: numeric code plus the source label (
wind, rain, snow-ice…).
data.avertizari[].tip.cod
integer
Code from the source code list — the key you filter on.
data.avertizari[].tip.nume
string
The name, exactly as the source publishes it.
data.avertizari[].nivel
object
The awareness level: code, colour (
yellow / orange / red) and the CAP severity. The code is stable, the label is readable — filter on the code.
data.avertizari[].nivel.cod
integer
Code from the source code list — the key you filter on.
data.avertizari[].nivel.nume
string
The name, exactly as the source publishes it.
data.avertizari[].nivel.severitate
string
data.avertizari[].urgenta
string
How soon the phenomenon is expected (
Immediate, Expected, Future).
data.avertizari[].certitudine
string
How certain it is to occur (
Observed, Likely, Possible).
data.avertizari[].titlu
string
The official headline, in Romanian, exactly as issued by the meteorological service.
data.avertizari[].descriere
string
The warning text. Neither translated nor altered by us.
data.avertizari[].instructiuni
null
The issuer's recommendations, where present.
data.avertizari[].valabilitate.de_la
string
When the phenomenon starts (CAP
onset). When the source omits it, the effective time is used.
data.avertizari[].valabilitate.pana_la
string
When the warning expires.
data.avertizari[].valabilitate.stare
string
activa, viitoare, incheiata or anulata. COMPUTED on every request against the clock — not a column that could fall behind.
data.avertizari[].valabilitate.ore_ramase
null
How many hours the warning still has to run;
null once it has ended.
data.avertizari[].judete[]
array
The counties covered: the source NUTS3 code, its own area name, plus our county with vehicle code and SIRUTA.
data.avertizari[].judete[].nuts3
string
data.avertizari[].judete[].zona
string
The zone the value refers to.
data.avertizari[].judete[].judet
string
The county the value refers to.
data.avertizari[].judete[].judet_cod
string
County code, two letters.
data.avertizari[].judete[].cod_siruta
integer
SIRUTA code of the territorial unit.
data.avertizari[].emis_la
string
When it was issued by the meteorological service.
data.avertizari[].emitent
string
Who issued it —
ANM.
data.avertizari[].vazuta_prima_data
string
When WE first captured it. The gap from
emis_la shows how quickly we caught it.
data.avertizari[].web
string
data.observatie
string
A note on how to read the response: a computation convention or a limit of the data.
data.acoperire
object
When our history begins. There is nothing before it: the source keeps no archive and we accumulate from the first import.
data.acoperire.istoricul_incepe_la
string
data.acoperire.observatie
string
A note on how to read the value next to it.
data.sursa
object
The source: MeteoAlarm (EUMETNET), the channel through which the Romanian meteorological service distributes its warnings in standardised CAP format. Includes issuer and licence.
data.sursa.nume
string
Name of the official source.
data.sursa.url
string
Public address of the source.
data.sursa.emitent
string
The institution that issued the information.
data.sursa.licenta
string
The licence under which the source allows reuse.
data.sursa.observatie
string
What to know about the source before using the data.
meta.paginare.pagina
integer
Current page, counted from 1.
meta.paginare.per_pagina
integer
How many records a page holds.
meta.paginare.total
integer
Total matching records, beyond the current page.
meta.paginare.pagini
integer
How many pages the list has.
Response examples
GEThttps://oneapi.ro/api/mediu/v1/avertizari/istoric
{
"data": {
"de_la": "2026-09-06 20: 39: 45",
"pana_la": "2026-10-06 20: 39: 45",
"avertizari": [
{
"identificator": "2.49.0.0.642.0.RO.2609050946.cdf52e901d453e09",
"tip_mesaj": "Alert",
"status": "Actual",
"anulata": false,
"anulata_la": null,
"inlocuieste": [],
"tip": {
"cod": 1,
"nume": "wind"
},
"nivel": {
"cod": 2,
"nume": "yellow",
"severitate": "Moderate"
},
"urgenta": "Future",
"certitudine": "Likely",
"titlu": "Vântul va avea intensificări, cu viteze de 50-70 km/h.",
"descriere": "Vântul va avea intensificări, cu viteze de 50-70 km/h.",
"instructiuni": null,
"valabilitate": {
"de_la": "2026-09-06T09: 00: 00+03: 00",
"pana_la": "2026-09-06T21: 00: 00+03: 00",
"stare": "incheiata",
"ore_ramase": null
},
"judete": [
{
"nuts3": "RO212",
"zona": "Botoșani",
"judet": "Botoșani",
"judet_cod": "BT",
"cod_siruta": 74
}
],
"emis_la": "2026-09-05T10: 09: 53+03: 00",
"emitent": "ANM",
"vazuta_prima_data": "2026-09-07T01: 57: 40+03: 00",
"web": "http://www.meteoromania.ro"
}
],
"observatie": "Se întorc avertizările care SE SUPRAPUN cu intervalul, nu doar cele care încep în el — una pornită luni și încheiată joi contează pentru o întrebare despre marți.",
"acoperire": {
"istoricul_incepe_la": "2026-09-07 01: 57: 40+03",
"observatie": "Nu există date înainte de această dată: sursa nu păstrează arhivă, iar noi acumulăm de la primul import."
},
"sursa": {
"nume": "MeteoAlarm (EUMETNET) — avertizări emise de Administrația Națională de Meteorologie",
"url": "https://meteoalarm.org",
"emitent": "Administrația Națională de Meteorologie (ANM)",
"licenta": "MeteoAlarm: CC BY 4.0, cu atribuire către MeteoAlarm și ANM.",
"observatie": "Avertizarea e emisă de ANM; MeteoAlarm e canalul EUMETNET prin care e distribuită în format CAP standardizat. Textul e cel oficial al ANM, netradus și nemodificat de noi."
}
},
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 50,
"total": 2,
"pagini": 1
}
}
}
GEThttps://oneapi.ro/api/mediu/v1/avertizari/istoric?judet=VN&de_la=2026-09-01&pana_la=2026-09-07
{
"data": {
"de_la": "2026-08-31 21: 00: 00",
"pana_la": "2026-09-06 21: 00: 00",
"avertizari": [
{
"identificator": "2.49.0.0.642.0.RO.2609050946.ed0abdb4ce97775e",
"tip_mesaj": "Alert",
"status": "Actual",
"anulata": false,
"anulata_la": null,
"inlocuieste": [],
"tip": {
"cod": 1,
"nume": "wind"
},
"nivel": {
"cod": 2,
"nume": "yellow",
"severitate": "Moderate"
},
"urgenta": "Future",
"certitudine": "Likely",
"titlu": "În zona montană înaltă vor fi rafale de peste 80-90 km/h.",
"descriere": "În zona montană înaltă vor fi rafale de peste 80-90 km/h.",
"instructiuni": null,
"valabilitate": {
"de_la": "2026-09-06T09: 00: 00+03: 00",
"pana_la": "2026-09-06T21: 00: 00+03: 00",
"stare": "incheiata",
"ore_ramase": null
},
"judete": [
{
"nuts3": "RO121",
"zona": "Alba",
"judet": "Alba",
"judet_cod": "AB",
"cod_siruta": 10
}
],
"emis_la": "2026-09-05T10: 09: 55+03: 00",
"emitent": "ANM",
"vazuta_prima_data": "2026-09-07T01: 57: 40+03: 00",
"web": "http://www.meteoromania.ro"
}
],
"observatie": "Se întorc avertizările care SE SUPRAPUN cu intervalul, nu doar cele care încep în el — una pornită luni și încheiată joi contează pentru o întrebare despre marți.",
"acoperire": {
"istoricul_incepe_la": "2026-09-07 01: 57: 40+03",
"observatie": "Nu există date înainte de această dată: sursa nu păstrează arhivă, iar noi acumulăm de la primul import."
},
"sursa": {
"nume": "MeteoAlarm (EUMETNET) — avertizări emise de Administrația Națională de Meteorologie",
"url": "https://meteoalarm.org",
"emitent": "Administrația Națională de Meteorologie (ANM)",
"licenta": "MeteoAlarm: CC BY 4.0, cu atribuire către MeteoAlarm și ANM.",
"observatie": "Avertizarea e emisă de ANM; MeteoAlarm e canalul EUMETNET prin care e distribuită în format CAP standardizat. Textul e cel oficial al ANM, netradus și nemodificat de noi."
}
},
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 50,
"total": 2,
"pagini": 1
}
}
}
GEThttps://oneapi.ro/api/mediu/v1/avertizari/istoric?de_la=2024-06-15
{
"data": {
"de_la": "2024-06-14 21: 00: 00",
"pana_la": "2026-10-06 20: 39: 45",
"avertizari": [
{
"identificator": "2.49.0.0.642.0.RO.2609050946.cdf52e901d453e09",
"tip_mesaj": "Alert",
"status": "Actual",
"anulata": false,
"anulata_la": null,
"inlocuieste": [],
"tip": {
"cod": 1,
"nume": "wind"
},
"nivel": {
"cod": 2,
"nume": "yellow",
"severitate": "Moderate"
},
"urgenta": "Future",
"certitudine": "Likely",
"titlu": "Vântul va avea intensificări, cu viteze de 50-70 km/h.",
"descriere": "Vântul va avea intensificări, cu viteze de 50-70 km/h.",
"instructiuni": null,
"valabilitate": {
"de_la": "2026-09-06T09: 00: 00+03: 00",
"pana_la": "2026-09-06T21: 00: 00+03: 00",
"stare": "incheiata",
"ore_ramase": null
},
"judete": [
{
"nuts3": "RO212",
"zona": "Botoșani",
"judet": "Botoșani",
"judet_cod": "BT",
"cod_siruta": 74
}
],
"emis_la": "2026-09-05T10: 09: 53+03: 00",
"emitent": "ANM",
"vazuta_prima_data": "2026-09-07T01: 57: 40+03: 00",
"web": "http://www.meteoromania.ro"
}
],
"observatie": "Se întorc avertizările care SE SUPRAPUN cu intervalul, nu doar cele care încep în el — una pornită luni și încheiată joi contează pentru o întrebare despre marți.",
"acoperire": {
"istoricul_incepe_la": "2026-09-07 01: 57: 40+03",
"observatie": "Nu există date înainte de această dată: sursa nu păstrează arhivă, iar noi acumulăm de la primul import."
},
"sursa": {
"nume": "MeteoAlarm (EUMETNET) — avertizări emise de Administrația Națională de Meteorologie",
"url": "https://meteoalarm.org",
"emitent": "Administrația Națională de Meteorologie (ANM)",
"licenta": "MeteoAlarm: CC BY 4.0, cu atribuire către MeteoAlarm și ANM.",
"observatie": "Avertizarea e emisă de ANM; MeteoAlarm e canalul EUMETNET prin care e distribuită în format CAP standardizat. Textul e cel oficial al ANM, netradus și nemodificat de noi."
}
},
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 50,
"total": 3,
"pagini": 1
}
}
}
GEThttps://oneapi.ro/api/mediu/v1/avertizari/istoric?pana_la=2024-06-15
{
"data": {
"de_la": "2026-09-06 20: 39: 45",
"pana_la": "2024-06-14 21: 00: 00",
"avertizari": [],
"observatie": "Se întorc avertizările care SE SUPRAPUN cu intervalul, nu doar cele care încep în el — una pornită luni și încheiată joi contează pentru o întrebare despre marți.",
"acoperire": {
"istoricul_incepe_la": "2026-09-07 01: 57: 40+03",
"observatie": "Nu există date înainte de această dată: sursa nu păstrează arhivă, iar noi acumulăm de la primul import."
},
"sursa": {
"nume": "MeteoAlarm (EUMETNET) — avertizări emise de Administrația Națională de Meteorologie",
"url": "https://meteoalarm.org",
"emitent": "Administrația Națională de Meteorologie (ANM)",
"licenta": "MeteoAlarm: CC BY 4.0, cu atribuire către MeteoAlarm și ANM.",
"observatie": "Avertizarea e emisă de ANM; MeteoAlarm e canalul EUMETNET prin care e distribuită în format CAP standardizat. Textul e cel oficial al ANM, netradus și nemodificat de noi."
}
},
"meta": {
"paginare": {
"pagina": 1,
"per_pagina": 50,
"total": 0,
"pagini": 0
}
}
}
Error codes
| Code | Slug | When it occurs |
|---|---|---|
| 401 | neautentificat | Token missing, invalid, expired or revoked. |
| 403 | feature_indisponibil | The current plan does not include the feature the route depends on. |
| 422 | validare | An undeclared parameter or a value that fails validation (de_la, pana_la, judet, siruta, nivel, nivel_min, tip, include_anulate). The offending field is in detalii. |
| 429 | cota_depasita | The plan's monthly quota has been exceeded (see Retry-After). |
All errors share the same shape. eroare.cod is stable and is the value you should branch on in code — not the text in mesaj, which may change.
{
"eroare": {
"cod": "validare",
"mesaj": "An undeclared parameter or a value that fails validation (de_la, pana_la, judet, siruta, nivel, nivel_min, tip, include_anulate). The offending field is in detalii.",
"detalii": {
"de_la": [
"The value sent does not satisfy the parameter rule."
]
}
}
}