{"openapi":"3.1.0","info":{"title":"Air Quality API","version":"1.0.0","description":"Current air quality and hourly forecast for any location — European and US AQI plus PM2.5, PM10, ozone, nitrogen dioxide, sulphur dioxide, carbon monoxide, dust and UV index. Powered by Open-Meteo. Just pass a latitude and longitude.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/airquality-api","description":"oanor gateway"}],"tags":[{"name":"Air Quality"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/current":{"get":{"operationId":"get_v1_current","tags":["Air Quality"],"summary":"Current air quality","description":"","parameters":[{"name":"lat","in":"query","required":true,"description":"Latitude","schema":{"type":"string"},"example":"52.52"},{"name":"lon","in":"query","required":true,"description":"Longitude","schema":{"type":"string"},"example":"13.41"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"dust":4,"pm10":11,"time":"2026-05-30T04:00","ozone":72,"pm2_5":6.9,"units":{"dust":"μg/m³","pm10":"μg/m³","time":"iso8601","ozone":"μg/m³","pm2_5":"μg/m³","us_aqi":"USAQI","ammonia":"μg/m³","interval":"seconds","uv_index":"","european_aqi":"EAQI","carbon_monoxide":"μg/m³","sulphur_dioxide":"μg/m³","nitrogen_dioxide":"μg/m³"},"us_aqi":38,"ammonia":1.4,"latitude":52.5,"timezone":"Europe/Berlin","uv_index":0,"longitude":13.400002,"european_aqi":29,"carbon_monoxide":145,"sulphur_dioxide":1,"nitrogen_dioxide":7.5,"european_aqi_label":"fair"},"meta":{"timestamp":"2026-05-30T02:10:25.251Z","request_id":"f0d81dc1-98b5-43f5-bae3-780ff94ed255"},"status":"ok","message":"Air quality retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/forecast":{"get":{"operationId":"get_v1_forecast","tags":["Air Quality"],"summary":"Hourly air-quality forecast","description":"","parameters":[{"name":"lat","in":"query","required":true,"description":"Latitude","schema":{"type":"string"},"example":"52.52"},{"name":"lon","in":"query","required":true,"description":"Longitude","schema":{"type":"string"},"example":"13.41"},{"name":"hours","in":"query","required":false,"description":"Hours 1-168 (default 24)","schema":{"type":"string"},"example":"24"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"hours":24,"forecast":[{"pm10":11.6,"time":"2026-05-30T00:00","ozone":78,"pm2_5":6.6,"european_aqi":31,"nitrogen_dioxide":13.2,"european_aqi_label":"fair"},{"pm10":10,"time":"2026-05-30T01:00","ozone":74,"pm2_5":6.8,"european_aqi":30,"nitrogen_dioxide":11.2,"european_aqi_label":"fair"},{"pm10":11.2,"time":"2026-05-30T02:00","ozone":73,"pm2_5":7.1,"european_aqi":29,"nitrogen_dioxide":9.2,"european_aqi_label":"fair"},{"pm10":13.1,"time":"2026-05-30T03:00","ozone":74,"pm2_5":8.1,"european_aqi":30,"nitrogen_dioxide":6.9,"european_aqi_label":"fair"},{"pm10":11,"time":"2026-05-30T04:00","ozone":72,"pm2_5":6.9,"european_aqi":29,"nitrogen_dioxide":7.5,"european_aqi_label":"fair"},{"pm10":13.6,"time":"2026-05-30T05:00","ozone":69,"pm2_5":9.3,"european_aqi":28,"nitrogen_dioxide":7.2,"european_aqi_label":"fair"},{"pm10":15.3,"time":"2026-05-30T06:00","ozone":66,"pm2_5":9.5,"european_aqi":26,"nitrogen_dioxide":7.9,"european_aqi_label":"fair"},{"pm10":13.5,"time":"2026-05-30T07:00","ozone":82,"pm2_5":10.7,"european_aqi":33,"nitrogen_dioxide":5.4,"european_aqi_label":"fair"},{"pm10":18.7,"time":"2026-05-30T08:00","ozone":84,"pm2_5":11.6,"european_aqi":34,"nitrogen_dioxide":3.8,"european_aqi_label":"fair"},{"pm10":18.3,"time":"2026-05-30T09:00","ozone":81,"pm2_5":11.2,"european_aqi":32,"nitrogen_dioxide":2.8,"european_aqi_label":"fair"},{"pm10":14.5,"time":"2026-05-30T10:00","ozone":83,"pm2_5":9.3,"european_aqi":33,"nitrogen_dioxide":2.4,"european_aqi_label":"fair"},{"pm10":14.6,"time":"2026-05-30T11:00","ozone":85,"pm2_5":7,"european_aqi":34,"nitrogen_dioxide":1.8,"european_aqi_label":"fair"},{"pm10":13.2,"time":"2026-05-30T12:00","ozone":89,"pm2_5":6,"european_aqi":36,"nitrogen_dioxide":1.5,"european_aqi_label":"fair"},{"pm10":10.6,"time":"2026-05-30T13:00","ozone":91,"pm2_5":4.9,"european_aqi":36,"nitrogen_dioxide":1.4,"european_aqi_label":"fair"},{"pm10":10.3,"time":"2026-05-30T14:00","ozone":87,"pm2_5":4,"european_aqi":35,"nitrogen_dioxide":1.5,"european_aqi_label":"fair"},{"pm10":11.1,"time":"2026-05-30T15:00","ozone":78,"pm2_5":4.1,"european_aqi":31,"nitrogen_dioxide":1.5,"european_aqi_label":"fair"},{"pm10":10.9,"time":"2026-05-30T16:00","ozone":74,"pm2_5":4.2,"european_aqi":30,"nitrogen_dioxide":1.9,"european_aqi_label":"fair"},{"pm10":10.7,"time":"2026-05-30T17:00","ozone":75,"pm2_5":4.2,"european_aqi":30,"nitrogen_dioxide":1.9,"european_aqi_label":"fair"},{"pm10":11.2,"time":"2026-05-30T18:00","ozone":79,"pm2_5":4.4,"european_aqi":32,"nitrogen_dioxide":2,"european_aqi_label":"fair"},{"pm10":10.1,"time":"2026-05-30T19:00","ozone":84,"pm2_5":4.8,"european_aqi":34,"nitrogen_dioxide":2.6,"european_aqi_label":"fair"},{"pm10":9.4,"time":"2026-05-30T20:00","ozone":85,"pm2_5":4.4,"european_aqi":34,"nitrogen_dioxide":3.2,"european_aqi_label":"fair"},{"pm10":10.2,"time":"2026-05-30T21:00","ozone":79,"pm2_5":4.2,"european_aqi":32,"nitrogen_dioxide":5.8,"european_aqi_label":"fair"},{"pm10":8.6,"time":"2026-05-30T22:00","ozone":74,"pm2_5":4.5,"european_aqi":30,"nitrogen_dioxide":7.4,"european_aqi_label":"fair"},{"pm10":8.3,"time":"2026-05-30T23:00","ozone":63,"pm2_5":5,"european_aqi":25,"nitrogen_dioxide":6.9,"european_aqi_label":"fair"}],"latitude":52.5,"timezone":"Europe/Berlin","longitude":13.400002},"meta":{"timestamp":"2026-05-30T02:10:25.647Z","request_id":"4fb982c5-252c-4d0a-9daf-5d4edd2bcc97"},"status":"ok","message":"Air-quality forecast retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":4000,"rps_limit":2,"hard_limit":true},{"slug":"basic","name":"Basic","price_cents_month":1100,"monthly_call_quota":80000,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":3400,"monthly_call_quota":350000,"rps_limit":20,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":8900,"monthly_call_quota":1500000,"rps_limit":50,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/airquality-api"}