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.
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:
schemas:
AirDataResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/AirDataPoint'
SensorReading:
type: object
properties:
comp:
type: string
description: Component name (temp, humid, co2, voc, pm25).
value:
type: number
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:
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
DeviceId:
name: device_id
in: path
required: true
description: Numeric device identifier.
schema:
type: integer
From:
name: from
in: query
required: false
description: Start of the time window (ISO 8601).
schema:
type: string
format: date-time
Desc:
name: desc
in: query
required: false
description: Sort descending by timestamp (default true).
schema:
type: boolean
default: true
Limit:
name: limit
in: query
required: false
description: Maximum number of records to return (raw max 360).
schema:
type: integer
DeviceType:
name: device_type
in: path
required: true
description: Device model type (e.g. awair-element, awair-omni, awair-r2).
schema:
type: string
responses:
Unauthorized:
description: Missing or invalid access token.
QuotaExceeded:
description: Per-device daily quota for this endpoint/tier has been exceeded.
Forbidden:
description: The token is not permitted to access this device or resource.
NotFound:
description: Device or resource not found.
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: {}