Skip to main content

Overview

POST /nest/transport/put is how the thermostat sends local state changes to the server — temperature dial turns, mode changes, sensor readings, HVAC status updates.
This endpoint is part of the Device Protocol API on port 8000. It is called directly by thermostat firmware — not by you.

Endpoint

Request

Headers

Body (Bucket-Keyed Format)

Body (Objects Array Format)

Revision Fields

The shared bucket uses conditional writes (if_object_revision) because both the device and the server may update it concurrently (device dials the temperature, server sends a command at the same time).

Response

The response contains the updated revision and timestamp for each bucket that was processed. It does not include a value field.
Never include a value field in the PUT response. The device treats any value in a PUT response as authoritative cloud data and applies every field as an overwrite — including fields the device just updated locally. This can cause the device to silently lose local state changes.

Server Merge Behavior

For each incoming PUT object, the server:
  1. Merges the incoming fields into the stored bucket (shallow merge)
  2. Only bumps revision and timestamp if values actually changed
  3. Does not notify subscribers (the PUT response is the only data path back to the device; server pushes go through subscribe)

Examples

A thermostat dial turn triggers a PUT:
Response:

POST /nest/transport

Subscribe endpoint (server → device)

Nest Protocol: Transport

Full protocol documentation