Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Reference System Details And Telemetry API
description: Integrate the VPP API into your application
version: 1.1.0
servers:
- url: https://vpp.enphaseenergy.com
tags:
- name: System Details And Telemetry
description: System Details And Telemetry API
paths:
/api/v1/systems/{site_id}/{serial_no}/evse_telemetry:
get:
tags:
- System Details And Telemetry
summary: Retrieves telemetry data of the EVSE charger at regular intervals
description: 'Retrieves telemetry data of the EVSE charger at regular intervals.
If no start_at is specified, defaults to midnight today, in the timezone of the system. If the start_at specified is earlier than the system’s first reported date, then midnight of the system’s first reported date is considered as start_at.
The end_at is calculated as the minimum of the time of the request and (start time + granularity).
The meaning of granularity is as follow:
If granularity is 15mins, maximum 1 intervals will appear in response. If granularity is day, maximum 96 intervals will appear in response where each interval is of 15 mins duration.
The requested start date must be within 2 years from current date.
'
operationId: getDeviceLevelEVSETelemetry
parameters:
- name: site_id
in: path
description: Unique Id of the site
required: true
schema:
type: string
- name: serial_no
in: path
description: Serial Number of the EV Charger
required: true
schema:
type: string
- name: start_at
in: query
description: 'Start time for fetching the telemetry data in Epoch time format. Defaults to midnight
'
required: false
schema:
type: integer
format: int64
- name: start_date
in: query
description: "Start date for fetching the telemetry data in yyyy-mm-dd format\n If no start_date is specified, defaults to midnight today, in the timezone of the system.\n"
required: false
schema:
type: string
- name: interval_duration
in: query
description: 'Size of the interval. Can be 5mins, or 15mins. Site must be configured to 5 min telemetry for this to be supported. Defaults to 15mins
'
required: false
schema:
type: string
default: 15mins
- name: granularity
in: query
description: 'The granularity of the telemetry data. Possible values are ''week'', ''day'', ''15mins'', ''5mins''. Default is ''day''
'
required: false
schema:
type: string
default: day
- name: end_date
in: query
description: 'End Date in YYYY-MM-DD format. If granularity is not provided, then defaults to current date
'
required: false
schema:
type: string
- name: end_at
in: query
description: 'End time for fetching the telemetry data in Epoch time format.
One can also use end_date in place of end_at for passing the end date as String date format YYYY-MM-DD.
Only one of granularity and end_at/end_date should be passed.
If granularity is not provided, then defaults to current time.
'
required: false
schema:
type: integer
format: int64
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Successfully retrieved device level EVSE telemetry data
content:
'*/*':
schema:
$ref: '#/components/schemas/DeviceLevelEVSETelemetryResponse'
examples:
EVSETelemetryExample:
summary: Response with 5-minute interval energy data
description: EVSETelemetryExample
value:
system_id: 698905955
granularity: day
interval_duration: 5mins
start_at: 1496526300
end_at: 1496527320
items: intervals
intervals:
- end_at: 1496527200
wh_consumed: 40.2
- end_at: 1496527260
wh_consumed: 30.8
- end_at: 1496527320
wh_consumed: 10.1
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Input date is incorrect. Date must be in yyyy-mm-dd format and must be a valid one\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\n \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"message\": \"Forbidden\"\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Granularity value must be one of 'week', 'day', '15mins', '5mins'\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Interval duration must be one of '5mins', '15mins'\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Error occurred while getting response from downstream server. Please refer to additionalInfo section for more details.\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/{serial_no}/evse_lifetime:
get:
tags:
- System Details And Telemetry
summary: Retrieves daily time-series telemetry data of the EVSE charger
description: 'Retrieves daily time-series telemetry data of the EVSE charger
The number of data points returned in the response corresponds to days spanned between the start_date and end_date parameter mentioned in the request.
Requested start_date of the time series data defaults to the system’s operational date. If the start_date is earlier than the system’s operational_date, then the response data begins with the system operational_date as start_date.
Pass as String date format YYYY-MM-DD.If end_date is not specified, then it defaults to today.
'
operationId: getDeviceLevelEVSELifeTimeTelemetry
parameters:
- name: site_id
in: path
description: Unique Id of the site
required: true
schema:
type: string
- name: serial_no
in: path
description: Serial Number of the EV Charger
required: true
schema:
type: string
- name: start_date
in: query
description: 'Start date for fetching the daily time-series data. Pass as String date format yyyy-mm-dd. Defaults to the system’s operational date
'
required: false
schema:
type: string
- name: end_date
in: query
description: 'End date for fetching the daily time-series data. Pass as String date format yyyy-mm-dd. Defaults to today.
'
required: false
schema:
type: string
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Retrieved daily time-series telemetry data of the EVSE charger
content:
'*/*':
schema:
$ref: '#/components/schemas/EVSELifeTimeTelemetryResponse'
examples:
EVSELifeTimeExample:
summary: Daily EVSE energy consumption data
description: EVSELifeTimeExample
value:
system_id: 698905955
start_date: '2024-11-22'
end_date: '2024-11-28'
consumption:
- 40.1
- 35.3
- 40.4
- 20.6
- 15.2
- 10.3
- 2.9
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Input date is incorrect. Date must be in yyyy-mm-dd format and must be a valid one\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\n \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"message\": \"Forbidden\"\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Error occurred while getting response from downstream server. Please refer to additionalInfo section for more details.\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/telemetry/production_micro:
get:
tags:
- System Details And Telemetry
summary: Get telemetry for all production micros for a site
description: 'Retrieves telemetry for all the production micros of a system.
If no start_at is specified, defaults to midnight today, in the timezone of the system. If the start_at specified is earlier than the system''s first reported date, then midnight of the system''s first reported date is considered as start_at.
The end_at is calculated as the minimum of the time of the request and (start time + granularity).
The meaning of granularity is as follow:
If granularity is 15mins, maximum 3 intervals will appear in response. If granularity is day, maximum 288 intervals will appear in response where each interval is of 5 mins duration.
Default interval duration is 5mins. 15mins interval duration is also supported.
The requested start date must be within 2 years from current date.
By default start_at will appear in response. If start_date parameter is passed in the url, then start_date field will appear in response.
By default end_at will appear in response. If end_date parameter is passed in the url then end_date field will appear in response.
'
operationId: getProductionMicroTelemetry
parameters:
- name: site_id
in: path
required: true
schema:
type: string
- name: start_date
in: query
required: false
schema:
type: string
- name: start_at
in: query
description: Start time for fetching the telemetry data in Epoch time format. Alternatively one can use start_date in place of start_at for passing the start date as String in YYYY-MM-DD format. By default start_at will appear in response. If start_date parameter is passed in the url, then start_date field will appear in response.
required: false
schema:
type: integer
format: int32
- name: end_at
in: query
required: false
schema:
type: integer
format: int32
- name: end_date
in: query
required: false
schema:
type: string
- name: granularity
in: query
description: 'The granularity of the telemetry data. Possible values are ''week'', ''day'', ''15mins''. Default is ''day''
Available values : 15mins, day, week
'
required: false
schema:
type: string
- name: interval_duration
in: query
description: 'Size of the interval. Possible values are ''5mins'', ''15mins''. Defaults to ''5mins''
'
required: false
schema:
type: string
default: 5mins
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Telemetry for all production micros
content:
'*/*':
schema:
$ref: '#/components/schemas/SystemsProductionMicroResponse'
examples:
UnixTimestampExample:
summary: Example using start_at and end_at timestamps
description: UnixTimestampExample
value:
system_id: 698905955
granularity: day
total_devices: 9
start_at: 1496526300
end_at: 1496528300
items: intervals
intervals:
- end_at: 1384122700
devices_reporting: 1
powr: 30
enwh: 40
- end_at: 1384122740
devices_reporting: 1
powr: 20
enwh: 40
meta:
status: normal
last_report_at: 1445619615
last_energy_at: 1445619033
operational_at: 1357023600
ISODateExample:
summary: Example using ISO date fields
description: ISODateExample
value:
system_id: 698905955
granularity: day
total_devices: 9
start_date: '2024-09-22T00:00:00-04:00'
end_date: '2024-09-23T00:00:00-04:00'
items: intervals
intervals:
- end_at: 1384122700
devices_reporting: 1
powr: 30
enwh: 40
- end_at: 1384122740
devices_reporting: 1
powr: 20
enwh: 40
meta:
status: normal
last_report_at: 1445619615
last_energy_at: 1445619033
operational_at: 1357023600
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Input date is incorrect. Date must be in yyyy-mm-dd format and must be a valid one.\",\n \"additionalInfo\": null,\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Request headers or parameters are not appropriate\",\n \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'401':
description: Unauthorized
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"Authorization is not provided or invalid\",\n \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"401\",\n \"displayMessage\": \"You are not authorized for this access\",\n \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'403':
description: Forbidden
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\n \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"message\": \"Forbidden\"\n}"
case-2:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not provided or invalid\",\n \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"No account found for specified Authorization\",\n \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"x-api-key is not valid for this account\",\n \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-5:
value: "{\n \"code\": \"403\",\n \"displayMessage\": \"You do not have access to this resource\",\n \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'404':
description: Not Found
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"404\",\n \"displayMessage\": \"Requested resource Not Found\",\n \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
'422':
description: Unprocessable Entity
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Error occurred while getting response from downstream server. Please refer to additionalInfo section for more details.\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"422\",\n \"displayMessage\": \"Unprocessable Entity\",\n \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
/api/v1/systems/{site_id}/telemetry/production_meter_readings:
get:
tags:
- System Details And Telemetry
summary: To retrieve the last known reading of each production meter on the system as of the requested time
description: 'Returns the last known reading of each production meter on the system as of the requested time,
regardless of whether the meter is currently in service or retired. Read_at is the time at which the reading was taken,
and is always less than or equal to the requested end_at. Commonly, the reading will be within 30 minutes of the requested end_at.
However, larger deltas can occur and do not necessarily mean there is a problem with the meter or the system.
Systems that are configured to report infrequently can show large deltas on all meters, especially when end_at is close to the current time.
Meters that have been retired from a system will show an end_at that doesn’t change, and that eventually is far away from the current time.
'
operationId: getProductionMeterReadings
parameters:
- name: site_id
in: path
description: Unique Id of the site
required: true
schema:
type: string
- name: end_at
in: query
description: 'End of reporting period in Unix epoch time. If no end is specified, defaults to the time of the request.
If the end is later than the last reported interval the response data ends with the last reported interval
'
required: false
schema:
type: integer
format: int64
- name: x-api-key
in: header
description: Unique API Key of your account
required: true
schema:
type: string
example: your-api-key-here
- name: Authorization
in: header
description: access_token generated from auth API must be passed as Authorization header
required: true
schema:
type: string
example: Bearer your-access-token
responses:
'200':
description: Retrieved the last known reading of each production meter on the system as of the requested time.
content:
'*/*':
schema:
$ref: '#/components/schemas/ProductionMeterReadings'
examples:
ProductionMeterReadingsExample:
summary: List of last known reading of each production meter on the system as of the requested time.
description: ProductionMeterReadingsExample
value:
system_id: 66
meter_readings:
- serial_num: 123123123123EIM2
value: 6180635
read_at: 1473901200
meta:
status: normal
last_report_at: 1473902079
last_energy_at: 1473901200
operational_at: 1357023600
'400':
description: Bad Request
content:
'*/*':
examples:
case-0:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Type Mismatch\",\n \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-1:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Missing Parameter\",\n \"additionalInfo\": \"Required xxx parameter abc is not present\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-2:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Constraint Violation\",\n \"additionalInfo\": \"xxxx\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-3:
value: "{\n \"code\": \"400\",\n \"displayMessage\": \"Content-Type invalid\",\n \"additionalInfo\": \"Content type xxx not supported\",\n \"errorRefNo\": \"e20fdf9aa241bea9\",\n}"
case-4:
value: "{\n \"code\":
# --- truncated at 32 KB (304 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/enphase/refs/heads/main/openapi/enphase-system-details-and-telemetry-api-openapi.yml