The Amps API exposes three layers: one verb-set, one parameter shape, one error envelope, across every device with an API. Hardware-level commands stay imperative. Intent-level commands declare a goal. A higher routing layer for cross-device dispatch is forthcoming.Documentation Index
Fetch the complete documentation index at: https://docs.amps.ai/llms.txt
Use this file to discover all available pages before exploring further.
The three layers
| Layer | Surface | What you control |
|---|---|---|
| Device Control | charge, discharge, idle | Exactly what the device does. Time windows, parameters, OEM-side commitment. |
| Strategy | auto.balanced, auto.reserve, auto.export | A goal. The device or Amps picks how to deliver it. |
| Intelligence | Cross-device routing (forthcoming) | A higher-level objective. Amps picks which device to dispatch. |
commands map, the same Quantity parameters, and the same lifecycle. Integrate once against the unified API and you move up the stack without rewriting anything.
Device Control: imperative
charge, discharge, and idle are direct imperatives. You say exactly what should happen, Amps translates that to the OEM’s native call, and the action records what got committed.
failed and Amps does not retry.
Strategy: intent
auto.balanced, auto.reserve, and auto.export declare a goal:
| Command | Intent |
|---|---|
auto.balanced | Optimise for self-consumption. Match generation to load. |
auto.reserve | Reserve capacity for grid outage. Stay above the reserve floor. |
auto.export | Maximise grid export. Discharge when the export tariff is attractive. |
auto.balanced maps to the device’s self-consumption mode, auto.reserve to its backup mode, auto.export to its grid-export mode. The same intent landing on a different device returns the same command in the device’s commands map. See canonical actions for the full mapping.
Intelligence: routing (forthcoming)
Capability-driven dispatch is forthcoming. Above the device layer, a multi-device action expressed once will apply to any device that exposes the right capability.Brokerage, not VPP
Amps is a brokerage. It routes flexibility to the best execution venue across providers, never taking the position itself. There is no energy supply licence on the path, no proprietary trading desk. Think “Plaid for energy”, not “Octopus Energy on top of someone else’s hardware”. Every command flows through your own API key as your customer’s intent. Multi-tenant boundaries are absolute: a dispatch on behalf of one customer never reaches a device connected by another.How devices are integrated
Errors come back as typed canonical codes (INVALID_CREDENTIALS, SCHEDULER_ACTIVE, RATE_LIMITED, DEVICE_OFFLINE); OEM-specific error names never reach you. What each device accepts is declared on the device itself and surfaced through capabilities. New devices graduate from sandbox-only simulations to general availability. The unified API does not change when a new OEM lands; the verb-set and the response shapes stay the same.
Supported devices
Five DER categories share the same contract. The verbs and parameter shapes are identical across categories; what each device exposes depends on its capabilities.- Batteries. Read charge level, capacity, and energy flow. Push
charge,discharge,idle,auto.balanced,auto.reserve,auto.export. Common use cases: home energy storage management, peak shaving and load shifting, backup power coordination, solar self-consumption optimisation. - EV chargers. Read charging status, power, and session totals. Push start, stop, and scheduled charging. Common use cases: fleet charging management, public charging network operations, home charging optimisation, demand response programs.
- HVAC systems. Read current temperature and mode. Push setpoint and mode changes (auto, heat, cool, off). Common use cases: smart home automation, demand response load reduction, energy efficiency optimisation, comfort management.
- Solar inverters. Read real-time power production and energy totals (daily, monthly, lifetime). Read-only on most OEMs. Common use cases: solar production monitoring, energy management dashboards, ROI tracking and reporting, grid integration coordination.
- Vehicles. Read battery level, range, charging status, and capacity. Push charge limits and start/stop where the OEM allows. Common use cases: fleet management and tracking, charging optimisation, range planning, vehicle-to-grid (V2G) applications.
Sync reads, async writes
Reads and writes share the same auth and access path, then split. A pull is synchronous: the API returns device state in the HTTP response, falling back to the last-known stored state on a transient OEM-side failure. A push is asynchronous: the API returns 202 with anactionId, dispatch happens in the background, and the result lands via webhook or polling.
The async tail keeps response latency decoupled from OEM round-trips. State updates and webhook delivery flow behind the API, so a slow OEM never holds your request open. See device state for cache semantics and webhooks for delivery.
Frequently asked questions
What is the difference between a push action and a schedule?
A push targets a single device with one body and runs immediately, at a future instant, or across a window. A schedule groups pushes into slots and a recurrence pattern. Schedules sit on top of the push primitive; the push is the only thing that ever fires against an OEM. The schedule resource manages slot definitions, recurrence, DST, and lifecycle.Why does Amps have separate auto modes per OEM?
Amps does not. The unified API declares three shared auto modes (auto.balanced, auto.reserve, auto.export) that every battery speaks. The client sends the same request shape regardless of which OEM is on the other end.
Is Amps a VPP?
Amps is a brokerage, not a VPP. The platform routes flexibility to the best execution venue across providers; it does not take energy positions itself. There is no energy supply licence on the path, no proprietary trading desk. Every command flows through the customer’s own API key. Multi-tenant boundaries are absolute. Think “Plaid for energy”, not “Octopus Energy on top of someone else’s hardware”.How does Amps support a new OEM?
New devices graduate from sandbox-only simulations to general availability. What each device accepts is declared on the device itself, surfaced via capabilities. The unified API does not change when a new OEM lands; clients pick up the new device automatically once it reaches their tier.Related concepts
What to expect
Why the surface looks the way it does.
Canonical Actions
The single body shape every push uses.
Capabilities
Per-device declaration of supported commands and parameters.
Auth Model
API keys, sandbox vs live, the Auth Journey.