---
title: "Create a new AirBeamMini fixed session"
method: POST
path: "/api/v3/fixed_sessions"
tags: ["AirBeamMini fixed sessions binary flow"]
---

# Create a new AirBeamMini fixed session

`POST /api/v3/fixed_sessions`

Creates a new fixed session for an AirBeamMini device. The mobile app calls this
before configuring the AirBeamMini. The response includes a `sensor_type_id` per
stream that the AirBeamMini uses to identify stream types in the binary upload payload.

## Error Codes

| `error_code` | HTTP | Description |
|---|---|---|
| `unauthorized` | 401 | Missing or invalid `Authorization` token |
| `validation_error` | 400 | Request body failed validation. See `fields` for per-field details |

## Headers

- `Authorization` string, required

## Request body

- object
  - `uuid` string, uuid, required
  - `title` string, required
  - `latitude` number, float, required
  - `longitude` number, float, required
  - `contribute` boolean, required
  - `is_indoor` boolean, nullable — Whether the sensor is deployed indoors. Defaults to false when omitted.
  - `time_zone` string, nullable — IANA time zone identifier of the sensor location. Required for indoor sessions, which send placeholder coordinates (200, 200); used to convert UTC measurement timestamps to local time for display. When omitted, the time zone is derived from latitude/longitude.
  - `airbeam` object, required
    - `mac_address` string, required
    - `model` string, required
    - `name` string, nullable
  - `streams` object[], required
    - `sensor_name` string, required — Sensor name as reported by the device (e.g. AirBeamMini-PM1, AirBeamMini-PM2.5)
    - `unit_symbol` string, required — Unit symbol for this sensor (e.g. µg/m³, %, F)

## Response `201`

session created

- object
  - `location` string, required
  - `session_token` string, required — Bearer token for AirBeam measurement uploads. The mobile app passes this to the AirBeam over BLE after session creation.
  - `streams` object[], required
    - `sensor_name` string, required
    - `sensor_type_id` integer, required — Compact numeric ID used by the AirBeam in the binary upload format to identify this stream

## Other responses

- `400` — validation error
- `401` — unauthorized

## Changes

> 2 revisions in range; 1 could not be searched.

- **2026-05-26** (v3) `6e5fb9fbc924` — 1 warning
  - removed the request property `time_zone`

[Change history](https://skmtc.dev/habitatmap/apis/aircasting-api-v3/changes/api/v3/fixed_sessions/post.md)

---

[API](https://skmtc.dev/habitatmap/apis/aircasting-api-v3.md) · [All operations](https://skmtc.dev/habitatmap/apis/aircasting-api-v3/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/habitatmap/aircasting-api-v3/revisions/340612ace143/schema)
