ecobee

ecobee makes smart Wi-Fi thermostats, room sensors, cameras, and other connected home devices. The ecobee API is a REST-like JSON interface, based at https://api.ecobee.com/1/, that lets authorized third-party applications read and control registered ecobee thermostats - retrieving live runtime state, settings, sensors, and equipment status, updating programs and comfort settings via thermostat functions, pulling historical runtime and meter reports, grouping thermostats, and (for EMS and Utility accounts) organizing thermostats in a management-set hierarchy and issuing demand response events. Authorization uses OAuth 2.0 with an ecobee PIN flow or the standard authorization-code flow, plus refresh tokens. NOTE - as of late 2024 ecobee closed its developer program to new API-key registrations; existing keys continue to function.

8 APIs 0 Features
Smart HomeThermostatIoTHVACEnergyHome AutomationDemand Response

APIs

ecobee Thermostat API

Retrieve registered ecobee thermostats and their selectable data - runtime state, settings, program, events, alerts, remote sensors, and equipment status - via GET /thermostat, ...

ecobee Thermostat Update and Functions API

Update writable thermostat properties and run thermostat functions via POST /thermostat - set hold and comfort settings, resume program, send messages, control fan and vents, an...

ecobee Runtime Report API

Pull historical five-minute-interval runtime data for a set of thermostats via GET /runtimeReport - temperature, humidity, setpoints, equipment run time, and optional sensor col...

ecobee Group API

Retrieve (GET /group) and update (POST /group) the grouping data for the thermostats registered to a user, letting a Smart-account application organize thermostats into named gr...

ecobee Demand Response API

Issue, list, and cancel Demand Response events against a set of thermostats via /demandResponse, temporarily adjusting programs during utility peak-load events. Accessible to Ut...

ecobee Hierarchy API

Organize EMS and Utility fleets in a management-set hierarchy - register, unregister, move, and assign thermostats (/hierarchy/thermostat); create, list, rename, remove, and mov...

ecobee Meter Report API

Retrieve meter reading history (energy / metering data) for a set of thermostats via GET /meterReport, over a bounded date range. Available to EMS and Utility accounts.

ecobee Authorization API

OAuth 2.0 authorization for the ecobee API. GET /authorize starts the ecobee PIN flow (response_type=ecobeePin) or the authorization-code flow; POST /token exchanges an authoriz...

Collections

ecobee API

OPEN

Pricing Plans

Ecobee Plans Pricing

2 plans

PLANS

Rate Limits

Ecobee Rate Limits

4 limits

RATE LIMITS

FinOps

Ecobee Finops

FINOPS

Resources

🔗
DomainSecurity
DomainSecurity
🔑
Authentication
Authentication
👥
GitHubOrganization
GitHubOrganization
🔗
LinkedIn
LinkedIn
🔗
Website
Website
🔗
Documentation
Documentation
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: ecobee API
  version: '1.0'
  description: 'REST-like JSON API for reading and controlling registered ecobee smart thermostats. Data plane base URL: https://api.ecobee.com/1
    (Bearer access token). OAuth authorize/token endpoints are on the host root https://api.ecobee.com. NOTE: ecobee closed
    its developer program to new API-key registrations in late 2024; existing keys still function.'
request:
  auth:
    type: bearer
    token: '{{accessToken}}'
items:
- info:
    name: Thermostat
    type: folder
  items:
  - info:
      name: Get thermostats.
      type: http
    http:
      method: GET
      url: https://api.ecobee.com/1/thermostat?json={"selection":{"selectionType":"registered","selectionMatch":"","includeRuntime":true,"includeSettings":true}}
    docs: Retrieves registered thermostats and their requested data (runtime, settings, events, sensors).
  - info:
      name: Get thermostat summary.
      type: http
    http:
      method: GET
      url: https://api.ecobee.com/1/thermostatSummary?json={"selection":{"selectionType":"registered","selectionMatch":"","includeEquipmentStatus":true}}
    docs: Compact revision-list summary to detect changes without re-fetching full objects. Poll at most once every three
      minutes.
- info:
    name: Thermostat Update
    type: folder
  items:
  - info:
      name: Update thermostat and run functions.
      type: http
    http:
      method: POST
      url: https://api.ecobee.com/1/thermostat?format=json
      body:
        type: json
        data: "{\n  \"selection\": {\n    \"selectionType\": \"thermostats\",\n    \"selectionMatch\": \"THERMOSTAT_ID\"\n\
          \  },\n  \"functions\": [\n    { \"type\": \"setHold\", \"params\": { \"holdType\": \"nextTransition\", \"heatHoldTemp\"\
          : 700, \"coolHoldTemp\": 750 } }\n  ]\n}"
    docs: Updates writable thermostat properties and/or runs thermostat functions. Requires smartWrite scope.
- info:
    name: Reports
    type: folder
  items:
  - info:
      name: Get runtime report.
      type: http
    http:
      method: GET
      url: https://api.ecobee.com/1/runtimeReport?format=json&body={"startDate":"2026-06-01","endDate":"2026-06-07","columns":"zoneAveTemp,compHeat1,compCool1","selection":{"selectionType":"thermostats","selectionMatch":"THERMOSTAT_ID"}}
    docs: Historical five-minute-interval runtime data. Limited to 25 thermostats and a 31-day period per request.
  - info:
      name: Get meter report.
      type: http
    http:
      method: GET
      url: https://api.ecobee.com/1/meterReport?format=json&body={"startDate":"2026-06-01","endDate":"2026-06-07","selection":{"selectionType":"thermostats","selectionMatch":"THERMOSTAT_ID"}}
    docs: Meter reading history for a set of thermostats. EMS and Utility accounts only.
