Airthings Webhooks API
The Webhooks API from Airthings — 2 operation(s) for webhooks.
The Webhooks API from Airthings — 2 operation(s) for webhooks.
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/airthings:airthings-webhooks-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: Airthings Webhooks API
version: v1
contact:
name: Airthings Support
email: support@airthings.com
servers:
- url: https://ext-api.airthings.com
security:
- AirthingsAccounts: []
tags:
- name: Webhooks
paths:
/v1/webhooks:
parameters:
- name: organizationId
in: query
schema:
type: string
format: uuid
description: Use `accountId`
required: false
deprecated: true
- name: userGroupId
in: query
schema:
type: string
format: uuid
description: Use `accountId`
required: false
deprecated: true
- name: accountId
in: query
schema:
type: string
format: uuid
required: true
deprecated: false
get:
tags:
- Webhooks
summary: Webhook list
description: Get all added webhooks
parameters: []
responses:
'200':
description: List of webhooks
content:
application/json:
schema:
$ref: '#/components/schemas/GetWebhooksResponse-enriched'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
deprecated: false
security:
- AirthingsAccounts:
- read:device
- write:device
operationId: getV1Webhooks
x-operation-id-source: derived
post:
tags:
- Webhooks
summary: Add Webhook
description: Add a new webhook
parameters: []
requestBody:
description: Add webhook request
content:
application/json:
schema:
$ref: '#/components/schemas/AddHookRequest-enriched'
required: true
responses:
'200':
description: The webhook
content:
application/json:
schema:
$ref: '#/components/schemas/HookResponse-enriched'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
deprecated: false
security:
- AirthingsAccounts:
- read:device
- write:device
operationId: postV1Webhooks
x-operation-id-source: derived
/v1/webhooks/{hookId}:
parameters:
- name: organizationId
in: query
schema:
type: string
format: uuid
description: Use `accountId`
required: false
deprecated: true
- name: userGroupId
in: query
schema:
type: string
format: uuid
description: Use `accountId`
required: false
deprecated: true
- name: accountId
in: query
schema:
type: string
format: uuid
required: true
deprecated: false
- name: hookId
in: path
schema:
type: string
format: uuid
required: true
deprecated: false
delete:
tags:
- Webhooks
summary: Delete Webhook
description: Delete a webhook
parameters: []
responses:
'204':
description: Webhook successfully deleted
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
deprecated: false
security:
- AirthingsAccounts:
- write:device
operationId: deleteV1WebhooksByHookId
x-operation-id-source: derived
patch:
tags:
- Webhooks
summary: Edit Webhook
description: 'Edit a webhook in an organization. Only locations is supported at this time.
Value type of this endpoint is currently a list of location IDs that you wish to
perform the operation on.'
parameters: []
requestBody:
description: Edit webhook request
content:
application/json:
schema:
$ref: '#/components/schemas/PatchWebhookRequest'
required: true
responses:
'200':
description: The webhook
content:
application/json:
schema:
$ref: '#/components/schemas/HookResponse-enriched'
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
deprecated: false
security:
- AirthingsAccounts:
- write:device
operationId: patchV1WebhooksByHookId
x-operation-id-source: derived
components:
schemas:
GetWebhooksResponse-enriched:
type: object
properties:
webhooks:
items:
$ref: '#/components/schemas/HookResponse-enriched'
description: List of webhooks
type: array
required:
- webhooks
DeviceType:
type: string
enum:
- WAVE
- WAVE_GEN2
- WAVE_MINI
- WAVE_PLUS
- WAVE_CO2
- VIEW_PLUS
- VIEW_PLUS_BUSINESS
- VIEW_POLLUTION
- VIEW_RADON
- VIEW_CO2
- SPACE_CO2_MINI
- SPACE_RADON
- WAVE_NANO
- WAVE_ENHANCE
- HUB
- HOME
- HOME_COLIBRI
- PRO
- BREEZOMETER_WEATHER
- BACNET
- AP_1
- RAVEN_RADON
- UNKNOWN
GetDeviceDetailedResponse:
type: object
properties:
deviceType:
$ref: '#/components/schemas/DeviceType'
id:
type: string
maxLength: 10
minLength: 10
location:
oneOf:
- type: 'null'
- $ref: '#/components/schemas/LocationSimpleResponse'
productName:
type: string
segment:
oneOf:
- type: 'null'
- $ref: '#/components/schemas/SegmentSimpleResponse'
sensors:
items:
type: string
enum:
- radonShortTermAvg
- radonLongTermAvg
- hctsbk
- hctsrn222l
- hctsrn222h
- hctssa
- hctspo21xl
- hctspo21xh
- hctscomparator
- hctsprocessed
- temp
- outdoorTemp
- humidity
- outdoorHumidity
- co2
- voc
- pressure
- outdoorPressure
- pressureDifference
- light
- lux
- batteryPercentage
- batteryVoltage
- orientation
- pm1
- pm25
- pm10
- mold
- staleAir
- transmissionEfficiency
- virusSurvivalRate
- virusRisk
- windSpeed
- windDirection
- windGust
- dewPoint
- cloudCover
- visibility
- precipitation_probability
- total_precipitation
- outdoorWeather
- hourlyRadonStandardDeviation
- hourlyRadon
- historicVentilationConfidence
- daytimeBaseline
- daytimePeak
- nightBaseline
- historicVentilation
- ventilationRunningConfidence
- occupantsUpper
- occupantsLower
- presence
- occupants
- relativeOccupants
- ventilationAmount
- historicVentilationRunning
- ventilationRunning
- ventilationAmountRelative
- airExchangeRateUpper
- airExchangeRateLower
- airExchangeRate
- sla
- bacnet
type: array
required:
- deviceType
- id
- productName
- sensors
PatchWebhookAction:
type: string
enum:
- ADD
- REMOVE
AddHookRequest-enriched:
type: object
properties:
active:
type: boolean
devices:
items:
type: string
maxLength: 10
minLength: 10
deprecated: true
description: List of device serial numbers to subscribe to (deprecated, use locations instead)
type: array
eventTypes:
oneOf:
- type: 'null'
- items:
type: string
type: array
headers:
oneOf:
- type: 'null'
- additionalProperties:
type: string
type: object
labels:
oneOf:
- type: 'null'
- additionalProperties:
type: string
type: object
locations:
items:
type: string
format: uuid
description: List of location IDs to subscribe to (needs to be empty if subscribedToAll is set true)
type: array
name:
type: string
sensorUnits:
$ref: '#/components/schemas/HookSensorUnits'
subscribedToAll:
type: boolean
description: Subscribe to all devices in all locations, including devices and locations that are added in the future
url:
type: string
required:
- name
- url
Code:
type: string
enum:
- invalid_request
- invalid_request_clients_limit_exceeded
- access_denied
- valid_subscription_required
- device_not_supported
- invalid_parameter
- not_found
- internal_server_error
- unable_to_register_device
- location_not_found
- no_access_to_resource
- missing_location_properties_for_report
- radio_region_is_not_supported
- max_number_of_devices_reached
- unable_to_create_location
- unable_to_update_space
HookSensorUnits:
type: object
format: string
properties:
radonUnit:
type: string
enum:
- pci
- bq
tempUnit:
type: string
enum:
- c
- f
pressureUnit:
type: string
enum:
- hpa
- inhg
vocUnit:
type: string
enum:
- ppb
- mgpc
PatchLocation:
type: object
properties:
op:
$ref: '#/components/schemas/PatchWebhookAction'
path:
$ref: '#/components/schemas/PatchWebhookPath'
value:
oneOf:
- type: 'null'
- items:
type: string
format: uuid
type: array
required:
- op
- path
LocationResponse:
type: object
properties:
id:
type: string
format: uuid
labels:
additionalProperties:
type: string
type: object
name:
type: string
required:
- id
- labels
- name
ErrorResponse:
type: object
properties:
error:
$ref: '#/components/schemas/Code'
error_code:
oneOf:
- type: 'null'
- type: number
format: int32
error_description:
type: string
required:
- error
- error_description
HookResponse-enriched:
type: object
properties:
active:
type: boolean
devices:
items:
$ref: '#/components/schemas/GetDeviceDetailedResponse'
deprecated: true
description: List of devices the webhook is subscribed to (deprecated, use locations instead)
type: array
eventTypes:
items:
type: string
type: array
headers:
additionalProperties:
type: string
type: object
id:
type: string
format: uuid
labels:
additionalProperties:
type: string
type: object
locations:
items:
$ref: '#/components/schemas/LocationResponse'
description: List of locations the webhook is subscribed to
type: array
mostRecentEvent:
oneOf:
- type: 'null'
- $ref: '#/components/schemas/HookEvent'
name:
type: string
sensorUnits:
$ref: '#/components/schemas/HookSensorUnits'
subscribedToAll:
type: boolean
description: Webhook subscribes to all devices in all locations, including devices and locations that are added in the future
url:
type: string
required:
- active
- devices
- eventTypes
- headers
- id
- labels
- locations
- name
- sensorUnits
- subscribedToAll
- url
PatchWebhookPath:
type: string
enum:
- locations
LocationSimpleResponse:
type: object
properties:
id:
type: string
format: uuid
name:
type: string
required:
- id
- name
PatchWebhookRequest:
type: object
properties:
operations:
items:
$ref: '#/components/schemas/PatchLocation'
type: array
required:
- operations
HookEvent:
type: object
properties:
completedAt:
oneOf:
- type: 'null'
- type: string
format: date-time
correlationId:
type: string
createdAt:
oneOf:
- type: 'null'
- type: string
format: date-time
hookId:
type: string
format: uuid
statusCode:
oneOf:
- type: 'null'
- type: number
format: int32
updatedAt:
oneOf:
- type: 'null'
- type: string
format: date-time
url:
type: string
required:
- correlationId
- hookId
- url
SegmentSimpleResponse:
type: object
properties:
active:
type: boolean
id:
type: string
format: uuid
name:
type: string
spaceId:
oneOf:
- type: 'null'
- type: string
format: uuid
started:
type: string
format: date-time
required:
- active
- id
- name
- started
securitySchemes:
AirthingsAccounts:
flows:
authorizationCode:
authorizationUrl: https://accounts.airthings.com/authorize
tokenUrl: https://accounts-api.airthings.com/v1/token
scopes:
read:device: Allowing a user to read data from devices in their account
write:device: Allowing a user to manage devices within their account
clientCredentials:
tokenUrl: https://accounts-api.airthings.com/v1/token
scopes:
read:device: Allowing a user to read data from devices in their account
write:device: Allowing a user to manage devices within their account
type: oauth2
x-provenance:
method: searched
source: https://developer-business.airthings.com/reference
harvested: '2026-10-28'
tool: harvest-readme-openapi.py
note: Assembled verbatim from the OpenAPI definition ReadMe embeds in each operation page of the provider's developer portal; paths and components merged by API title, nothing authored.
assembled_from:
- https://developer-business.airthings.com/reference/deletev1webhookshookid.md
- https://developer-business.airthings.com/reference/getv1accounts.md
- https://developer-business.airthings.com/reference/getv1devices.md
- https://developer-business.airthings.com/reference/getv1devicesserialnumber.md
- https://developer-business.airthings.com/reference/getv1devicesserialnumberbattery.md
- https://developer-business.airthings.com/reference/getv1devicesserialnumberhourlyradonsamples.md
- https://developer-business.airthings.com/reference/getv1devicesserialnumberlatestbattery.md
- https://developer-business.airthings.com/reference/getv1devicesserialnumberlatestsamples.md
- https://developer-business.airthings.com/reference/getv1devicesserialnumbermoldsamples.md
- https://developer-business.airthings.com/reference/getv1devicesserialnumberoccupancysamples.md
- https://developer-business.airthings.com/reference/getv1devicesserialnumbersamples.md
- https://developer-business.airthings.com/reference/getv1devicesserialnumberthresholdbreaches.md
- https://developer-business.airthings.com/reference/getv1devicesserialnumberventilationsamples.md
- https://developer-business.airthings.com/reference/getv1devicesserialnumbervirusrisksamples.md
- https://developer-business.airthings.com/reference/getv1locations.md
- https://developer-business.airthings.com/reference/getv1locationslocationid.md
- https://developer-business.airthings.com/reference/getv1locationslocationidlatestsamples.md
- https://developer-business.airthings.com/reference/getv1organizations.md
- https://developer-business.airthings.com/reference/getv1segments.md
- https://developer-business.airthings.com/reference/getv1segmentssegmentid.md
- https://developer-business.airthings.com/reference/getv1segmentssegmentidhourlyradonsamples.md
- https://developer-business.airthings.com/reference/getv1segmentssegmentidmoldsamples.md
- https://developer-business.airthings.com/reference/getv1segmentssegmentidoccupancysamples.md
- https://developer-business.airthings.com/reference/getv1segmentssegmentidsamples.md
- https://developer-business.airthings.com/reference/getv1segmentssegmentidventilationsamples.md
- https://developer-business.airthings.com/reference/getv1segmentssegmentidvirusrisksamples.md
- https://developer-business.airthings.com/reference/getv1thresholds.md
- https://developer-business.airthings.com/reference/getv1webhooks.md
- https://developer-business.airthings.com/reference/patch_v1-spaces.md
- https://developer-business.airthings.com/reference/patchv1devices.md
- https://developer-business.airthings.com/reference/patchv1deviceslabels.md
- https://developer-business.airthings.com/reference/patchv1webhookshookid.md
- https://developer-business.airthings.com/reference/postv1locations.md
- https://developer-business.airthings.com/reference/postv1locationslocationiddevices.md
- https://developer-business.airthings.com/reference/postv1webhooks.md
merge:
pages: 35
deduped: 161
conflicts_kept_first: 0