Enphase VPP API

The Virtual Power Plant API is the grid-services surface, sold only to utilities, aggregators, DERMS providers and third-party owners registered as Enphase Grid Services partners — the pricing page carries no numbers, only "Contact us" for a demo. Documented as an OpenAPI 3.0.1 contract across 55 paths and eight tags — Manage VPPs, Programs, Events, Enrolment via Applications, Forecast, System Details And Telemetry, System and Device Configuration, and Auth — it creates and operates VPP programs, enrols homes, dispatches demand-response events, forecasts fleet capacity, and steers PV, battery, EVSE, heat pump and HVAC assets. It is the only Enphase API that implements a recognised interoperability standard: OCPP 1.6 endpoints configure and reset EV charger communication against a partner's own Charging Station Management System.

OpenAPI Specification

enphase-vpp-api-openapi.json Raw ↑
{"openapi":"3.0.1","info":{"title":"API Reference","description":"Integrate the VPP API into your application","version":"1.1.0"},"servers":[{"url":"https://vpp.enphaseenergy.com"}],"paths":{"/api/v1/vpps/{vpp_id}":{"get":{"tags":["Manage VPPs"],"summary":"Retrieve details of a VPP","description":"Returns details of a VPP based on the inputted vpp_id.\nThe API provides information on VPP created and update time along with the systems count,\nsystems list, total energy in kWh and total power in kW.\nIf no VPP is associated with the id, a 404 will be returned.\n","operationId":"getVPPByKey","parameters":[{"name":"fetchLatestValues","in":"query","description":"Set to true to fetch the latest values for available_power and available_energy.Defaults to false.","required":false,"schema":{"type":"boolean","default":false}},{"name":"vpp_id","in":"path","description":"Unique ID of the VPP","required":true,"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":"VPP retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/GsApiVPP"},"example":{"name":"All Systems*","query":{"tags":{"POSTAL_CODE":["T3L 2G9"],"STATE":["RI"]},"operator":"AND"},"vpp_id":"All Systems*_Demo_Test_Program_Demo_Utility_MA","created_at":"2022-02-17T12:59:32.161+00:00","updated_at":"2022-04-19T17:00:00.768+00:00","total_energy_kwh":0,"total_power_kw":0,"available_energy_kwh":0,"available_power_kw":0,"site_ids":[]}}}},"400":{"description":"Bad Request","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Type Mismatch\",\r\n  \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-1":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Missing Parameter\",\r\n  \"additionalInfo\": \"Required xxx parameter abc is not present\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-2":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Constraint Violation\",\r\n  \"additionalInfo\": \"xxxx\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-3":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Content-Type invalid\",\r\n  \"additionalInfo\": \"Content type xxx not supported\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-4":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Request headers or parameters are not appropriate\",\r\n  \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"401\",\r\n  \"displayMessage\": \"Authorization is not provided or invalid\",\r\n  \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-1":{"value":"{\r\n  \"code\": \"401\",\r\n  \"displayMessage\": \"You are not authorized for this access\",\r\n  \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}},"403":{"description":"Forbidden","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"VPP not found with key XYZ\",\r\n  \"additionalInfo\": null,\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-1":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"Account Id does not match with VPP Creator\",\r\n  \"additionalInfo\": null,\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-2":{"value":"{\r\n  \"message\": \"Forbidden\"\r\n}"},"case-3":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"x-api-key is not provided or invalid\",\r\n  \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-4":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"No account found for specified Authorization\",\r\n  \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-5":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"x-api-key is not valid for this account\",\r\n  \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-6":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"You do not have access to this resource\",\r\n  \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}},"404":{"description":"Not Found","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"404\",\r\n  \"displayMessage\": \"Requested resource Not Found\",\r\n  \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}},"422":{"description":"Unprocessable Entity","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"422\",\r\n  \"displayMessage\": \"Unprocessable Entity\",\r\n  \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}}}},"put":{"tags":["Manage VPPs"],"summary":"Update an existing VPP in a program","description":"Update an existing VPP in a program based on the inputted VPP_ID.\nThe update can be done by grouping sites based on system-defined parameters\nsuch as STATE, CITY, SITE_IDS, and ZIP/POSTAL_CODE (only one of ZIP or postal code).\nFor each parameter, if multiple values are specified, 'OR' is used as the operator.\nFor example, if multiple ZIP/POSTAL_CODE values are specified, all sites in those areas\nwill be part of the VPP. 'All systems' VPP that is created by default during program\ncreation cannot be updated.\n","operationId":"updateVPP","parameters":[{"name":"vpp_id","in":"path","required":true,"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"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VPPUpdateRequest"},"examples":{"example-0":{"value":"{\n    \"query\": {\n    \"tags\": {\n    \"STATE\": [\n    \"RI\"\n    ],\n    \"POSTAL_CODE\" : [\"T3L 2G9\"]\n    },\n    \"operator\": \"AND\"\n    }\n}\n"},"example-1":{"value":"{\n    \"query\": {\n    \"tags\": {\n    \"STATE\": [\n    \"RI\"\n    ],\n    \"ZIP\" : [\"T3L 2G9\"]\n    },\n    \"operator\": \"AND\"\n    }\n}\n"},"example-2":{"value":"{\n\t\"query\": {\n\t\t\"tags\": {\n\t\t\t\"SITE_IDS\": [\n\t\t\t\t\"13487\",\n\t\t\t\t\"54688\",\n\t\t\t\t\"954859\"\n\t\t\t]\n\t\t},\n\t\t\"operator\": \"OR\"\n\t}\n}\n"}}}},"required":true},"responses":{"200":{"description":"VPP updated successfully","content":{"*/*":{"schema":{"type":"string"},"example":"VPP: {test} updated successfully!"}}},"400":{"description":"Bad Request","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Query cannot be empty\",\r\n  \"additionalInfo\": null,\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-1":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"VPP state: XYZ is outside the progam state: XY\",\r\n  \"additionalInfo\": null,\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-2":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Tags in Query aren't valid. Valid tags are [STATE, CITY, ZIP, POSTAL_CODE, SITE_IDS]\",\r\n  \"additionalInfo\": null,\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-3":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Type Mismatch\",\r\n  \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-4":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Missing Parameter\",\r\n  \"additionalInfo\": \"Required xxx parameter abc is not present\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-5":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Constraint Violation\",\r\n  \"additionalInfo\": \"xxxx\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-6":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Content-Type invalid\",\r\n  \"additionalInfo\": \"Content type xxx not supported\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-7":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Request headers or parameters are not appropriate\",\r\n  \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"401\",\r\n  \"displayMessage\": \"Authorization is not provided or invalid\",\r\n  \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-1":{"value":"{\r\n  \"code\": \"401\",\r\n  \"displayMessage\": \"You are not authorized for this access\",\r\n  \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}},"403":{"description":"Forbidden","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"VPP not found with key XYZ\",\r\n  \"additionalInfo\": null,\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-1":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"Account Id does not match with VPP Creator\",\r\n  \"additionalInfo\": null,\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-2":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"Permission Denied to update the VPP\",\r\n  \"additionalInfo\": \"You are not allowed to update All Systems* VPP. Please contact your service provider.\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-3":{"value":"{\r\n  \"message\": \"Forbidden\"\r\n}"},"case-4":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"x-api-key is not provided or invalid\",\r\n  \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-5":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"No account found for specified Authorization\",\r\n  \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-6":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"x-api-key is not valid for this account\",\r\n  \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-7":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"You do not have access to this resource\",\r\n  \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}},"404":{"description":"Not Found","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"404\",\r\n  \"displayMessage\": \"Requested resource Not Found\",\r\n  \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}},"422":{"description":"Unprocessable Entity","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"422\",\r\n  \"displayMessage\": \"Unprocessable Entity\",\r\n  \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}}}},"delete":{"tags":["Manage VPPs"],"summary":"Delete VPP by vpp id","description":"Delete an existing VPP in a program based on the inputted VPP_ID.\n'All systems' VPP that is created by default during program creation cannot be deleted.\n","operationId":"deleteVPPByKey","parameters":[{"name":"vpp_id","in":"path","description":"Unique ID of the VPP","required":true,"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":"VPP deleted successfully","content":{"*/*":{"schema":{"type":"string"},"example":"VPP with id ABC test vpp ABC_Test_Program_ABC deleted successfully"}}},"400":{"description":"Bad Request","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Type Mismatch\",\r\n  \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-1":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Missing Parameter\",\r\n  \"additionalInfo\": \"Required xxx parameter abc is not present\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-2":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Constraint Violation\",\r\n  \"additionalInfo\": \"xxxx\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-3":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Content-Type invalid\",\r\n  \"additionalInfo\": \"Content type xxx not supported\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-4":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Request headers or parameters are not appropriate\",\r\n  \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"401\",\r\n  \"displayMessage\": \"Authorization is not provided or invalid\",\r\n  \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-1":{"value":"{\r\n  \"code\": \"401\",\r\n  \"displayMessage\": \"You are not authorized for this access\",\r\n  \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}},"403":{"description":"Forbidden","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"Permission Denied to delete the VPP\",\r\n  \"additionalInfo\": \"You are not allowed to delete All Systems* VPP. Please contact your service provider.\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-1":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"VPP not found with key XYZ\",\r\n  \"additionalInfo\": null,\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-2":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"Account Id does not match with VPP Creator\",\r\n  \"additionalInfo\": null,\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-3":{"value":"{\r\n  \"message\": \"Forbidden\"\r\n}"},"case-4":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"x-api-key is not provided or invalid\",\r\n  \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-5":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"No account found for specified Authorization\",\r\n  \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-6":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"x-api-key is not valid for this account\",\r\n  \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-7":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"You do not have access to this resource\",\r\n  \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}},"404":{"description":"Not Found","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"404\",\r\n  \"displayMessage\": \"Requested resource Not Found\",\r\n  \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}},"422":{"description":"Unprocessable Entity","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"422\",\r\n  \"displayMessage\": \"Unprocessable Entity\",\r\n  \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}}}}},"/api/v1/systems/{site_id}/stop_live_stream":{"put":{"tags":["System and Device Configuration"],"summary":"Stop the live stream for an enrolled site","operationId":"stopStream","parameters":[{"name":"site_id","in":"path","description":"Unique Id of the site","required":true,"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":"Stopped stream for the site","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/StopStreamResponse"}},"example":[{"serial_number":"122116009243","status":"DEREGISTRATION_INITIATION_SUCCESSFUL"},{"serial_number":"122116009245","status":"DEREGISTRATION_INITIATION_SUCCESSFUL"}]}}},"400":{"description":"Bad Request","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Type Mismatch\",\r\n  \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-1":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Missing Parameter\",\r\n  \"additionalInfo\": \"Required xxx parameter abc is not present\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-2":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Constraint Violation\",\r\n  \"additionalInfo\": \"xxxx\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-3":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Content-Type invalid\",\r\n  \"additionalInfo\": \"Content type xxx not supported\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-4":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Request headers or parameters are not appropriate\",\r\n  \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"401\",\r\n  \"displayMessage\": \"Authorization is not provided or invalid\",\r\n  \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-1":{"value":"{\r\n  \"code\": \"401\",\r\n  \"displayMessage\": \"You are not authorized for this access\",\r\n  \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}},"403":{"description":"Forbidden","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\r\n  \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-1":{"value":"{\r\n  \"message\": \"Forbidden\"\r\n}"},"case-2":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"x-api-key is not provided or invalid\",\r\n  \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-3":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"No account found for specified Authorization\",\r\n  \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-4":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"x-api-key is not valid for this account\",\r\n  \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-5":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"You do not have access to this resource\",\r\n  \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}},"404":{"description":"Not Found","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"404\",\r\n  \"displayMessage\": \"Requested resource Not Found\",\r\n  \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}},"422":{"description":"Unprocessable Entity","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"422\",\r\n  \"displayMessage\": \"Site eSW version does not support live telemetry data\",\r\n  \"additionalInfo\": \"xxxx\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-1":{"value":"{\r\n  \"code\": \"422\",\r\n  \"displayMessage\": \"Unprocessable Entity\",\r\n  \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}}}}},"/api/v1/systems/{site_id}/start_live_stream":{"put":{"tags":["System and Device Configuration"],"summary":"Start the live stream for an enrolled site","operationId":"startStream","parameters":[{"name":"site_id","in":"path","description":"Unique Id of the site","required":true,"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":"Started stream for the site","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/StartStreamResponse"}},"example":[{"serial_number":"122116009243","status":"REGISTRATION_INITIATION_SUCCESSFUL"},{"serial_number":"122116009245","status":"REGISTRATION_INITIATION_SUCCESSFUL"}]}}},"400":{"description":"Bad Request","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Type Mismatch\",\r\n  \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-1":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Missing Parameter\",\r\n  \"additionalInfo\": \"Required xxx parameter abc is not present\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-2":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Constraint Violation\",\r\n  \"additionalInfo\": \"xxxx\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-3":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Content-Type invalid\",\r\n  \"additionalInfo\": \"Content type xxx not supported\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-4":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Request headers or parameters are not appropriate\",\r\n  \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"401\",\r\n  \"displayMessage\": \"Authorization is not provided or invalid\",\r\n  \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-1":{"value":"{\r\n  \"code\": \"401\",\r\n  \"displayMessage\": \"You are not authorized for this access\",\r\n  \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}},"403":{"description":"Forbidden","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\r\n  \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-1":{"value":"{\r\n  \"message\": \"Forbidden\"\r\n}"},"case-2":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"x-api-key is not provided or invalid\",\r\n  \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-3":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"No account found for specified Authorization\",\r\n  \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-4":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"x-api-key is not valid for this account\",\r\n  \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-5":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"You do not have access to this resource\",\r\n  \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}},"404":{"description":"Not Found","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"404\",\r\n  \"displayMessage\": \"Requested resource Not Found\",\r\n  \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}},"422":{"description":"Unprocessable Entity","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"422\",\r\n  \"displayMessage\": \"Live telemetry data is not enabled for this program\",\r\n  \"additionalInfo\": \"xxxx\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-1":{"value":"{\r\n  \"code\": \"422\",\r\n  \"displayMessage\": \"Site eSW version does not support live telemetry data\",\r\n  \"additionalInfo\": \"xxxx\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-2":{"value":"{\r\n  \"code\": \"422\",\r\n  \"displayMessage\": \"Unprocessable Entity\",\r\n  \"additionalInfo\": \"Unprocessable Entity. Please check your request\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}}}}},"/api/v1/systems/{site_id}/settings":{"get":{"tags":["System and Device Configuration"],"summary":"Fetch site settings for an enrolled site","operationId":"getSiteSettings","parameters":[{"name":"site_id","in":"path","description":"Unique Id of the site","required":true,"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":"Fetched site settings for an enrolled site","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SiteSettingsResponseDTO"},"example":{"vpp_event_reserve_soc":20}}}},"400":{"description":"Bad Request","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Type Mismatch\",\r\n  \"additionalInfo\": \"Cannot cast the parameter to required type xxxx\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-1":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Missing Parameter\",\r\n  \"additionalInfo\": \"Required xxx parameter abc is not present\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-2":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Constraint Violation\",\r\n  \"additionalInfo\": \"xxxx\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-3":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Content-Type invalid\",\r\n  \"additionalInfo\": \"Content type xxx not supported\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-4":{"value":"{\r\n  \"code\": \"400\",\r\n  \"displayMessage\": \"Request headers or parameters are not appropriate\",\r\n  \"additionalInfo\": \"Request headers or parameters are not appropriate. Please check request headers and parameters\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}},"401":{"description":"Unauthorized","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"401\",\r\n  \"displayMessage\": \"Authorization is not provided or invalid\",\r\n  \"additionalInfo\": \"Authorization is not provided or invalid. Please check your Authorization\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-1":{"value":"{\r\n  \"code\": \"401\",\r\n  \"displayMessage\": \"You are not authorized for this access\",\r\n  \"additionalInfo\": \"You are not authorized for this access. Please check your access\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}},"403":{"description":"Forbidden","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"Site is not enrolled in any program which belongs to your account.\",\r\n  \"additionalInfo\": \"Site is not enrolled in any program which belongs to your account.\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-1":{"value":"{\r\n  \"message\": \"Forbidden\"\r\n}"},"case-2":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"x-api-key is not provided or invalid\",\r\n  \"additionalInfo\": \"x-api-key is not provided or invalid. Please check your x-api-key\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-3":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"No account found for specified Authorization\",\r\n  \"additionalInfo\": \"No account found for specified Authorization. Please check your access_token\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-4":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"x-api-key is not valid for this account\",\r\n  \"additionalInfo\": \"x-api-key is not valid for this account. Please check your x-api-key\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"},"case-5":{"value":"{\r\n  \"code\": \"403\",\r\n  \"displayMessage\": \"You do not have access to this resource\",\r\n  \"additionalInfo\": \"You do not have access to this resource. Please check your access\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}},"404":{"description":"Not Found","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"404\",\r\n  \"displayMessage\": \"Requested resource Not Found\",\r\n  \"additionalInfo\": \"Requested resource Not Found. Please check your request\",\r\n  \"errorRefNo\": \"e20fdf9aa241bea9\",\r\n}"}}}}},"422":{"description":"Unprocessable Entity","content":{"*/*":{"examples":{"case-0":{"value":"{\r\n  \"code\": \"422\",\r\n  \"displayMessag

# --- truncated at 32 KB (526 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/enphase/refs/heads/main/openapi/enphase-vpp-api-openapi.json