---
title: "SIATA Air Quality"
method: POST
path: "/co/siata-geoportal/air-quality/v1"
tags: ["Colombia", "SIATA"]
---

# SIATA Air Quality

`POST /co/siata-geoportal/air-quality/v1`

## Request

- Base URL: `https://api.croma.run`
- URL: `https://api.croma.run/co/siata-geoportal/air-quality/v1`
- Auth: HTTP bearer

Current air quality at SIATA's reference stations in the Aburrá Valley (Medellín metropolitan area): 24-hour PM2.5 and PM10, 8-hour ozone and CO, 1-hour NO2 and SO2, each as a concentration with Colombia's numeric air-quality index (ICA) and its category, plus the pollutant driving each station's index. All inputs optional: an empty body returns every station; pass `latitude` + `longitude` (with optional `radius_km`, default 10) for nearby stations nearest first, or `municipality` / `station_code` to narrow. Coverage is the Medellín metro area only.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `latitude` number: Optional latitude. With `longitude`, returns only stations near that point.
  - `longitude` number: Optional longitude. With `latitude`, returns only stations near that point.
  - `radius_km` number: Radius in km around `latitude`/`longitude` to include stations. Defaults to 10.
  - `municipality` string: Optional municipality filter, e.g. `Medellín` or `Itagüí`. Accents and case are ignored.
  - `station_code` string: Optional station code, e.g. `520`. Returns only that station.

## Response `200`

Successful response

- SiataGeoportalAirQualityResponse
  - `data` SiataGeoportalAirQualityData, required
    - `stations` object[], required
      - `station_code` string, nullable, required
      - `station` string, required
      - `municipality` string, nullable, required
      - `latitude` number, nullable, required
      - `longitude` number, nullable, required
      - `updated_at` string, nullable, required: ISO timestamp of the station's last update at the source.
      - `distance_km` number, nullable, required: Great-circle distance in km from the query point; null when no location filter was applied.
      - `station_short` string, nullable, required: The source's short station id, e.g. `BAR-TORR`.
      - `dominant_pollutant` string, nullable, required: The pollutant with the highest index at the station.
      - `dominant_index` number, nullable, required
      - `pm25` object, nullable, required: 24-hour PM2.5.
        - `concentration` number, nullable, required
        - `unit` 'ug/m3' | 'ppb', required
        - `index` number, nullable, required: Colombia's air-quality index (ICA) for the reading.
        - `category` string, nullable, required: The ICA category, e.g. `Buena`, `Moderada`; null when there is no index.
        - `window_start` string, nullable, required
        - `window_end` string, nullable, required
      - `pm10` object, nullable, required: 24-hour PM10.
        - `concentration` number, nullable, required
        - `unit` 'ug/m3' | 'ppb', required
        - `index` number, nullable, required: Colombia's air-quality index (ICA) for the reading.
        - `category` string, nullable, required: The ICA category, e.g. `Buena`, `Moderada`; null when there is no index.
        - `window_start` string, nullable, required
        - `window_end` string, nullable, required
      - `o3_8h` object, nullable, required: 8-hour ozone.
        - `concentration` number, nullable, required
        - `unit` 'ug/m3' | 'ppb', required
        - `index` number, nullable, required: Colombia's air-quality index (ICA) for the reading.
        - `category` string, nullable, required: The ICA category, e.g. `Buena`, `Moderada`; null when there is no index.
        - `window_start` string, nullable, required
        - `window_end` string, nullable, required
      - `no2_1h` object, nullable, required: 1-hour nitrogen dioxide.
        - `concentration` number, nullable, required
        - `unit` 'ug/m3' | 'ppb', required
        - `index` number, nullable, required: Colombia's air-quality index (ICA) for the reading.
        - `category` string, nullable, required: The ICA category, e.g. `Buena`, `Moderada`; null when there is no index.
        - `window_start` string, nullable, required
        - `window_end` string, nullable, required
      - `so2_1h` object, nullable, required: 1-hour sulphur dioxide.
        - `concentration` number, nullable, required
        - `unit` 'ug/m3' | 'ppb', required
        - `index` number, nullable, required: Colombia's air-quality index (ICA) for the reading.
        - `category` string, nullable, required: The ICA category, e.g. `Buena`, `Moderada`; null when there is no index.
        - `window_start` string, nullable, required
        - `window_end` string, nullable, required
      - `co_8h` object, nullable, required: 8-hour carbon monoxide.
        - `concentration` number, nullable, required
        - `unit` 'ug/m3' | 'ppb', required
        - `index` number, nullable, required: Colombia's air-quality index (ICA) for the reading.
        - `category` string, nullable, required: The ICA category, e.g. `Buena`, `Moderada`; null when there is no index.
        - `window_start` string, nullable, required
        - `window_end` string, nullable, required

## Other responses

- `400`: Invalid request body
- `401`: Missing or invalid API key
- `429`: Rate limit exceeded
- `500`: Internal error
- `502`: Upstream source returned an error

---

[API](https://skmtc.dev/usecroma/apis/croma-marketplace-api.md) · [All operations](https://skmtc.dev/usecroma/apis/croma-marketplace-api/llms.txt) · [OpenAPI document](https://skmtc.dev/usecroma/apis/croma-marketplace-api/revisions/df016cdb29d7?raw)
