Enphase Energy Site Level Consumption Monitoring API

The Site Level Consumption Monitoring API from Enphase Energy — 11 operation(s) for site level consumption monitoring.

Operations 11

GET /api/v4/systems/{system_id}/consumption_meter_readings consumption_meter_readings
GET /api/v4/systems/{system_id}/storage_meter_readings storage_meter_readings
GET /api/v4/systems/{system_id}/consumption_lifetime consumption_lifetime
GET /api/v4/systems/{system_id}/battery_lifetime battery_lifetime
GET /api/v4/systems/{system_id}/energy_import_lifetime import_lifetime
GET /api/v4/systems/{system_id}/energy_export_lifetime export_lifetime
GET /api/v4/systems/{system_id}/telemetry/battery Retrieves telemetry for all batteries for a system
GET /api/v4/systems/{system_id}/telemetry/consumption_meter Retrieves telemetry for all consumption meters for a system
GET /api/v4/systems/{system_id}/energy_import_telemetry Retrieves energy imported from grid in regular intervals
GET /api/v4/systems/{system_id}/energy_export_telemetry Retrieves energy exported to grid in regular intervals
GET /api/v4/systems/{system_id}/latest_telemetry Returns a system's last reported PV Power, Consumption Power, and Battery Power in Watts. Return’s operational mode for Battery, HP, and EVSE

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/enphase-site-level-consumption-monitoring-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

enphase-site-level-consumption-monitoring-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Site Level Consumption Monitoring API
  version: v4
