---
title: "Bulk Update Thermostat Settings"
method: PATCH
path: "/thermostats/settings"
tags: ["thermostats"]
---

# Bulk Update Thermostat Settings

`PATCH /thermostats/settings`

## Request

- Base URL: `https://api.sb.ecobee.com/api/v2`
- URL: `https://api.sb.ecobee.com/api/v2/thermostats/settings`
- Auth: OAuth 2
  - Client credentials
  - Token URL: `https://api.sb.ecobee.com/api/v2/token` scopes: `read:thermostats`, `write:thermostats`

Updates settings for multiple thermostats

## Request body

- UpdateBulkThermostatSettingsRequest
  - `thermostatIds` ThermostatId[]
  - `settings` UpdateThermostatSettingsBody
    - `coolRange` object: The minimum and maximum permitted temperature values for cool
      - `min` number, float
      - `max` number, float
    - `heatRange` object: The minimum and maximum permitted temperature values for heat
      - `min` number, float
      - `max` number, float
    - `fanMinimumOnTime` integer: Minimum time for a fan to run in minutes
    - `holdAction` 'indefinite' | 'nextTransition' | '2hour' | '4hour' | 'askMe': The holdAction defines the default length of a manual hold that is set on the physical thermostat. An 'indefinite' hold indicates that the hold will continue until cancelled. A 'nextTransition' hold indicates that the hold will continue only until the next climate change on the thermostat schedule, eg, when the thermostat switches from 'away' to 'home'. A 2hour hold will last two hours, and 4hour will last 4 hours. When askMe is configured, the user can choose the behaviour at the time the hold is set.

## Response `200`

Success

- UpdateBulkThermostatSettingsResponse
  - `status` 'success' | 'fail'
  - `data` union[]
    - union
      - UpdateBulkThermostatSettingsSuccessResponse
        - `coolRange` object: The minimum and maximum permitted temperature values for cool
          - `min` number, float
          - `max` number, float
        - `heatRange` object: The minimum and maximum permitted temperature values for heat
          - `min` number, float
          - `max` number, float
        - `fanMinimumOnTime` integer: Minimum time for a fan to run in minutes
        - `holdAction` 'indefinite' | 'nextTransition' | '2hour' | '4hour' | 'askMe': The holdAction defines the default length of a manual hold that is set on the physical thermostat. An 'indefinite' hold indicates that the hold will continue until cancelled. A 'nextTransition' hold indicates that the hold will continue only until the next climate change on the thermostat schedule, eg, when the thermostat switches from 'away' to 'home'. A 2hour hold will last two hours, and 4hour will last 4 hours. When askMe is configured, the user can choose the behaviour at the time the hold is set.
        - `thermostatIds` ThermostatId[]
        - `status` 'success'
      - UpdateBulkThermostatFailResponse
        - `thermostatId` string: The unique identifier for a thermostat. The ID will match the serial number on the physical thermostat.
        - `message` string
        - `status` 'fail'

## Other responses

- `400`: Bad request
- `401`: Not authenticated
- `403`: Not authorized
- `404`: Not found
- `422`: Validation Failed
- `429`: Too many requests
- `500`: Internal server error
- `default`: Unexpected error

---

[API](https://skmtc.dev/ecobee/apis/ecobee-smartbuildings-public-api.md) - [All operations](https://skmtc.dev/ecobee/apis/ecobee-smartbuildings-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/ecobee/apis/ecobee-smartbuildings-public-api/revisions/d78d4fd5e1c6?raw)
