> ## Documentation Index
> Fetch the complete documentation index at: https://aisa.one/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Air Quality

> PM2.5/PM10, pollutants, dust, UV, European & US AQI and pollen forecast.

Fetch an air-quality forecast (CAMS European or global model) for any coordinate. Request pollutants and indices with `hourly` and/or `current` variable lists — e.g. `pm10`, `pm2_5`, `carbon_monoxide`, `nitrogen_dioxide`, `ozone`, `dust`, `uv_index`, `european_aqi`, `us_aqi` — plus pollen species such as `birch_pollen` or `grass_pollen`. Control span with `forecast_days` (up to 7) and `past_days`, or pin `domains` to `cams_europe` / `cams_global`.

The response returns grid-cell metadata and an `hourly` (and optional `current`) block with a `time` array, one array per variable, and a matching `*_units` object.

Example: `GET /apis/v1/openmeteo/air-quality?latitude=52.52&longitude=13.41&hourly=pm10,pm2_5,european_aqi&forecast_days=5&timezone=Europe/Berlin`.

**Billing: \$0.00015 per call (150 micros USD), metered per request.** All Open-Meteo endpoints are GET pass-through — authenticate with your AIsa API key as a bearer token (the same key used across every AIsa `/apis/*` endpoint); AIsa handles provider access.


## OpenAPI

````yaml openapi/openmeteo.json GET /openmeteo/air-quality
openapi: 3.0.3
info:
  title: Open-Meteo Weather API
  version: 1.0.0
  description: >-
    Open-Meteo weather data routed through the AIsa gateway: forecast,
    historical, air quality, marine, ensemble, seasonal, climate, flood,
    geocoding and elevation. All endpoints are GET pass-through to Open-Meteo
    (open-meteo.com); AIsa handles provider access. Flat pricing of $0.00015 per
    call (150 micros USD), metered per request.
servers:
  - url: https://api.aisa.one/apis/v1
security:
  - BearerAuth: []
paths:
  /openmeteo/air-quality:
    get:
      summary: Air Quality
      description: >-
        Air quality forecast (CAMS): particulate matter, gaseous pollutants,
        dust, UV index, European & US AQI, and pollen. GET pass-through to
        `https://air-quality-api.open-meteo.com/v1/air-quality`.


        Billed $0.00015 per call, metered per request.
      operationId: get_openmeteo_air_quality
      parameters:
        - name: latitude
          in: query
          required: true
          description: >-
            WGS84 latitude of the location. Multiple coordinates can be
            comma-separated.
          schema:
            type: string
            example: '52.52'
        - name: longitude
          in: query
          required: true
          description: >-
            WGS84 longitude of the location (negative for the Americas).
            Multiple coordinates can be comma-separated.
          schema:
            type: string
            example: '13.41'
        - name: hourly
          in: query
          required: false
          description: >-
            Comma-separated list of hourly variables to return. Common values:
            `pm10`, `pm2_5`, `carbon_monoxide`, `nitrogen_dioxide`,
            `sulphur_dioxide`, `ozone`, `aerosol_optical_depth`, `dust`,
            `uv_index`, `ammonia`, `european_aqi`, `us_aqi`, and pollen
            (`alder_pollen`, `birch_pollen`, `grass_pollen`, `mugwort_pollen`,
            `olive_pollen`, `ragweed_pollen`).
          schema:
            type: string
            example: pm10,pm2_5,european_aqi
        - name: current
          in: query
          required: false
          description: >-
            Comma-separated list of current-condition variables to return. Same
            variable set as `hourly`.
          schema:
            type: string
            example: european_aqi,pm2_5
        - name: domains
          in: query
          required: false
          description: Model domain. Default `auto`.
          schema:
            type: string
            enum:
              - auto
              - cams_europe
              - cams_global
            default: auto
        - name: forecast_days
          in: query
          required: false
          description: Number of forecast days to return (0-7). Default 5.
          schema:
            type: integer
            default: 5
            example: 7
        - name: past_days
          in: query
          required: false
          description: Number of past days to include (0-92). Default 0.
          schema:
            type: integer
            default: 0
        - name: forecast_hours
          in: query
          required: false
          description: Limit forecast to a given number of hours.
          schema:
            type: integer
        - name: past_hours
          in: query
          required: false
          description: Include a given number of past hours.
          schema:
            type: integer
        - name: start_date
          in: query
          required: false
          description: Start of the interval, `yyyy-mm-dd` (ISO 8601).
          schema:
            type: string
            example: '2024-01-01'
            format: date
        - name: end_date
          in: query
          required: false
          description: End of the interval, `yyyy-mm-dd` (ISO 8601).
          schema:
            type: string
            example: '2024-01-07'
            format: date
        - name: timeformat
          in: query
          required: false
          description: Time output format. Default `iso8601`.
          schema:
            type: string
            enum:
              - iso8601
              - unixtime
            default: iso8601
        - name: timezone
          in: query
          required: false
          description: >-
            IANA time zone name (e.g. `Europe/Berlin`) or `auto` to resolve from
            coordinates. Defaults to `GMT`.
          schema:
            type: string
            example: Europe/Berlin
        - name: cell_selection
          in: query
          required: false
          description: Grid-cell preference for the coordinate. Default `nearest`.
          schema:
            type: string
            enum:
              - land
              - sea
              - nearest
            default: nearest
      responses:
        '200':
          description: Air-quality forecast for the coordinate.
          content:
            application/json:
              schema:
                type: object
              example:
                latitude: 52.5
                longitude: 13.4
                generationtime_ms: 0.3
                utc_offset_seconds: 0
                timezone: GMT
                elevation: 38
                hourly_units:
                  time: iso8601
                  pm10: μg/m³
                  pm2_5: μg/m³
                  european_aqi: EAQI
                hourly:
                  time:
                    - 2024-01-01T00:00
                  pm10:
                    - 12.4
                  pm2_5:
                    - 8.1
                  european_aqi:
                    - 21
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: AISA API Key

````