> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.kodelabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Airthings

> Connect Airthings to KODE OS for indoor environmental quality, occupancy data

> Connect Airthings to KODE OS for indoor environmental quality, occupancy data integration

## Overview

Use this integration to connect Airthings to KODE OS. You can discover devices and points, collect indoor air quality metrics with hybrid REST and webhook collection, and align sensor readings with occupancy context in Data Sources.

| Property            | Value                                   |
| ------------------- | --------------------------------------- |
| **System Type**     | Indoor Environmental Quality, Occupancy |
| **Communication**   | REST + Webhook                          |
| **Collection**      | Hybrid (Pull + Push)                    |
| **Collection Mode** | SNAPSHOT                                |

## Supported Capabilities

* Discover Devices & Points
* Collect Sensor Data
* Receive Webhook Data
* Collect Historical Data

## Prerequisites

To integrate with the Airthings API, ensure you have the following details:

* Airthings URL: [https://ext-api.airthings.com](https://ext-api.airthings.com)
* Airthings Auth URL: [https://accounts-api.airthings.com](https://accounts-api.airthings.com)
* Account ID: Found on the Overview Page in the Airthings Developer Portal.
* Client ID: Generated when registering your application in the Airthings Developer Portal.
* Client Secret: Generated along with the Client ID in the Airthings Developer Portal.

### Vendor Onboarding References

Use these official vendor resources to verify API access, credentials, and permission prerequisites:

* [Airthings API getting started](https://developer.airthings.com/docs/api/getting-started)
* [Airthings OAuth authorization](https://developer-business.airthings.com/docs/api-authorization)

## Generate API Credentials

1. Log in to the Airthings developer portal or admin console
2. Navigate to the API or developer settings section
3. Create a new API application or client
4. Note the **Client ID** and **Client Secret** -- you will need these when configuring the connector in KODE OS
5. Note the **Auth URL** for OAuth token exchange

## Configure Webhook

Overview

* Copy this URL for the next steps.
* Fill in the required fields:
* HTTP Header Key: Enter Authorization.
* HTTP Header Value: (You will input the authentication key once it's provided by KODE Team.)

## Configure Connector in KODE OS

1. Navigate to **Data Sources** in your building
2. Click **API Catalog** and search for **Airthings**
3. Click **+ Add Datasource**
4. Fill in the fields below and complete the three-page setup flow

| Field             | Required | Type     | Description                                                |
| ----------------- | -------- | -------- | ---------------------------------------------------------- |
| **URL**           | Yes      | text     | The base URL or IP address of the external system          |
| **Auth URL**      | Yes      | text     | The OAuth authorization URL for token exchange             |
| **Account ID**    | Yes      | password | The account or organization ID from the vendor platform    |
| **Client ID**     | Yes      | password | The OAuth client ID from the vendor's developer portal     |
| **Client Secret** | Yes      | password | The OAuth client secret from the vendor's developer portal |

## Discover Devices and Points

After configuring the connector, click **Discover** on the connector detail page. KODE OS will query the Airthings system and return a list of available devices and their data points.

Review the discovered items and select the devices you want to register in KODE OS.

For more details on the discovery process, see the [Discovery guide](/products/integrations/capabilities/discovery).

## Devices and Points

When you discover devices from Airthings, KODE OS maps them to the following device types:

* **Air Quality Sensor** (`airQuality`)

| Point               | Display Name           | Unit  | Ontology Field                        |
| ------------------- | ---------------------- | ----- | ------------------------------------- |
| `temp`              | Temperature            | °C    | `zone_air_temperature_sensor`         |
| `humidity`          | Humidity               | %RH   | `zone_air_humidity_sensor`            |
| `co2`               | CO2                    | ppm   | `co2_concentration_detection_sensor`  |
| `tvoc`              | Total VOC              | ppb   | `voc_concentration_detection_sensor`  |
| `pm1`               | PM1                    | µg/m³ | --                                    |
| `pm25`              | PM2.5                  | µg/m³ | `pm25_concentration_detection_sensor` |
| `pm10`              | PM10                   | µg/m³ | `pm10_concentration_detection_sensor` |
| `pressure`          | Barometric Pressure    | hPa   | --                                    |
| `lux`               | Light Level            | lux   | `illuminance_sensor`                  |
| `light`             | Light Level (%)        | %     | --                                    |
| `hourlyRadon`       | Radon (Hourly)         | pCi/L | --                                    |
| `radonShortTermAvg` | Radon (Short-term Avg) | pCi/L | --                                    |
| `soundLevelA`       | Sound Level            | dB(A) | `noise_sensor`                        |
| `airflow`           | Airflow                | m³/h  | --                                    |
| `airExchangeRate`   | Air Exchange Rate      | ACH   | --                                    |
| `rssi`              | Signal Strength        | dBm   | --                                    |
| `batteryPercentage` | Battery                | %     | --                                    |

## What Data You Get

### Point History

Time-series sensor readings such as temperature, humidity, CO2, occupancy counts, energy consumption, light levels, and other measurable values from physical sensors

### Polling Schedule

* **Point History** -- Default polling: 1 hours (min: 1 hours, max: 3 hours)

For more details on collection modes, see the [Data Collection guide](/products/integrations/capabilities/data-collection).

## Use Cases

Once connected, this integration enables you to:

* Monitor air quality metrics (CO2, VOC, humidity, temperature) across all occupied spaces
* Generate compliance reports for indoor environmental quality standards
* Trigger ventilation adjustments when air quality thresholds are exceeded
* Track real-time space utilization rates across floors and zones

## Troubleshooting

<AccordionGroup>
  <Accordion title="Authentication or connection error">
    Verify that the credentials are correct and have not expired. Check that the URL is reachable from the KODE OS environment. Ensure the Client ID and Client Secret match the values from the Airthings developer portal.
  </Accordion>

  <Accordion title="Webhook data not arriving">
    Verify the webhook URL is correctly registered in the Airthings platform. Check that the authentication header matches the value from the KODE OS connector detail page. Ensure the Airthings system can reach the KODE OS webhook endpoint over the network.
  </Accordion>

  <Accordion title="Discovery returns no devices">
    Verify the connector credentials have sufficient permissions in the Airthings system to list devices. Run a test connection first to confirm connectivity. Some systems require specific API scopes or roles for device enumeration.
  </Accordion>

  <Accordion title="Data collection stops or gaps appear">
    Check the connector status on the Data Sources page. If the status shows an error, review the error logs on the connector detail page. Common causes include expired credentials, network changes, or rate limiting by the Airthings API.
  </Accordion>
</AccordionGroup>