- info:
    name: Group
    type: folder
  items:
  - info:
      name: Get groups.
      type: http
    http:
      method: GET
      url: https://api.ecobee.com/1/group?json={"selection":{"selectionType":"registered","selectionMatch":""}}
    docs: Retrieves the group and grouping data for the user's thermostats. Smart accounts only.
  - info:
      name: Update groups.
      type: http
    http:
      method: POST
      url: https://api.ecobee.com/1/group?format=json
      body:
        type: json
        data: "{\n  \"selection\": { \"selectionType\": \"registered\", \"selectionMatch\": \"\" },\n  \"groups\": [ { \"\
          groupName\": \"Upstairs\", \"thermostats\": [\"THERMOSTAT_ID\"], \"synchronizeVacation\": true } ]\n}"
    docs: Creates or updates the grouping of the user's thermostats. Smart accounts only.
- info:
    name: Demand Response
    type: folder
  items:
  - info:
      name: List demand responses.
      type: http
    http:
      method: GET
      url: https://api.ecobee.com/1/demandResponse?json={"selection":{"selectionType":"managementSet","selectionMatch":"/"}}
    docs: Lists demand response events. Utility accounts only.
  - info:
      name: Issue demand response.
      type: http
    http:
      method: POST
      url: https://api.ecobee.com/1/demandResponse?format=json
      body:
        type: json
        data: "{\n  \"selection\": { \"selectionType\": \"thermostats\", \"selectionMatch\": \"THERMOSTAT_ID\" },\n  \"demandResponse\"\
          : { \"name\": \"Peak Event\", \"message\": \"Utility peak load event\", \"event\": { \"startDate\": \"2026-07-15\"\
          , \"startTime\": \"16:00:00\", \"endDate\": \"2026-07-15\", \"endTime\": \"19:00:00\" } }\n}"
    docs: Issues a demand response event to a set of thermostats. Utility accounts only. Send a cancel body to cancel an event.
- info:
    name: Hierarchy
    type: folder
  items:
  - info:
      name: Register / move / assign thermostats.
      type: http
    http:
      method: POST
      url: https://api.ecobee.com/1/hierarchy/thermostat?format=json
      body:
        type: json
        data: "{\n  \"operation\": \"register\",\n  \"setPath\": \"/Location 1/Group 1\",\n  \"thermostats\": \"THERMOSTAT_ID\"\
          \n}"
    docs: Registers, unregisters, moves, or assigns thermostats in the management-set hierarchy. EMS and Utility accounts
      only.
  - info:
      name: List management sets.
      type: http
    http:
      method: GET
      url: https://api.ecobee.com/1/hierarchy/set?json={"operation":"list"}
    docs: Lists the management sets in the account hierarchy. EMS and Utility accounts only.
  - info:
      name: Add / rename / move set.
      type: http
    http:
      method: POST
      url: https://api.ecobee.com/1/hierarchy/set?format=json
      body:
        type: json
        data: "{\n  \"operation\": \"add\",\n  \"setName\": \"Group 1\",\n  \"parentPath\": \"/Location 1\"\n}"
    docs: Adds, removes, renames, or moves a management set. EMS and Utility accounts only.
  - info:
      name: List users.
      type: http
    http:
      method: GET
      url: https://api.ecobee.com/1/hierarchy/user?json={"operation":"list"}
    docs: Lists the users in the account hierarchy. EMS and Utility accounts only.
  - info:
      name: Add / update / remove user.
      type: http
    http:
      method: POST
      url: https://api.ecobee.com/1/hierarchy/user?format=json
      body:
        type: json
        data: "{\n  \"operation\": \"add\",\n  \"userName\": \"user@example.com\",\n  \"setPath\": \"/Location 1\",\n  \"\
          privileges\": [\"hierarchy\"]\n}"
    docs: Adds, updates, removes, or unregisters a user in the hierarchy. EMS and Utility accounts only.
- info:
    name: Authorization
    type: folder
  items:
  - info:
      name: Authorize (ecobee PIN).
      type: http
    http:
      method: GET
      url: https://api.ecobee.com/authorize?response_type=ecobeePin&client_id={{clientId}}&scope=smartWrite
      auth:
        type: none
    docs: Starts the ecobee PIN flow; returns a PIN, an authorization code, and expiry. The user enters the PIN in the ecobee
      web portal.
  - info:
      name: Token (exchange PIN code).
      type: http
    http:
      method: POST
      url: https://api.ecobee.com/token?grant_type=ecobeePin&code=AUTH_CODE&client_id={{clientId}}
      auth:
        type: none
    docs: Exchanges the authorization code for an access token and refresh token.
  - info:
      name: Token (refresh).
      type: http
    http:
      method: POST
      url: https://api.ecobee.com/token?grant_type=refresh_token&refresh_token={{refreshToken}}&client_id={{clientId}}
      auth:
        type: none
    docs: Refreshes an expired access token using the refresh token.
bundled: true