---
updatedAt: 2026-09-09T17:04:32.000Z
---

Fetch the complete documentation index at: https://docs.developer.chargee.io/llms.txt. Use this file to discover all available pages before exploring further. Append .md to any documentation page URL to get its markdown version.

# Schedules

# Schedules

Schedules let authorized callers set time-bound control targets. Ampere currently exposes two schedule surfaces:

* **Group flex schedules** — portfolio / pool level targets
* **Solar inverter schedules** — device-level curtailment targets

Both are explicit writes. Reads are available so you can audit what is planned.

## Group flex schedules

Base path: `/api/v2/groups/:group_uuid/flex`

| Method   | Path                        | Purpose                |
| -------- | --------------------------- | ---------------------- |
| `POST`   | `/schedules`                | Create a flex schedule |
| `GET`    | `/schedules`                | List flex schedules    |
| `GET`    | `/schedules/:schedule_uuid` | Get one schedule       |
| `DELETE` | `/schedules/:schedule_uuid` | Delete a schedule      |

### Create payload rules

Provide **exactly one** of:

| Field                             | Meaning                        |
| --------------------------------- | ------------------------------ |
| `groupGridTargetKw`               | Group grid target in kW        |
| `addressGridTargetW`              | Address-level grid target in W |
| `solarInverterCapacityPercentage` | Capacity percentage 0–100      |

Always provide `time` as an ISO 8601 timestamp for when the target should apply.

### Permissions

* Read: `READ_GROUP_FLEX_DATA`
* Create / delete: `STEER_GROUP_BASED_FLEX`

## Solar inverter schedules

Base path: `/api/v2/addresses/:address_uuid/solar-inverters/:solar_inverter_uuid`

| Method   | Path                        | Purpose                     |
| -------- | --------------------------- | --------------------------- |
| `POST`   | `/schedules`                | Create an inverter schedule |
| `GET`    | `/schedules`                | List schedules              |
| `GET`    | `/schedules/:schedule_uuid` | Get one schedule            |
| `DELETE` | `/schedules/:schedule_uuid` | Delete a schedule           |

### Create payload rules

Provide **either** `powerlimit` **or** `zeroExport`, not both:

| Field        | Meaning                        |
| ------------ | ------------------------------ |
| `powerlimit` | Power limit percentage (0–100) |
| `zeroExport` | Enable zero-export behaviour   |
| `time`       | ISO 8601 execution time        |

### Permissions

* Read: `READ_SOLAR_DATA`
* Create / delete: `STEER_SOLAR_SCHEDULE`

## Solar inverter flex schedules (read-only)

Base path: `/api/v2/addresses/:address_uuid/solar-inverters/:solar_inverter_uuid/flex`

| Method | Path                        | Purpose                                               |
| ------ | --------------------------- | ----------------------------------------------------- |
| `GET`  | `/schedules`                | List flex-derived schedule intervals for the inverter |
| `GET`  | `/schedules/:schedule_uuid` | Get one flex schedule interval                        |

These routes are for visibility into flex-derived behaviour; they are not the create/delete surface.

## Operational expectations

* Successful create/delete acknowledges the API write; downstream device effect can take a short propagation period.
* Validate mutually exclusive fields client-side to avoid `400` responses.
* Store your own correlation IDs for operator audit trails.
* Prefer read-after-write on critical control paths.
* On conflicts or validation failures, correct inputs rather than retrying blindly.