Locations v1 / Meteo
Daily weather series
A station's daily series: mean, minimum and maximum temperature, precipitation and wind, for each day of the requested interval.
GET
https://oneapi.ro/api/locations/v1/meteo/zilnic
Query parameters
NameTypeDescriptionAccepted values
statierequired
string
REQUIRED. The station's WSI code (from
/meteo/statii).
max 32 car.
de_laoptional
string | null
The first day of the interval,
YYYY-MM-DD.
e.g. 2024-01-01e.g. 2024-06-15
pana_laoptional
string | null
The last day of the interval,
YYYY-MM-DD.
e.g. 2024-12-31e.g. 2024-06-15e.g. 2024-06-30
limitaoptional
integer | null
How many days are returned (365 by default, 2000 at most). The full series of an old station runs to over 40,000 days.
1 – 2000
How it behaves
- A
nullmeans NOT MEASURED, not zero. The series are old, and a parameter can be missing for whole years at a station that publishes it today. If you treatnullas 0, a winter with no precipitation measurements becomes a dry winter. precipitatii_urmemarks the days on which the source reports traces of precipitation (below 0.05 mm): the amount stays 0, but it did rain. The source encodes these as-1; we do not propagate the negative value, we propagate the flag.- Days come back in reverse chronological order, so that
limitawithout an interval gives you the most recent ones. - The source also marks missing data with
-999, not only with an empty field. We convert those tonullon import, together with physically impossible values (generous thresholds, so that the real extremes of a 150-year series are not clipped). What you see inserieis either a measurement ornull— never a sentinel disguised as a figure.
What it is for
- Reconstructing the weather on a particular day, for an insurance claim or a contractual dispute.
- Feeding your own model with the raw series, instead of using our aggregates.
- Checking for yourself how we computed a normal or an annual indicator.
Response structure
All fields below live inside data.
FieldTypeDescription
statie.wsi
string
The station's WMO identifier.
statie.nume
string
The name, exactly as the source publishes it.
statie.latitudine
number
Latitude, in decimal degrees (WGS 84).
statie.longitudine
number
Longitude, in decimal degrees (WGS 84).
statie.fara_catalog
boolean
true if the station has a series but no catalogue record (no name, no coordinates, invisible in geographic searches).
statie.localitate.cod_siruta
integer
SIRUTA code of the territorial unit.
statie.localitate.nume
string
The name, exactly as the source publishes it.
statie.judet
string
The county the value refers to.
statie.judet_cod
string
County code, two letters.
statie.primul_an
integer
The first year with measurements.
statie.ultimul_an
integer
The last year with measurements.
statie.zile_cu_date
integer
How many measured days the station has in total.
statie.parametri
array
The codes of the parameters published:
ta/tn/tx temperatures, r precipitation, ff wind, p sea-level pressure.
inregistrari
integer
How many days are in the response.
serie[].zi
string
The day,
YYYY-MM-DD.
serie[].temp_medie
integer
The day's mean temperature, measured at 2 m, °C.
serie[].temp_minima
integer
The day's minimum temperature, °C.
serie[].temp_maxima
number
The day's maximum temperature, °C.
serie[].precipitatii_mm
integer
The amount of precipitation, mm.
0 with precipitatii_urme=true means traces, not a dry day.
serie[].precipitatii_urme
boolean
The source reported traces of precipitation on this day.
serie[].vant_mediu_ms
number
The daily mean wind speed, measured at 10 m, m/s.
serie[].presiune_hpa
number
The daily mean pressure reduced TO SEA LEVEL, hPa — not the pressure measured at the station. Do not compare it with a local barometer without correcting for altitude. At mountain stations the reduction systematically exceeds what is physically possible at ground level (Păltiniș has a median of 1,070 hPa): these are ANM's computed values, not errors of ours, but do not treat them as real pressure.
observatie
string
A note on how to read the response: a computation convention or a limit of the data.
sursa
object
The data source: the National Meteorological Administration, official daily series, CC-BY-4.0 licence. It also carries the date of the last import.
sursa.nume
string
Name of the official source.
sursa.url
string
Public address of the source.
sursa.licenta
string
The licence under which the source allows reuse.
Response examples
GEThttps://oneapi.ro/api/locations/v1/meteo/zilnic?statie=0-20000-0-15120&de_la=2024-01-01&pana_la=2024-12-31&limita=10
{
"data": {
"statie": {
"wsi": "0-20000-0-15120",
"nume": "Cluj-Napoca",
"latitudine": 46.777778,
"longitudine": 23.571389,
"fara_catalog": false,
"localitate": {
"cod_siruta": 54975,
"nume": "Cluj-Napoca"
},
"judet": "Cluj",
"judet_cod": "CJ",
"primul_an": 1921,
"ultimul_an": 2026,
"zile_cu_date": 38525,
"parametri": [
"ff",
"p",
"r",
"ta",
"tn",
"tx"
]
},
"inregistrari": 10,
"serie": [
{
"zi": "2024-12-31",
"temp_medie": -3,
"temp_minima": -4,
"temp_maxima": -2.2,
"precipitatii_mm": 0,
"precipitatii_urme": false,
"vant_mediu_ms": 1.3,
"presiune_hpa": 1035.5
}
],
"observatie": "Valoare `null` înseamnă NEMĂSURAT, nu zero — seria e veche, iar un parametru poate lipsi ani întregi la o stație. `precipitatii_urme` marchează zilele în care sursa raportează urme (0–0,05 mm): cantitatea e 0, dar a plouat.",
"sursa": {
"nume": "Administrația Națională de Meteorologie (ANM) — date climatologice zilnice, controlate calitativ",
"url": "https://odp.meteoromania.ro/",
"licenta": "CC BY 4.0, cu indicarea sursei."
}
}
}
GEThttps://oneapi.ro/api/locations/v1/meteo/zilnic?statie=0-20000-0-15208
{
"data": {
"statie": {
"wsi": "0-20000-0-15208",
"nume": "Alba Iulia",
"latitudine": 46.063911,
"longitudine": 23.563402,
"fara_catalog": false,
"localitate": {
"cod_siruta": 1017,
"nume": "Alba Iulia"
},
"judet": "Alba",
"judet_cod": "AB",
"primul_an": 1881,
"ultimul_an": 2026,
"zile_cu_date": 43155,
"parametri": [
"ff",
"p",
"r",
"ta",
"tn",
"tx"
]
},
"inregistrari": 365,
"serie": [
{
"zi": "2026-09-21",
"temp_medie": 16.2,
"temp_minima": 9.1,
"temp_maxima": 24.4,
"precipitatii_mm": 0.1,
"precipitatii_urme": false,
"vant_mediu_ms": 2.1,
"presiune_hpa": 1018.2
}
],
"observatie": "Valoare `null` înseamnă NEMĂSURAT, nu zero — seria e veche, iar un parametru poate lipsi ani întregi la o stație. `precipitatii_urme` marchează zilele în care sursa raportează urme (0–0,05 mm): cantitatea e 0, dar a plouat.",
"sursa": {
"nume": "Administrația Națională de Meteorologie (ANM) — date climatologice zilnice, controlate calitativ",
"url": "https://odp.meteoromania.ro/",
"licenta": "CC BY 4.0, cu indicarea sursei."
}
}
}
GEThttps://oneapi.ro/api/locations/v1/meteo/zilnic?statie=0-20000-0-15208&pana_la=2024-06-15
{
"data": {
"statie": {
"wsi": "0-20000-0-15208",
"nume": "Alba Iulia",
"latitudine": 46.063911,
"longitudine": 23.563402,
"fara_catalog": false,
"localitate": {
"cod_siruta": 1017,
"nume": "Alba Iulia"
},
"judet": "Alba",
"judet_cod": "AB",
"primul_an": 1881,
"ultimul_an": 2026,
"zile_cu_date": 43155,
"parametri": [
"ff",
"p",
"r",
"ta",
"tn",
"tx"
]
},
"inregistrari": 365,
"serie": [
{
"zi": "2024-06-15",
"temp_medie": 19,
"temp_minima": 11.9,
"temp_maxima": 25.7,
"precipitatii_mm": 0,
"precipitatii_urme": false,
"vant_mediu_ms": 1.1,
"presiune_hpa": 1013.5
}
],
"observatie": "Valoare `null` înseamnă NEMĂSURAT, nu zero — seria e veche, iar un parametru poate lipsi ani întregi la o stație. `precipitatii_urme` marchează zilele în care sursa raportează urme (0–0,05 mm): cantitatea e 0, dar a plouat.",
"sursa": {
"nume": "Administrația Națională de Meteorologie (ANM) — date climatologice zilnice, controlate calitativ",
"url": "https://odp.meteoromania.ro/",
"licenta": "CC BY 4.0, cu indicarea sursei."
}
}
}
GEThttps://oneapi.ro/api/locations/v1/meteo/zilnic?statie=0-20000-0-15208&de_la=2024-06-15&pana_la=2024-06-30
{
"data": {
"statie": {
"wsi": "0-20000-0-15208",
"nume": "Alba Iulia",
"latitudine": 46.063911,
"longitudine": 23.563402,
"fara_catalog": false,
"localitate": {
"cod_siruta": 1017,
"nume": "Alba Iulia"
},
"judet": "Alba",
"judet_cod": "AB",
"primul_an": 1881,
"ultimul_an": 2026,
"zile_cu_date": 43155,
"parametri": [
"ff",
"p",
"r",
"ta",
"tn",
"tx"
]
},
"inregistrari": 16,
"serie": [
{
"zi": "2024-06-30",
"temp_medie": 26.8,
"temp_minima": 18.9,
"temp_maxima": 35.3,
"precipitatii_mm": 0,
"precipitatii_urme": false,
"vant_mediu_ms": 1,
"presiune_hpa": 1013.7
}
],
"observatie": "Valoare `null` înseamnă NEMĂSURAT, nu zero — seria e veche, iar un parametru poate lipsi ani întregi la o stație. `precipitatii_urme` marchează zilele în care sursa raportează urme (0–0,05 mm): cantitatea e 0, dar a plouat.",
"sursa": {
"nume": "Administrația Națională de Meteorologie (ANM) — date climatologice zilnice, controlate calitativ",
"url": "https://odp.meteoromania.ro/",
"licenta": "CC BY 4.0, cu indicarea sursei."
}
}
}
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. |
| 404 | negasit | There is no station with the given WSI code. |
| 422 | validare | A parameter failed validation (statie, de_la, pana_la etc.); detalii says which and why. |
| 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": "A parameter failed validation (statie, de_la, pana_la etc.); detalii says which and why.",
"detalii": {
"statie": [
"The value sent does not satisfy the parameter rule."
]
}
}
}