Mediu v1 / Mediu
Calitatea aerului acum
Ultimele valori de la stațiile din apropiere, date prin siruta sau lat + lng.
GET
https://oneapi.ro/api/mediu/v1/aer/acum
Parametri de interogare
NumeTipDescriereValori acceptate
raza_kmopțional
number | null
Raza de căutare, în kilometri. Implicit 25, maximum 300.
1 – 300
limitaopțional
integer | null
Câte stații să întoarcă, maximum 50. Implicit 5.
1 – 50
latopțional
number | null
Latitudinea punctului. Cere
lng.
41 – 50
lngopțional
number | null
Longitudinea punctului. Cere
lat.
19 – 32
sirutaopțional
integer | null
Codul SIRUTA al localității sau UAT-ului. Alternativă la
lat + lng.
1
Cum se comportă
- Poluanţii nu se măsoară în aceleaşi staţii. PM10 are 171 de staţii, NO2 149, SO2 116, CO 99, O3 83, iar PM2.5 doar 78. Un clasament sau o comparaţie între doi poluanţi compară, de fapt, două reţele diferite — nu doar două substanţe. Când compari judeţe pe PM2.5, ţine minte că unele n-au nicio staţie care să-l măsoare.
- Citește
vechime_oreînainte de orice. Datele curente sunt neverificate și ajung la noi cu întârziere; o stație poate să nu fi raportat de zile întregi. Câmpulinvechitamarchează valorile mai vechi de 6 ore. - Se întorc stațiile din rază, ordonate după distanță, dar doar cele care au valori în fereastra importată. O stație activă în metadate fără nicio măsurătoare recentă nu apare — ar fi o promisiune goală.
- Valoarea e măsurată la stație. La câțiva kilometri, sau lângă o arteră aglomerată, poate fi complet diferită.
distanta_kmșitipspun cât de reprezentativă e pentru locul cerut. - Punctul se dă fie ca
siruta, fie calat+lng— nu amândouă. Raza implicită e 25 km. - Nu compara o valoare orară cu valoarea-limită fără să vezi la ce se aplică pragul:
referinta_legala.se_aplica_laspune dacă e media zilnică, valoarea orară sau maximul pe 8 ore.
La ce folosește
- Arăți într-o aplicație ce se măsoară acum lângă utilizator, pornind de la localitatea lui.
- Decizi dacă o activitate în aer liber e rezonabilă azi, pe date măsurate, nu pe prognoză.
- Verifici dacă o sesizare despre poluare coincide cu ce arată stațiile din zonă.
Structura răspunsului
CâmpTipDescriere
data.punct
object
Punctul folosit, cu sursa lui: coordonate date direct sau deduse dintr-un cod SIRUTA.
data.punct.lat
number
Latitudinea folosită.
data.punct.lng
number
Longitudinea folosită.
data.punct.sursa
string
siruta sau coordonate.
data.punct.cod_siruta
integer
Codul rezolvat, când s-a dat
siruta.
data.punct.nume
string
Denumirea entității rezolvate.
data.punct.nivel
string
localitate (punct precis) sau uat_centroid (centrul unei suprafețe).
data.raza_km
number
Raza aplicată.
data.statii_gasite
integer
Câte stații cu valori au fost găsite în rază.
data.rezultate[].statie
object
Stația, cu aceleași câmpuri ca la
/aer/statii.
data.rezultate[].distanta_km
number
Distanța de la punct până la stație.
data.rezultate[].valori[]
object
Ultimele valori ale stației, cu aceeași structură ca
ultimele_valori la /aer/statii/{cod}.
data.observatie
string
Avertismentul despre reprezentativitate și date neverificate.
data.sursa
object
Sursa și licența.
data.rezultate[].statie.cod
string
Codul european al stației.
data.rezultate[].statie.cod_national
string
Codul folosit de rețeaua națională.
data.rezultate[].statie.latitudine
number
Latitudinea stației.
data.rezultate[].statie.longitudine
number
Longitudinea stației.
data.rezultate[].statie.altitudine
integer
Altitudinea, în metri.
data.rezultate[].statie.tip
string
Tipul stației: trafic, industrial, fond. Contează la comparații: o stație de trafic nu se compară cu una de fond.
data.rezultate[].statie.zona
string
Zona: urbană, suburbană, rurală.
data.rezultate[].statie.localitate
object
Localitatea în care cade stația, legată la nomenclatorul Locations.
data.rezultate[].statie.judet
string
Județul.
data.rezultate[].statie.judet_cod
string
Indicativul auto al județului.
data.rezultate[].statie.prima_observatie
string
De când există date pentru stație.
data.rezultate[].statie.ultima_observatie
null
Ultima zi cu date.
null înseamnă că stația n-are serie zilnică agregată.
data.rezultate[].statie.activa
boolean
Dacă stația mai raportează.
data.rezultate[].valori[].poluant
string
Poluantul măsurat.
data.rezultate[].valori[].valoare
integer
Valoarea orară.
data.rezultate[].valori[].unitate
string
Unitatea de măsură.
data.rezultate[].valori[].ora
string
Ora la care se referă valoarea.
data.rezultate[].valori[].vechime_ore
integer
De câte ore e valoarea. Sursa are întârziere — nu e o citire live.
data.rezultate[].valori[].invechita
boolean
Semnal explicit că valoarea e prea veche ca să fie tratată drept „acum".
meta.distanta
object
Cum sunt măsurate distanţele din răspuns. Apare pe orice răspuns care conţine o distanţă.
meta.distanta.metoda
string
Mereu
linie_dreapta: distanţa geodezică pe suprafaţa Pământului, nu pe drum.
meta.distanta.detaliu
string
Aceeaşi informaţie, în cuvinte.
Exemple de răspuns
GEThttps://oneapi.ro/api/mediu/v1/aer/acum?siruta=54984
{
"data": {
"punct": {
"lat": 46.78,
"lng": 23.559444444444,
"sursa": "siruta",
"cod_siruta": 54984,
"nume": "Cluj-Napoca",
"nivel": "localitate"
},
"raza_km": 25,
"statii_gasite": 5,
"rezultate": [
{
"statie": {
"cod": "RO0075A",
"cod_national": "RO-CJ-3",
"latitudine": 46.765425,
"longitudine": 23.550258,
"altitudine": 346,
"tip": "background",
"zona": "suburban",
"localitate": {
"cod_siruta": 54975,
"nume": "Cluj-Napoca"
},
"judet": "Cluj",
"judet_cod": "CJ",
"prima_observatie": "2006-01-01",
"ultima_observatie": null,
"activa": true,
"date": {
"are": false,
"zile": 0,
"prima_zi": null,
"ultima_zi": null,
"poluanti": []
}
},
"distanta_km": 1.8,
"valori": [
{
"poluant": "CO",
"valoare": 0,
"unitate": "mg/m³",
"ora": "2025-02-14 22: 00: 00+02",
"vechime_ore": 14377,
"invechita": true,
"referinta_legala": {
"prag": 10,
"se_aplica_la": "maxim_8h",
"observatie": "Pragul se aplică maximului mediilor pe 8 ore, nu acestei valori izolate — decât dacă e chiar o valoare orară."
}
}
]
}
],
"observatie": "Valorile sunt măsurate la STAȚIE, nu în localitate: la câțiva kilometri, sau lângă o arteră aglomerată, pot fi complet diferite. Datele din fereastra curentă sunt NEVERIFICATE — operatorul le poate corecta sau invalida ulterior. Mediile zilnice se publică doar când ziua are cel puțin 18 ore valide; `ore_valide` spune întotdeauna pe ce se sprijină cifra. O zi cu `masurare: zilnica` e o probă de laborator pe 24 de ore (PM10/PM2,5 gravimetric): media e chiar proba, fără minim, maxim ori ore.",
"sursa": {
"nume": "European Environment Agency — Air Quality Download Service (date raportate de România prin RNMCA/ANPM)",
"url": "https://eeadmz1-downloads-webapp.azurewebsites.net/",
"licenta": "Politica de reutilizare a EEA — reutilizare permisă cu indicarea sursei."
}
},
"meta": {
"distanta": {
"metoda": "linie_dreapta",
"detaliu": "Distanţele sunt geodezice, în linie dreaptă pe suprafaţa Pământului (WGS84) — nu pe drum."
}
}
}
GEThttps://oneapi.ro/api/mediu/v1/aer/acum?lat=44.4268&lng=26.1025&raza_km=40&limita=10
{
"data": {
"punct": {
"lat": 44.4268,
"lng": 26.1025,
"sursa": "coordonate"
},
"raza_km": 40,
"statii_gasite": 10,
"rezultate": [
{
"statie": {
"cod": "RO0070A",
"cod_national": "RO-B6",
"latitudine": 44.435044,
"longitudine": 26.098297,
"altitudine": 79,
"tip": "traffic",
"zona": "urban",
"localitate": {
"cod_siruta": 179132,
"nume": "București"
},
"judet": "București",
"judet_cod": "B",
"prima_observatie": "2004-01-01",
"ultima_observatie": null,
"activa": true,
"date": {
"are": false,
"zile": 0,
"prima_zi": null,
"ultima_zi": null,
"poluanti": []
}
},
"distanta_km": 1,
"valori": [
{
"poluant": "CO",
"valoare": 0.488,
"unitate": "mg/m³",
"ora": "2026-09-22 08: 00: 00+03",
"vechime_ore": 352,
"invechita": true,
"referinta_legala": {
"prag": 10,
"se_aplica_la": "maxim_8h",
"observatie": "Pragul se aplică maximului mediilor pe 8 ore, nu acestei valori izolate — decât dacă e chiar o valoare orară."
}
}
]
}
],
"observatie": "Valorile sunt măsurate la STAȚIE, nu în localitate: la câțiva kilometri, sau lângă o arteră aglomerată, pot fi complet diferite. Datele din fereastra curentă sunt NEVERIFICATE — operatorul le poate corecta sau invalida ulterior. Mediile zilnice se publică doar când ziua are cel puțin 18 ore valide; `ore_valide` spune întotdeauna pe ce se sprijină cifra. O zi cu `masurare: zilnica` e o probă de laborator pe 24 de ore (PM10/PM2,5 gravimetric): media e chiar proba, fără minim, maxim ori ore.",
"sursa": {
"nume": "European Environment Agency — Air Quality Download Service (date raportate de România prin RNMCA/ANPM)",
"url": "https://eeadmz1-downloads-webapp.azurewebsites.net/",
"licenta": "Politica de reutilizare a EEA — reutilizare permisă cu indicarea sursei."
}
},
"meta": {
"distanta": {
"metoda": "linie_dreapta",
"detaliu": "Distanţele sunt geodezice, în linie dreaptă pe suprafaţa Pământului (WGS84) — nu pe drum."
}
}
}
GEThttps://oneapi.ro/api/mediu/v1/aer/acum?lat=46.7712&lng=23.6236
{
"data": {
"punct": {
"lat": 46.7712,
"lng": 23.6236,
"sursa": "coordonate"
},
"raza_km": 25,
"statii_gasite": 5,
"rezultate": [
{
"statie": {
"cod": "RO0073A",
"cod_national": "RO-CJ-1",
"latitudine": 46.778253,
"longitudine": 23.615619,
"altitudine": 336,
"tip": "traffic",
"zona": "urban",
"localitate": {
"cod_siruta": 54975,
"nume": "Cluj-Napoca"
},
"judet": "Cluj",
"judet_cod": "CJ",
"prima_observatie": "2006-01-01",
"ultima_observatie": null,
"activa": true,
"date": {
"are": false,
"zile": 0,
"prima_zi": null,
"ultima_zi": null,
"poluanti": []
}
},
"distanta_km": 1,
"valori": [
{
"poluant": "CO",
"valoare": 0.474,
"unitate": "mg/m³",
"ora": "2026-09-22 09: 00: 00+03",
"vechime_ore": 351,
"invechita": true,
"referinta_legala": {
"prag": 10,
"se_aplica_la": "maxim_8h",
"observatie": "Pragul se aplică maximului mediilor pe 8 ore, nu acestei valori izolate — decât dacă e chiar o valoare orară."
}
}
]
}
],
"observatie": "Valorile sunt măsurate la STAȚIE, nu în localitate: la câțiva kilometri, sau lângă o arteră aglomerată, pot fi complet diferite. Datele din fereastra curentă sunt NEVERIFICATE — operatorul le poate corecta sau invalida ulterior. Mediile zilnice se publică doar când ziua are cel puțin 18 ore valide; `ore_valide` spune întotdeauna pe ce se sprijină cifra. O zi cu `masurare: zilnica` e o probă de laborator pe 24 de ore (PM10/PM2,5 gravimetric): media e chiar proba, fără minim, maxim ori ore.",
"sursa": {
"nume": "European Environment Agency — Air Quality Download Service (date raportate de România prin RNMCA/ANPM)",
"url": "https://eeadmz1-downloads-webapp.azurewebsites.net/",
"licenta": "Politica de reutilizare a EEA — reutilizare permisă cu indicarea sursei."
}
},
"meta": {
"distanta": {
"metoda": "linie_dreapta",
"detaliu": "Distanţele sunt geodezice, în linie dreaptă pe suprafaţa Pământului (WGS84) — nu pe drum."
}
}
}
Coduri de eroare
| Cod | Slug | Când apare |
|---|---|---|
| 401 | neautentificat | Token lipsă, invalid, expirat sau revocat. |
| 403 | feature_indisponibil | Planul curent nu include funcţia de care ţine ruta. |
| 404 | negasit | Codul SIRUTA nu a putut fi rezolvat la o coordonată. |
| 422 | validare | Niciun punct dat, ambele forme date deodată, sau o coordonată fără perechea ei. |
| 429 | cota_depasita | Cota lunară a planului a fost depăşită (vezi Retry-After). |
Toate erorile au aceeași formă. eroare.cod e stabil și e cel după care trebuie să ramifici în cod — nu după textul din mesaj, care se poate schimba.
{
"eroare": {
"cod": "validare",
"mesaj": "Niciun punct dat, ambele forme date deodată, sau o coordonată fără perechea ei.",
"detalii": {
"raza_km": [
"Valoarea trimisă nu respectă regula parametrului."
]
}
}
}