# eu-verify Air Quality Forecast

> eu-verify Air Quality Forecast is a paid API for AI agents from data.greeneris.io, paid per call via x402, $0.002/call, status unknown (last checked 2026-09-14).

Returns hourly air quality forecasts (PM2.5, PM10, European AQI and more) for any geographic coordinate for up to 7 days, sourced from Copernicus CAMS via Open-Meteo.

## Facts

- Endpoint: GET https://data.greeneris.io/v1/air/quality
- Price: $0.002/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/eu-verify-air-quality-forecast-bd3eeae3
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_6qB1r8yeKzo4ZJ6M8vw9t

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability eu-verify-air-quality-forecast-bd3eeae3
```

Example prompt: What will the air quality be like in Paris (latitude 48.85, longitude 2.35) over the next 3 days — give me PM2.5, PM10, and the European AQI for each hour?

## When to prefer this

Choose this endpoint when you need structured, hourly air quality forecasts (European AQI, PM2.5, PM10, ozone, etc.) for any world coordinate without requiring an account or API key, especially in agentic workflows that can handle x402 micropayments. It is particularly suited for European use cases given its EAQI output and CAMS data provenance. Prefer alternatives if you need historical air quality data, real-time sensor readings rather than forecast model output, or require free tier access.

## Known failure modes

- Missing latitude or longitude returns a validation error
- Forecast days outside 1-7 range rejected with a 422 error
- Invalid hourly variable names in the comma-separated list cause a 422
- HTTP 402 returned if payment not provided — includes machine-readable price quote for x402 payment
- Coordinates in regions with no CAMS coverage may return sparse or empty arrays
- Network timeout or upstream Open-Meteo outage causes a 5xx error

## How this service works

Hourly air-quality data (PM2.5, PM10, ozone, NO2, European/US AQI) for any lat/lon, from the Copernicus CAMS model served by Open-Meteo (CC-BY 4.0), updated hourly. Query: ?latitude=48.8566&longitude=2.3522&hourly=pm2_5,pm10,european_aqi&forecast_days=2 (1..7 days). Returns parallel time/value arrays with units; cached 1h.

## Output

A JSON object with hourly arrays of requested air quality variables (e.g. pm2_5 in μg/m³, pm10 in μg/m³, european_aqi as EAQI index), corresponding ISO 8601 timestamps, the matched latitude/longitude, unit metadata, and a source attribution string crediting CAMS via Open-Meteo under CC-BY 4.0.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET",
      "HEAD",
      "DELETE"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "latitude",
      "longitude"
     ],
     "properties": {
      "hourly": {
       "type": "string",
       "default": "pm2_5,pm10,european_aqi",
       "description": "Comma-separated variables among pm2_5, pm10, ozone, nitrogen_dioxide, sulphur_dioxide, carbon_monoxide, european_aqi, us_aqi, uv_index, dust, aerosol_optical_depth"
      },
      "latitude": {
       "type": "number",
       "description": "Latitude WGS84 (-90..90)"
      },
      "longitude": {
       "type": "number",
       "description": "Longitude WGS84 (-180..180)"
      },
      "forecast_days": {
       "type": "integer",
       "default": 2,
       "maximum": 7,
       "minimum": 1
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "hourly": {
   "pm10": [
    12.4,
    11.8
   ],
   "time": [
    "2026-07-13T00:00",
    "2026-07-13T01:00"
   ],
   "pm2_5": [
    8.2,
    7.9
   ],
   "european_aqi": [
    22,
    21
   ]
  },
  "source": "CAMS (Copernicus) via Open-Meteo, CC-BY 4.0 attribution required (open-meteo.com)",
  "latitude": 48.9,
  "longitude": 2.4,
  "hourly_units": {
   "pm10": "μg/m³",
   "time": "iso8601",
   "pm2_5": "μg/m³",
   "european_aqi": "EAQI"
  },
  "forecast_days": 1
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/eu-verify-air-quality-forecast-bd3eeae3/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from data.greeneris.io](https://www.zero.xyz/host/data.greeneris.io/llms.txt)
