openapi: 3.0.3 info: title: Sensibo AC States Users API description: The Sensibo API gives developers full control over Sensibo smart AC controllers and air quality monitors ("pods") - Sensibo Sky, Air, Air Pro, and Elements. Over REST you can list the devices on an account, read the latest temperature, humidity, and air quality measurements, pull up to seven days of historical measurements, get and set the air conditioner state (power, mode, target temperature, fan, swing), configure the Climate React smart-mode automation, and manage schedules and timers. Authentication is a per-account API key passed as the `apiKey` query parameter, generated at https://home.sensibo.com/me/api. OAuth2 is available for commercial integrations (contact support@sensibo.com). Schedules and timers are exposed by Sensibo as a legacy ("v1") surface but are served under the same home.sensibo.com host. This document is grounded in Sensibo's published OpenAPI (sensibo.openapi.yaml) and support documentation; request and response schemas are modeled representatively. version: 2.0.0 contact: name: Sensibo Support url: https://support.sensibo.com/api/ email: support@sensibo.com license: name: Proprietary url: https://sensibo.com/pages/terms-of-service servers: - url: https://home.sensibo.com/api/v2 description: Sensibo API v2 security: - apiKey: [] tags: - name: Users description: Account-level access to the devices enrolled on a Sensibo account. paths: /users/me/pods: get: operationId: listPods tags: - Users summary: Get all devices description: Lists every device (pod) enrolled on the authenticated account. Use the `fields` parameter to control which properties are returned (for example `fields=id,room,acState` or `fields=*` for everything). parameters: - $ref: '#/components/parameters/Fields' responses: '200': description: A list of the account's pods. content: application/json: schema: type: object properties: status: type: string example: success result: type: array items: $ref: '#/components/schemas/Pod' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/RateLimited' components: responses: Unauthorized: description: Missing or invalid apiKey. content: application/json: schema: $ref: '#/components/schemas/Error' RateLimited: description: 'Too many requests. Requests are rate limited; a 429 indicates the limit was exceeded. Sending an `Accept-Encoding: gzip` header raises the effective limit.' content: application/json: schema: $ref: '#/components/schemas/Error' schemas: Measurement: type: object description: A sensor reading from a pod. properties: time: type: string format: date-time temperature: type: number example: 23.4 humidity: type: number example: 48 feelsLike: type: number example: 23.9 tvoc: type: number description: Total volatile organic compounds (air-quality hardware only). example: 120 co2: type: number description: Carbon dioxide in ppm (air-quality hardware only). example: 640 pm25: type: number description: Particulate matter 2.5 (air-quality hardware only). example: 8 rssi: type: integer battery: type: number nullable: true AcState: type: object description: The state of the air conditioner. properties: 'on': type: boolean mode: type: string description: Operating mode. example: cool enum: - cool - heat - fan - dry - auto targetTemperature: type: number example: 22 temperatureUnit: type: string enum: - C - F example: C fanLevel: type: string example: auto swing: type: string example: stopped Pod: type: object description: A Sensibo device (pod). properties: id: type: string description: The pod identifier used in every other endpoint. room: type: object properties: name: type: string example: Living Room productModel: type: string example: skyv2 firmwareVersion: type: string connectionStatus: type: object properties: isAlive: type: boolean acState: $ref: '#/components/schemas/AcState' measurements: $ref: '#/components/schemas/Measurement' Error: type: object properties: status: type: string example: failure reason: type: string parameters: Fields: name: fields in: query required: false description: Comma-separated list of fields to include in the response, or `*` for all fields. schema: type: string example: '*' securitySchemes: apiKey: type: apiKey in: query name: apiKey description: Per-account API key generated at https://home.sensibo.com/me/api and passed as the apiKey query parameter on every request.