81trust / 100

Air Quality

by eu-verify in Weather & location

x402 APIPassing, checked 45 min ago

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.

GET https://x402-datashop-production.up.railway.app/v1/air/quality

Last 30 days

All checks passedSome failedAll failedNot checked
Uptime
100%
Response time
179 ms typical, 179 ms slowest 5%
Last check
45 min ago
Next check
any minute now

How to call it

# See the payment challenge (nothing is charged)
curl -i -X GET "https://x402-datashop-production.up.railway.app/v1/air/quality?forecast_days=2&hourly=pm2_5%2Cpm10%2Ceuropean_aqi&latitude=48.8566&longitude=2.3522"
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

const client = new x402Client().register(
  "eip155:8453",
  new ExactEvmScheme(privateKeyToAccount(process.env.AGENT_KEY)),
);
const pay = wrapFetchWithPayment(fetch, client);

// Not sure it's safe to pay? Preflight it first for $0.005:
// GET https://toolvet.app/api/v1/check?url=https%3A%2F%2Fx402-datashop-production.up.railway.app%2Fv1%2Fair%2Fquality
const res = await pay("https://x402-datashop-production.up.railway.app/v1/air/quality?forecast_days=2&hourly=pm2_5%2Cpm10%2Ceuropean_aqi&latitude=48.8566&longitude=2.3522");
console.log(await res.json());

Example input

{
  "forecast_days": 2,
  "hourly": "pm2_5,pm10,european_aqi",
  "latitude": 48.8566,
  "longitude": 2.3522
}

Example output

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

Security scan

  • No findings. We scan names, descriptions and tool definitions for hidden instructions and other prompt-injection patterns.

Recent checks

WhenResultHTTPTimePrice
45 min agoPassed402182 ms$0.002
6 h agoPassed402179 ms$0.002