Skip to main content
Use /thermostats/activate_weekly_program to release a hold set by Seam and resume the schedule already configured on the thermostat. For example, after temporarily changing a set point for a demand-response event, you can return the thermostat to the schedule that the user configured in the manufacturer’s app. This native weekly program is the schedule stored on the device. Resuming it does not create or replace its daily periods or temperature settings. You only need the thermostat’s device_id.
To create or change a weekly program through Seam, see Creating and Managing Thermostat Programs. Use activate_weekly_program when you want to resume the program already on the device.

Before You Begin

Connect the thermostat to Seam and make sure that the desired schedule is configured on the device or in the manufacturer’s app. Resuming a native weekly program is supported through the Honeywell Resideo, ecobee, and Sensi integrations. Check the device’s top-level can_activate_weekly_program capability flag before making the request. This flag must be present and true. Google Nest and SmartThings thermostats do not support this operation through Seam. Set SEAM_API_KEY in your environment and replace the sample device ID. Reuse the client initialized in the first example for the following steps. Java and Go snippets belong inside your application method or function, with the imports at the top of the file.
The JavaScript examples use @seamapi/http 2.35.0 or later. The native Ruby and PHP examples require seam 2.160.0 or later and seamapi/seam 4.15.0 or later, respectively. Python, C#, and Go use their SDK’s request interface to support the new endpoint and response fields. Java uses a Java 11+ HTTP fallback because its released SDK does not expose this operation. The Seam CLI examples refresh its API schema with --update.
Retrieve the device using /devices/get:
For cURL, Java, and Seam CLI, inspect the response and confirm that device.can_activate_weekly_program is true before continuing.

Resume the Native Weekly Program

Call /thermostats/activate_weekly_program with the thermostat’s device_id. No program ID, set points, or end time are required.
The HTTP response includes an action attempt with action_type set to ACTIVATE_WEEKLY_PROGRAM. The following example shows a pending response, with other response fields omitted:

Confirm Completion

These examples return the action attempt without waiting for completion. An accepted HTTP request does not mean that the thermostat has finished resuming its schedule. Poll /action_attempts/get using the returned action_attempt_id until status is success or error. The following examples retrieve its current status once; repeat this check while it is pending. For cURL, Java, and Seam CLI, replace the sample action attempt ID with the ID returned by your activation request.
If the status is error, inspect the action attempt’s error for details.
On ecobee thermostats, vacation events and mandatory demand-response events are not canceled by this operation.

What Happens After the Schedule Resumes?

Seam releases its hold and lets the thermostat follow its native weekly program. Seam does not change the HVAC mode as part of this operation. For example, resuming the program while the thermostat is off does not turn heating or cooling on. The thermostat resumes the program currently stored on it. If you previously replaced that program using /thermostats/update_weekly_program, this operation does not restore the older program. While the native program is active, Seam does not reapply a fallback preset or write climate settings when a previously active Seam schedule ends. Seam takes control again when any of the following occurs: Resuming the native program does not delete your Seam thermostat schedules. If you want the thermostat to keep following its own program, review upcoming Seam schedules and delete any schedules that should no longer activate. For a temporary override workflow, apply the desired climate settings at the start of the event, then call activate_weekly_program when the event ends. Schedule that final API call in your application; this endpoint does not accept a future activation time.