Enphase Energy Agentic Access
Enphase Energy exposes 56 API operations that an AI agent could call, of which 6 are state-changing ‘acting’ operations. This is a recommended x-agentic-access execution contract — the scope, audience, consequence tier, short-lived token constraints, and escalation each action should carry before it is handed to an autonomous agent.
By consequence: 50 read, 3 write, and 3 safety-critical.
3 operations are classed safety-critical and should require human-in-the-loop approval at runtime.
Contracts are classified heuristically from the provider’s OpenAPI and refresh on every APIs.io network build; audience is bound per deployment. The model follows Curity’s Access Intelligence (apidays Munich 2026). Browse every provider’s agent contracts at agentic-access.apis.io.
By consequence
Highest-consequence actions
The physical and safety-critical operations an agent could invoke — the ones that most warrant scoped tokens, tight TTLs, and escalation. Full per-operation contracts are in the source below.
| Method | Path | Consequence | Human-in-loop |
|---|---|---|---|
| PUT | /api/v4/systems/config/{system_id}/load_control | safety-critical | required |
| POST | /api/v4/systems/{system_id}/ev_charger/{serial_no}/start_charging | safety-critical | required |
| POST | /api/v4/systems/{system_id}/ev_charger/{serial_no}/stop_charging | safety-critical | required |
Source
Agentic Access
generated: '2026-07-15'
method: generated
source: openapi/enphase-enlighten-v2-openapi.yml, openapi/enphase-enlighten-v4-monitoring-openapi.yml
description: Recommended x-agentic-access execution contracts, classified heuristically from
the OpenAPI. A governance starting point for exposing this API to AI agents — review and bind
audience per deployment. See research/curity/agentic-governance/.
summary:
operations: 56
by_action_class:
connected: 50
acting: 6
by_consequence:
read: 50
write: 3
safety-critical: 3
human_in_the_loop_required: 3
operations:
- path: /systems/{system_id}/energy_lifetime
method: get
operationId: EnergyLifetime
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /systems/{system_id}/envoys
method: get
operationId: Envoys
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /systems
method: get
operationId: Systems
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /systems/{system_id}/inventory
method: get
operationId: Inventory
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /systems/inverters_summary_by_envoy_or_site
method: get
operationId: InvertersSummaryByEnvoyOrSite
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /systems/{system_id}/monthly_production
method: get
operationId: MonthlyProduction
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /systems/{system_id}/production_meter_readings
method: get
operationId: ProductionMeterReadings
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /systems/{system_id}/rgm_stats
method: get
operationId: RgmStats
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /systems/{system_id}/stats
method: get
operationId: Stats
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /systems/{system_id}/consumption_lifetime
method: get
operationId: ConsumptionLifetime
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /systems/{system_id}/consumption_stats
method: get
operationId: ConsumptionStats
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /systems/{system_id}/summary
method: get
operationId: Summary
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /systems/search_system_id
method: get
operationId: SearchSystemId
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems
method: get
operationId: listSystems
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/search
method: post
operationId: searchSystems
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /api/v4/systems/{system_id}
method: get
operationId: getSystemById
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/{system_id}/summary
method: get
operationId: getSystemSummary
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/{system_id}/devices
method: get
operationId: listSystemDevices
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/retrieve_system_id
method: get
operationId: retrieveSystemId
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/{system_id}/events
method: get
operationId: listSystemEvents
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/{system_id}/alarms
method: get
operationId: listSystemAlarms
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/event_types
method: get
operationId: listEventTypes
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/{system_id}/production_meter_readings
method: get
operationId: getProductionMeterReadings
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/{system_id}/rgm_stats
method: get
operationId: getRgmStats
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/{system_id}/consumption_lifetime
method: get
operationId: getConsumptionLifetime
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/{system_id}/energy_lifetime
method: get
operationId: getEnergyLifetime
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/{system_id}/battery_lifetime
method: get
operationId: getBatteryLifetime
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/{system_id}/energy_import_lifetime
method: get
operationId: getEnergyImportLifetime
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/{system_id}/energy_export_lifetime
method: get
operationId: getEnergyExportLifetime
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/inverters_summary_by_envoy_or_site
method: get
operationId: getInvertersSummary
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/{system_id}/telemetry/production_micro
method: get
operationId: getProductionMicroTelemetry
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/{system_id}/telemetry/production_meter
method: get
operationId: getProductionMeterTelemetry
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/{system_id}/telemetry/battery
method: get
operationId: getBatteryTelemetry
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/{system_id}/telemetry/consumption_meter
method: get
operationId: getConsumptionMeterTelemetry
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/{system_id}/devices/micros/{serial_no}/telemetry
method: get
operationId: getMicroTelemetry
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/{system_id}/devices/acbs/{serial_no}/telemetry
method: get
operationId: getAcbTelemetry
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/{system_id}/devices/encharges/{serial_no}/telemetry
method: get
operationId: getEnchargeTelemetry
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/config/{system_id}/battery_settings
method: get
operationId: getSystemBatterySettings
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/config/{system_id}/battery_settings
method: put
operationId: updateSystemBatterySettings
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /api/v4/systems/config/{system_id}/storm_guard
method: get
operationId: getSystemStormGuard
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/config/{system_id}/storm_guard
method: put
operationId: updateSystemStormGuard
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /api/v4/systems/config/{system_id}/grid_status
method: get
operationId: getSystemGridStatus
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/config/{system_id}/load_control
method: get
operationId: getSystemLoadControl
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/config/{system_id}/load_control
method: put
operationId: updateSystemLoadControl
x-agentic-access:
action-class: acting
consequence: safety-critical
subject: required
audience: null
token:
max-ttl: 120
exchange: true
purpose-required: true
proof-of-possession: true
escalation:
human-in-the-loop: required
audit: required
- path: /api/v4/systems/{system_id}/energy_import_telemetry
method: get
operationId: getEnergyImportTelemetry
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/{system_id}/energy_export_telemetry
method: get
operationId: getEnergyExportTelemetry
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/{system_id}/live_data
method: get
operationId: getLiveData
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/{system_id}/latest_telemetry
method: get
operationId: getLatestSystemTelemetry
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/{system_id}/ev_charger/devices
method: get
operationId: fetchChargersSummary
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/{system_id}/ev_charger/events
method: get
operationId: fetchEvents
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/{system_id}/ev_charger/{serial_no}/sessions
method: get
operationId: fetchChargerSessionHistory
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/{system_id}/ev_charger/{serial_no}/schedules
method: get
operationId: fetchSchedules
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/{system_id}/ev_charger/{serial_no}/lifetime
method: get
operationId: fetchDailyEnergyConsumptionData
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/{system_id}/ev_charger/{serial_no}/telemetry
method: get
operationId: fetchEnergyConsumptionData
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /api/v4/systems/{system_id}/ev_charger/{serial_no}/start_charging
method: post
operationId: startCharging
x-agentic-access:
action-class: acting
consequence: safety-critical
subject: required
audience: null
token:
max-ttl: 120
exchange: true
purpose-required: true
proof-of-possession: true
escalation:
human-in-the-loop: required
audit: required
- path: /api/v4/systems/{system_id}/ev_charger/{serial_no}/stop_charging
method: post
operationId: stopCharging
x-agentic-access:
action-class: acting
consequence: safety-critical
subject: required
audience: null
token:
max-ttl: 120
exchange: true
purpose-required: true
proof-of-possession: true
escalation:
human-in-the-loop: required
audit: required