Bitfinder Air Data API
Time-series indoor air quality readings
Time-series indoor air quality readings
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/bitfinder-air-data-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Awair Home & OAuth Developer Air Data API
version: v1
description: The Awair Home & OAuth Developer API (operated by Bitfinder, Inc., d/b/a Awair) gives developers, partners, and hobbyists programmatic access to Awair indoor air quality (IAQ) devices on behalf of Awair users. It exposes the authenticated user profile, the user's registered devices, and time-series air-data readings (Awair Score plus temperature, humidity, CO2, VOC, and PM2.5) at latest, raw, 5-minute-average, and 15-minute-average granularity. Requests are authorized with an OAuth 2.0 access token (or a Developer Console access token) presented as an HTTP Bearer token.
contact:
name: Awair Developer Support
email: developer@getawair.com
url: https://docs.developer.getawair.com/
termsOfService: https://getawair.com/pages/legal
x-provenance:
generated: '2026-07-18'
method: generated
source: https://docs.developer.getawair.com/ ; https://support.getawair.com/hc/en-us/articles/360049982333-Using-Awair-Developer-APIs ; https://python-awair.readthedocs.io/en/latest/python_awair.html
note: Faithful capture of the publicly documented Awair cloud API surface. Awair does not publish an OpenAPI document; endpoints, methods, query parameters, and response fields are transcribed from the official developer docs and support articles. Response schemas are modeled from documented fields and kept minimal (no fabricated properties).
servers:
- url: https://developer-apis.awair.is/v1
description: Awair cloud developer API (production)
security:
- bearerAuth: []
- oauth2: []
tags:
- name: Air Data
description: Time-series indoor air quality readings
paths:
/users/self/devices/{device_type}/{device_id}/air-data/latest:
get:
operationId: getLatestAirData
summary: Get the latest air-data reading
description: Returns the most recent air-data sample for the device.
tags:
- Air Data
parameters:
- $ref: '#/components/parameters/DeviceType'
- $ref: '#/components/parameters/DeviceId'
- $ref: '#/components/parameters/Fahrenheit'
responses:
'200':
description: The latest air-data reading.
content:
application/json:
schema:
$ref: '#/components/schemas/AirDataResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/QuotaExceeded'
/users/self/devices/{device_type}/{device_id}/air-data/raw:
get:
operationId: getRawAirData
summary: Get raw (per-second) air-data
description: Returns raw air-data samples. Maximum queryable window is 1 hour; up to 360 records per request.
tags:
- Air Data
parameters:
- $ref: '#/components/parameters/DeviceType'
- $ref: '#/components/parameters/DeviceId'
- $ref: '#/components/parameters/From'
- $ref: '#/components/parameters/To'
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/Desc'
- $ref: '#/components/parameters/Fahrenheit'
responses:
'200':
description: Raw air-data readings.
content:
application/json:
schema:
$ref: '#/components/schemas/AirDataResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/QuotaExceeded'
/users/self/devices/{device_type}/{device_id}/air-data/5-min-avg:
get:
operationId: get5MinAvgAirData
summary: Get 5-minute-average air-data
description: Returns air-data averaged over 5-minute buckets. Maximum queryable window is 24 hours.
tags:
- Air Data
parameters:
- $ref: '#/components/parameters/DeviceType'
- $ref: '#/components/parameters/DeviceId'
- $ref: '#/components/parameters/From'
- $ref: '#/components/parameters/To'
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/Desc'
- $ref: '#/components/parameters/Fahrenheit'
responses:
'200':
description: 5-minute-average air-data readings.
content:
application/json:
schema:
$ref: '#/components/schemas/AirDataResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/QuotaExceeded'
/users/self/devices/{device_type}/{device_id}/air-data/15-min-avg:
get:
operationId: get15MinAvgAirData
summary: Get 15-minute-average air-data
description: Returns air-data averaged over 15-minute buckets. Maximum queryable window is 7 days.
tags:
- Air Data
parameters:
- $ref: '#/components/parameters/DeviceType'
- $ref: '#/components/parameters/DeviceId'
- $ref: '#/components/parameters/From'
- $ref: '#/components/parameters/To'
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/Desc'
- $ref: '#/components/parameters/Fahrenheit'
responses:
'200':
description: 15-minute-average air-data readings.
content:
application/json:
schema:
$ref: '#/components/schemas/AirDataResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/QuotaExceeded'
components:
responses:
Unauthorized:
description: Missing or invalid access token.
Forbidden:
description: The token is not permitted to access this device or resource.
NotFound:
description: Device or resource not found.
QuotaExceeded:
description: Per-device daily quota for this endpoint/tier has been exceeded.
schemas:
SensorReading:
type: object
properties:
comp:
type: string
description: Component name (temp, humid, co2, voc, pm25).
value:
type: number
AirDataResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/AirDataPoint'
AirDataPoint:
type: object
description: A single air-data sample.
properties:
timestamp:
type: string
format: date-time
score:
type: number
description: Awair Score (0-100).
sensors:
type: array
items:
$ref: '#/components/schemas/SensorReading'
indices:
type: array
items:
$ref: '#/components/schemas/SensorReading'
parameters:
DeviceType:
name: device_type
in: path
required: true
description: Device model type (e.g. awair-element, awair-omni, awair-r2).
schema:
type: string
Limit:
name: limit
in: query
required: false
description: Maximum number of records to return (raw max 360).
schema:
type: integer
Desc:
name: desc
in: query
required: false
description: Sort descending by timestamp (default true).
schema:
type: boolean
default: true
DeviceId:
name: device_id
in: path
required: true
description: Numeric device identifier.
schema:
type: integer
Fahrenheit:
name: fahrenheit
in: query
required: false
description: Return temperature in Fahrenheit instead of Celsius.
schema:
type: boolean
default: false
To:
name: to
in: query
required: false
description: End of the time window (ISO 8601).
schema:
type: string
format: date-time
From:
name: from
in: query
required: false
description: Start of the time window (ISO 8601).
schema:
type: string
format: date-time
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: Awair Developer Console access token or OAuth 2.0 access token.
oauth2:
type: oauth2
description: OAuth 2.0 authorization-code flow for third-party access to Awair user data.
flows:
authorizationCode:
authorizationUrl: https://oauth2.awair.is/v2/authorize
tokenUrl: https://oauth2.awair.is/v2/token
scopes: {}