servers:
- url: https://api-qa2.enphaseenergy.com
tags:
- name: Site Level Consumption Monitoring
paths:
  /api/v4/systems/{system_id}/consumption_meter_readings:
    get:
      summary: consumption_meter_readings
      description: Returns the last known reading of each consumption 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.
      tags:
      - Site Level Consumption Monitoring
      parameters:
      - name: system_id
        in: path
        description: The unique numeric ID of the system
        required: true
        schema:
          type: integer
      - 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
        schema:
          type: integer
      responses:
        '200':
          description: consumption_meter_readings
          content:
            application/json:
              schema:
                type: object
                properties:
                  system_id:
                    type: integer
                    description: System id
                  meter_readings:
                    type: array
                    items:
                      properties:
                        serial_num:
                          type: string
                          description: the serial number of the meter
                        value:
                          type: integer
                          description: the meter reading, in Wh
                        read_at:
                          type: integer
                          description: the time when the reading was taken, always prior or equal to the requested 'end_at'
                    description: Consumption Meter Readings
                  meta:
                    type: object
                    properties:
                      status:
                        type: string
                        description: System's status. Corresponding Enlighten values can be found in table added at the end of page.
                      last_report_at:
                        type: integer
                        description: Timestamp (in epoch format) at which the system's Envoy last submitted a report
                      last_energy_at:
                        type: integer
                        description: Timestamp (in epoch format) at which the systems's produced energy was last reported. Even if the last produced energy is 0, its timestamp will be returned.
                      operational_at:
                        type: integer
                        description: Timestamp (in epoch format) at which this system became operational. Corresponds to the system’s interconnect time, if one is specified. Otherwise, it is the system’s first reported interval end time.
                    description: Information about the system such as its status, when it became operational and last reported to Envoy.
              example:
                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
        '401':
          description: Authentication Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
              example:
                message: Not Authorized
                details: User is not authorized
                code: 401
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
              example:
                message: Forbidden
                details: Not authorized to access this resource
                code: 403
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
              example:
                message: Not Authorized
                details: System not found for {:id=>"1"}
                code: 404
        '405':
          description: Method Not Allowed
          content:
            application/json:
              schema:
                type: object
                properties:
                  reason:
                    type: string
                  message:
                    type: array
                    items:
                      type: string
              example:
                reason: '405'
                message:
                - Method not allowed
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
              example:
                message: Unprocessable Entity
                details: Failed to parse date 1613543106
                code: 422
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
                  period:
                    type: string
                    description: Quota exceeded for minute/month
                  period_start:
                    type: integer
                    description: Starting period timestamp
                  period_end:
                    type: integer
                    description: Ending period timestamp
                  limit:
                    type: integer
                    description: Limit count for the period
              example:
                message: Too Many Requests
                details: Usage limit exceeded for plan Kilowatt
                code: 429
                period: minute
                period_start: 1623825660
                period_end: 1623825720
                limit: 5
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                type: object
                properties:
                  reason:
                    type: string
                  message:
                    type: array
                    items:
                      type: string
              example:
                reason: '501'
                message:
                - Not Implemented
  /api/v4/systems/{system_id}/storage_meter_readings:
    get:
      summary: storage_meter_readings
      description: Returns the last known reading of each storage 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.
      tags:
      - Site Level Consumption Monitoring
      parameters:
      - name: system_id
        in: path
        description: The unique numeric ID of the system
        required: true
        schema:
          type: integer
      - 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
        schema:
          type: integer
      responses:
        '200':
          description: storage_meter_readings
          content:
            application/json:
              schema:
                type: object
                properties:
                  system_id:
                    type: integer
                    description: System id
                  meter_readings:
                    type: array
                    items:
                      properties:
                        serial_num:
                          type: string
                          description: the serial number of the meter
                        value_charged:
                          type: integer
                          description: the meter reading for energy charged, in Wh
                        value_discharged:
                          type: integer
                          description: the meter reading for energy discharged, in Wh
                        read_at:
                          type: integer
                          description: the time when the reading was taken, always prior or equal to the requested 'end_at'
                    description: Storage Meter Readings
                  meta:
                    type: object
                    properties:
                      status:
                        type: string
                        description: System's status. Corresponding Enlighten values can be found in table added at the end of page.
                      last_report_at:
                        type: integer
                        description: Timestamp (in epoch format) at which the system's Envoy last submitted a report
                      last_energy_at:
                        type: integer
                        description: Timestamp (in epoch format) at which the systems's produced energy was last reported. Even if the last produced energy is 0, its timestamp will be returned.
                      operational_at:
                        type: integer
                        description: Timestamp (in epoch format) at which this system became operational. Corresponds to the system’s interconnect time, if one is specified. Otherwise, it is the system’s first reported interval end time.
                    description: Information about the system such as its status, when it became operational and last reported to Envoy.
              example:
                system_id: 66
                meter_readings:
                - serial_num: 482520034566EIM4
                  value_charged: 137436
                  value_discharged: 2689
                  read_at: 1762753711
                meta:
                  status: normal
                  last_report_at: 1473902079
                  last_energy_at: 1473901200
                  operational_at: 1357023600
        '401':
          description: Authentication Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
              example:
                message: Not Authorized
                details: User is not authorized
                code: 401
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
              example:
                message: Forbidden
                details: Not authorized to access this resource
                code: 403
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
              example:
                message: Not Authorized
                details: System not found for {:id=>"1"}
                code: 404
        '405':
          description: Method Not Allowed
          content:
            application/json:
              schema:
                type: object
                properties:
                  reason:
                    type: string
                  message:
                    type: array
                    items:
                      type: string
              example:
                reason: '405'
                message:
                - Method not allowed
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
              example:
                message: Unprocessable Entity
                details: Failed to parse date 1613543106
                code: 422
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
                  period:
                    type: string
                    description: Quota exceeded for minute/month
                  period_start:
                    type: integer
                    description: Starting period timestamp
                  period_end:
                    type: integer
                    description: Ending period timestamp
                  limit:
                    type: integer
                    description: Limit count for the period
              example:
                message: Too Many Requests
                details: Usage limit exceeded for plan Kilowatt
                code: 429
                period: minute
                period_start: 1623825660
                period_end: 1623825720
                limit: 5
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                type: object
                properties:
                  reason:
                    type: string
                  message:
                    type: array
                    items:
                      type: string
              example:
                reason: '501'
                message:
                - Not Implemented
  /api/v4/systems/{system_id}/consumption_lifetime:
    get:
      summary: consumption_lifetime
      description: "Returns a daily time series of energy consumption as measured by the consumption meter installed on the specified system. All measurements are in Watt hours.\n The time series includes one entry for each day from the start_date to the end_date. There are no gaps in the time series. If the response includes trailing zeroes, such as [909, 4970, 0, 0, 0], then no data has been reported for the last three days."
      tags:
      - Site Level Consumption Monitoring
      parameters:
      - name: system_id
        in: path
        description: The unique numeric ID of the system
        required: true
        schema:
          type: integer
      - name: start_date
        in: query
        description: 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.
        schema:
          type: string
      - name: end_date
        in: query
        description: End date of the time series data. Defaults to yesterday if start_date is earlier than the system’s current date; it defaults to today if start_date is the current date. Pass as String date format YYYY-MM-DD.
        schema:
          type: string
      responses:
        '200':
          description: consumption_lifetime
          content:
            application/json:
              schema:
                type: object
                properties:
                  system_id:
                    type: integer
                    description: The unique numeric ID of the system
                  start_date:
                    type: string
                    description: When no start_date parameter is specified on the request, defaults to the operational_date of the system. May be null if system has never produced. When a start_date parameter is included in the request, the same is included in the response
                  consumption:
                    type: array
                    description: An array of consumption measurements in Wh, one for each day since consumption metering began, or one for each day of the requested period
                    items:
                      type: integer
                  meta:
                    type: object
                    properties:
                      status:
                        type: string
                        description: System's status. Corresponding Enlighten values can be found in table added at the end of page.
                      last_report_at:
                        type: integer
                        description: Timestamp (in epoch format) at which the system's Envoy last submitted a report
                      last_energy_at:
                        type: integer
                        description: Timestamp (in epoch format) at which the systems's produced energy was last reported. Even if the last produced energy is 0, its timestamp will be returned.
                      operational_at:
                        type: integer
                        description: Timestamp (in epoch format) at which this system became operational. Corresponds to the system’s interconnect time, if one is specified. Otherwise, it is the system’s first reported interval end time.
                    description: Information about the system such as its status, when it became operational and last reported to Envoy.
              example:
                system_id: 66
                start_date: '2016-08-01'
                consumption:
                - 15422
                - 15421
                - 17118
                - 18505
                - 18511
                - 18487
                meta:
                  status: normal
                  last_report_at: 1470087000
                  last_energy_at: 1470086106
                  operational_at: 1357023600
        '401':
          description: Authentication Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
              example:
                message: Not Authorized
                details: User is not authorized
                code: 401
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
              example:
                message: Forbidden
                details: Not authorized to access this resource
                code: 403
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
              example:
                message: Not Found
                details: System not found for {:id=>"1"}
                code: 404
        '405':
          description: Method Not Allowed
          content:
            application/json:
              schema:
                type: object
                properties:
                  reason:
                    type: string
                  message:
                    type: array
                    items:
                      type: string
              example:
                reason: '405'
                message:
                - Method not allowed
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
              example:
                message: Unprocessable Entity
                details: Requested date is in the future
                code: 422
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
              example:
                message: Too Many Requests
                details: Usage limit exceeded for plan Kilowatt
                code: 429
        '501':
          description: Not Implemented
          content:
            application/json:
              schema:
                type: object
                properties:
                  reason:
                    type: string
                  message:
                    type: array
                    items:
                      type: string
              example:
                reason: '501'
                message:
                - Not Implemented
  /api/v4/systems/{system_id}/battery_lifetime:
    get:
      summary: battery_lifetime
      description: Returns a daily time series of energy charged into the batteries and energy discharged from the batteries for a system over its lifetime. All measurements are in Watt hours. The time series includes one entry for each day from the start_date to the end_date with no gaps in the time series. If the response includes trailing zeroes, such as [909, 4970, 0, 0, 0], then no energy has been charged/discharged for the last days in the series.
      tags:
      - Site Level Consumption Monitoring
      parameters:
      - name: system_id
        in: path
        description: The unique numeric ID of the system
        required: true
        schema:
          type: integer
      - name: start_date
        in: query
        description: 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.
        schema:
          type: string
      - name: end_date
        in: query
        description: End date of the time series data. Defaults to yesterday if start_date is earlier than the system’s current date; it defaults to today if start_date is the current date. Pass as String date format YYYY-MM-DD.
        schema:
          type: string
      responses:
        '200':
          description: battery_lifetime
          content:
            application/json:
              schema:
                type: object
                properties:
                  system_id:
                    type: integer
                    description: The unique numeric ID of the system
                  start_date:
                    type: string
                    description: When no start_date parameter is specified on the request, defaults to the operational_date of the system. May be null if system has never produced. When a start_date parameter is included in the request, the same is included in the response
                  charge:
                    type: array
                    description: An array of charge measurements, one for each day since the system started producing, or one for each day of the requested period. If the system has never produced energy, the array may be empty
                    items:
                      type: integer
                  discharge:
                    type: array
                    description: An array of dicharge measurements, one for each day since the system started producing, or one for each day of the requested period. If the system has never produced energy, the array may be empty
                    items:
                      type: integer
                  meta:
                    type: object
                    properties:
                      status:
                        type: string
                        description: System's status. Corresponding Enlighten values can be found in table added at the end of page.
                      last_report_at:
                        type: integer
                        description: Timestamp (in epoch format) at which the system's Envoy last submitted a report
                      last_energy_at:
                        type: integer
                        description: Timestamp (in epoch format) at which the systems's produced energy was last reported. Even if the last produced energy is 0, its timestamp will be returned.
                      operational_at:
                        type: integer
                        description: Timestamp (in epoch format) at which this system became operational. Corresponds to the system’s interconnect time, if one is specified. Otherwise, it is the system’s first reported interval end time.
                    description: Information about the system such as its status, when it became operational and last reported to Envoy.
              example:
                system_id: 66
                start_date: '2016-08-01'
                discharge:
                - 15422
                - 15421
                - 17118
                - 18505
                - 18511
                - 18487
                charge:
                - 15422
                - 15421
                - 17118
                - 18505
                - 18511
                - 18487
                meta:
                  status: normal
                  last_report_at: 1470087000
                  last_energy_at: 1470086106
                  operational_at: 1357023600
        '401':
          description: Authentication Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
              example:
                message: Not Authorized
                details: User is not authorized
                code: 401
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
              example:
                message: Forbidden
                details: Not authorized to access this resource
                code: 403
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Error Type
                  details:
                    type: string
                    description: Error Details
                  code:
                    type: integer
                    description: Error Code
              example:
                message: Not Found
                details: System not found f

# --- truncated at 32 KB (100 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/enphase/refs/heads/main/openapi/enphase-site-level-consumption-monitoring-api-openapi.yml