API reference
Readings
The history of one sensor — raw, 5-minute, hourly or daily — and the mean of a group of sensors.
Readings of a sensor
GEThttps://api.atmy.ai/v1/sensors/{id}/readings
Raw readings or 5-minute means (interval=5min) of the last 31 days, up to 7 days a request, or hourly means (interval=hour) of the last 366 days, up to 92 days a request, or daily means (interval=day) with the check of each day, up to a year a request
Path parameters
id string required
Sensor id, as in the list of sensors.
Query parameters
interval string optional
raw, 5min, hour or day.
Default: raw
from string optional
Start, ISO 8601 or Unix seconds, UTC.
to string optional
End, ISO 8601 or Unix seconds, UTC; by default now.
curl "https://api.atmy.ai/v1/sensors/41504/readings?interval=day"const response = await fetch("https://api.atmy.ai/v1/sensors/41504/readings?interval=day");
const data = await response.json();import requests
data = requests.get("https://api.atmy.ai/v1/sensors/41504/readings?interval=day").json(){
"api_version": "2.0",
"sensor_id": 41504,
"interval": "day",
"from": "2026-10-24T00:00:00+00:00",
"to": "2026-10-26T00:00:00+00:00",
"readings": [
{
"time": "2026-10-24T00:00:00+00:00",
"readings": 96,
"pm1": 21.26,
"pm25": 32.51,
"pm10": 36.47,
"temperature_c": 17.01,
"humidity_percent": 44.66,
"quality": {
"status": "good",
"pm_eligible": true,
"rating": 10
}
},
{
"time": "2026-10-25T00:00:00+00:00",
"readings": 96,
"pm1": 35.5,
"pm25": 59.98,
"pm10": 71.05,
"temperature_c": 14.87,
"humidity_percent": 55.7,
"quality": {
"status": "good",
"pm_eligible": true,
"rating": 10
}
}
],
"attribution": "Sensor data: Atmy (atmy.ai), from the networks named in each sensor's \"network\", under that network's license.",
"terms": "https://atmy.ai/legal/data/"
}Mean of a group of sensors
GEThttps://api.atmy.ai/v1/sensors/readings
The mean of up to 100 sensors (ids=1,2,3) per 5 minutes or per hour, each sensor counted once, by day (interval=day) up to 92 days a request
Query parameters
ids string required
Sensor ids separated by commas, from 1 to 100.
interval string optional
5min, hour or day.
Default: hour
from string optional
Start, ISO 8601 or Unix seconds, UTC.
to string optional
End, ISO 8601 or Unix seconds, UTC; by default now.
curl "https://api.atmy.ai/v1/sensors/readings?ids=41504,41752,43057&interval=hour"const response = await fetch("https://api.atmy.ai/v1/sensors/readings?ids=41504,41752,43057&interval=hour");
const data = await response.json();import requests
data = requests.get("https://api.atmy.ai/v1/sensors/readings?ids=41504,41752,43057&interval=hour").json(){
"api_version": "2.0",
"sensor_ids": [
41504,
41752,
43057
],
"interval": "hour",
"from": "2026-10-26T00:00:00+00:00",
"to": "2026-10-26T02:00:00+00:00",
"readings": [
{
"time": "2026-10-26T00:00:00+00:00",
"sensors": 3,
"readings": 12,
"pm1": 41.04,
"pm25": 68.88,
"pm10": 81.14,
"temperature_c": 15.53,
"humidity_percent": 54.33,
"tvoc": 279.55
},
{
"time": "2026-10-26T01:00:00+00:00",
"sensors": 3,
"readings": 12,
"pm1": 37.93,
"pm25": 62.65,
"pm10": 76.3,
"temperature_c": 15.55,
"humidity_percent": 55.33,
"tvoc": 178.2
}
],
"attribution": "Sensor data: Atmy (atmy.ai), from the networks named in each sensor's \"network\", under that network's license.",
"terms": "https://atmy.ai/legal/data/"
}