Feature request: expose upcoming scheduled runs in the public API

Hi Rachio team — I’d like to request that upcoming scheduled watering runs (the same data shown in the app’s Upcoming tab) be exposed in the public API.

Right now, current_schedule only reports actively-running schedules, the events API returns nothing for future windows, and schedule rules carry no future runs. That makes it impossible for third-party integrations to show what’s scheduled next per zone.

My use case: I run a soil-moisture model alongside my Rachio controller (Home Assistant) and want to display the next scheduled runs per zone. Today I have to estimate them, which is far less reliable than Rachio’s own Flex Daily calculations.

The ask: a read-only endpoint (or an extension of an existing one) returning upcoming runs per zone with date/time and duration. Thanks for considering it!

@Leedawson

Thanks for the detailed request. We’re working on a new public API endpoint, GET /1/public/device/{id}/upcoming_runs, which will return the next 14 days of scheduled runs, the same data you see in the app’s Upcoming tab. Here’s an example of the response:

[
  {
    "startTime": "2026-10-08T05:00:00-06:00",
    "endTime": "2026-10-08T05:51:00-06:00",
    "scheduleRuleId": "fde4709a-96eb-4fe6-a054-5178a8e3f20b",
    "scheduleName": "Lawn Flex Daily",
    "skipped": false,
    "cycleSoak": true,
    "totalDuration": 2160,
    "zones": [
      { "zoneId": "710b5add-4ce1-4d10-9a73-523823c7a82b", "zoneNumber": 1, "zoneName": "Front Lawn", "duration": 1260 },
      { "zoneId": "9c1e0f3a-2b7d-4e7a-8d43-1f0c5b6a7e21", "zoneNumber": 2, "zoneName": "Back Lawn", "duration": 900 }
    ]
  },
  {
    "startTime": "2026-10-10T05:00:00-06:00",
    "endTime": "2026-10-10T05:36:00-06:00",
    "scheduleRuleId": "fde4709a-96eb-4fe6-a054-5178a8e3f20b",
    "scheduleName": "Lawn Flex Daily",
    "skipped": true,
    "skipCause": "RAIN",
    "totalDuration": 2160,
    "zones": []
  }
]

A few notes:

  • Times are ISO 8601 in your controller’s local time zone. endTime includes soak time, so it’s when the controller will actually be done.
  • Durations are in seconds. A zone’s duration is its total watering time, added up across cycles when cycle and soak is on, and totalDuration is the run’s total watering
    time.
  • Runs predicted to be skipped are included with skipped: true and a skipCause (RAIN, FREEZE, WIND, CLIMATE, MANUAL or THRIVE), so you can show them or filter them out.
  • Runs that have already started aren’t included, so the first item is always the next one coming up.
  • Flex Daily times are recalculated as the weather changes, so the result can shift from day to day, just like in the app.

Would this cover your Home Assistant use case?

Franz :cheers:

Awesome and fast response. You rock. This will work perfectly.

It would be really helpful if you would add current and the calculated future moisture % to the API.

@Leedawson

Upcoming runs are now live in the public API: GET /1/public/device/{id}/upcoming_runs returns the next 14 days of scheduled runs, the same as the app’s Upcoming tab. The docs are here: /public/device/:id/upcoming_runs

One change from the example I posted earlier: skipped runs don’t include totalDuration, so that field always means watering time. Use startTime and endTime if you want the span of a skipped run.

On current and forecast moisture %: thanks for the suggestion. I put it on our list, but I don’t have a timeline to share yet.

Thanks

Franz :cheers: