The Safe Isolation Providor (SIP) API enables Installers, including Electric Vehicle (EV) charging, solar, battery and Heat Pump installation companies, to install isolators and send regulatory market messages following de-energisation and re-energisation.
The service notifies Energy Suppliers and Distribution Network Operators (DNOs) of any faults, ensuring essential communication with Suppliers, DNOs, and Asset Managers via the market messaging system. This helps maintain compliance with regulations, streamlines operations, and enhances reliability in the EV charging infrastructure.
<aside> ❗ You need an integration token to interact with the SIP API. You can find an integration token after you create an integration on the integration settings page.
</aside>
The following table outlines the suggested blocks for each scenario in the SIP API v2. An "X" indicates that the block is required or relevant for that scenario.
Scenario | job_details | contact | meter | readings | dno_issue | tampering | additional_info | maintenance | failure_reason | site_visit_issue_code |
---|---|---|---|---|---|---|---|---|---|---|
S1 | X | X | X | |||||||
S2 | X | X | X | X | X | X | ||||
S3 | X | X | X | X | ||||||
S4 | X | X | X | X | X | X | X | |||
S5 | X | X | X | X | X | |||||
S6 | X | X | X | X | X | X | X | |||
S7 | X | X | X | X | X | X | X | |||
S8 | X | X | X | X | X | X | X | |||
S9 | X | X | X | X | X | X | X |
POST /v2/job-data
Content-Type: application/json
Authorization: Bearer $SE_API_KEY
{
"job_id": string,
"outcome_code": "CO" | "IP" | "AB",
"sip_id": string,
"supplier_mpid": string,
"mpan": string,
"date_of_action": string // YYYY-MM-DD
}
{
"name": string,
"telephone": string
}
{
"serial_number": string,
"location": string,
"register_id": string,
"smart_meter": boolean,
"fault": boolean
}
{
"readings": [
{
"type": string,
"value": number
}
]
}
{
"code": "A" | "B" | "C",
"comment": string
}
{
"code": string,
"description": string
}
{
"additional_info": string
}
{
"date": string, // YYYY-MM-DD
"nature": string,
"site_visit_check_code": string
}
{
"failure_reason": string
}
{
"site_visit_issue_code": string
}
Required Blocks: job_details, contact, additional_info
{
"job_id": "JOB123456",
"outcome_code": "CO",
"sip_id": "ABCD",
"supplier_mpid": "SUPP",
"mpan": "1234567890123",
"date_of_action": "2024-08-23",
"address": {
"line1": "123 Electric Avenue",
"line2": "Powertown",
"city": "Voltagecity",
"county": "Energyshire",
"postcode": "EL1 2CT"
},
"contact": {
"name": "John Doe",
"telephone": "07123456789"
},
"meter": {
"serial_number": "MSN123456",
"location": "Outside, north wall",
"register_id": "01",
"smart_meter": true,
"fault": false
},
"readings": [
{
"type": "N",
"value": 12345
}
],
"additional_info": "EV charger installed successfully",
"sip_ani": {
"medical": false,
"third_party_presence": false
},
"maintenance": {
"date": "2024-08-23",
"nature": "Standard installation and testing",
"site_visit_check_code": "42"
}
}
Required Blocks: job_details, contact, meter, readings, site_visit_issue_code, additional_info
{
"job_id": "JOB789012",
"outcome_code": "CO",
"sip_id": "EFGH",
"supplier_mpid": "SUPP",
"mpan": "9876543210987",
"date_of_action": "2024-08-23",
"address": {
"line1": "456 Voltage Street",
"line2": "Ampere District",
"city": "Circuitville",
"county": "Ohmsshire",
"postcode": "CV1 2AC"
},
"contact": {
"name": "Jane Smith",
"telephone": "07987654321"
},
"meter": {
"serial_number": "MSN789012",
"location": "Inside, utility room",
"register_id": "02",
"smart_meter": true,
"fault": true
},
"readings": [
{
"type": "N",
"value": 54321
}
],
"additional_info": "EV charger installed successfully. Meter displaying incorrect readings.",
"sip_ani": {
"medical": false,
"third_party_presence": false
},
"maintenance": {
"date": "2024-08-23",
"nature": "EV charger installation and meter fault investigation",
"site_visit_check_code": "05"
}
}
Required Blocks: job_details, contact, dno_issue, additional_info
{
"job_id": "JOB345678",
"outcome_code": "CO",
"sip_id": "IJKL",
"supplier_mpid": "SUPP",
"mpan": "5678901234567",
"date_of_action": "2024-08-23",
"address": {
"line1": "789 Grid Road",
"line2": "Substation Quarter",
"city": "Transformertown",
"county": "Gridshire",
"postcode": "TF1 3DN"
},
"contact": {
"name": "Alice Johnson",
"telephone": "07456789012"
},
"meter": {
"serial_number": "MSN345678",
"location": "Outside, east wall",
"register_id": "03",
"smart_meter": true,
"fault": false
},
"readings": [
{
"type": "N",
"value": 67890
}
],
"dno_issue": {
"code": "C",
"comment": "Voltage fluctuation detected. DNO notified for further investigation."
},
"additional_info": "EV charger installed successfully. Customer advised about potential network issues.",
"sip_ani": {
"medical": false,
"third_party_presence": false
},
"maintenance": {
"date": "2024-08-23",
"nature": "EV charger installation and DNO issue reporting",
"site_visit_check_code": "51"
}
}
Required Blocks: job_details, contact, meter, readings, failure_reason, site_visit_issue_code, additional_info
{
"job_id": "JOB345678",
"outcome_code": "IP",
"sip_id": "IJKL",
"supplier_mpid": "SUPP",
"mpan": "5678901234567",
"date_of_action": "2024-08-23",
"address": {
"line1": "789 Grid Road",
"line2": "Substation Quarter",
"city": "Transformertown",
"county": "Gridshire",
"postcode": "TF1 3DN"
},
"contact": {
"name": "Alice Johnson",
"telephone": "07456789012"
},
"meter": {
"serial_number": "MSN345678",
"location": "Outside, east wall",
"register_id": "03",
"smart_meter": true,
"fault": false
},
"readings": [
{
"type": "N",
"value": 67890
}
],
"dno_issue": {
"code": "C",
"comment": "Voltage fluctuation detected. DNO notified for further investigation."
},
"additional_info": "EV charger installed successfully. Customer advised about potential network issues.",
"sip_ani": {
"medical": false,
"third_party_presence": false
},
"maintenance": {
"date": "2024-08-23",
"nature": "EV charger installation and DNO issue reporting",
"site_visit_check_code": "51"
}
}
Required Blocks: job_details, contact, maintenance, site_visit_issue_code, additional_info
{
"job_id": "JOB678901",
"outcome_code": "CO",
"sip_id": "QRST",
"supplier_mpid": "SUPP",
"mpan": "2345678901234",
"date_of_action": "2024-08-24",
"address": {
"line1": "202 Return Visit Avenue",
"line2": "Second Chance District",
"city": "Persistenceville",
"county": "Determinationshire",
"postcode": "RV2 4SD"
},
"contact": {
"name": "Charlie Brown",
"telephone": "07345678901"
},
"meter": {
"serial_number": "MSN678901",
"location": "Outside, south wall",
"register_id": "05",
"smart_meter": true,
"fault": false
},
"readings": [
{
"type": "N",
"value": 54321
}
],
"additional_info": "EV charger installation completed on second visit. Additional parts were required and installed.",
"sip_ani": {
"medical": false,
"third_party_presence": false
},
"maintenance": {
"date": "2024-08-24",
"nature": "EV charger installation completion and testing",
"site_visit_check_code": "42"
},
"return_work": {
"initial_visit_date": "2024-08-23",
"reason": "Additional parts required for installation",
"work_completed": "Installation of missing parts and final testing of EV charger"
}
}
Required Blocks: job_details, contact, meter, readings, tampering, site_visit_issue_code, additional_info
{
"job_id": "JOB789012",
"outcome_code": "AB",
"sip_id": "UVWX",
"supplier_mpid": "SUPP",
"mpan": "4567890123456",
"date_of_action": "2024-08-23",
"address": {
"line1": "303 Suspicious Circuit",
"line2": "Caution Zone",
"city": "Vigilantville",
"county": "Safeguardshire",
"postcode": "VG1 3ST"
},
"contact": {
"name": "David Smith",
"telephone": "07456789012"
},
"meter": {
"serial_number": "MSN789012",
"location": "Inside, under stairs",
"register_id": "06",
"smart_meter": false,
"fault": false
},
"readings": [
{
"type": "N",
"value": 87654
}
],
"additional_info": "EV charger installation aborted due to suspected meter tampering.",
"sip_ani": {
"medical": false,
"third_party_presence": false
},
"tampering": {
"code": "02",
"description": "Terminal cover damaged and signs of interference with meter connections."
},
"maintenance": {
"date": "2024-08-23",
"nature": "Inspection only - job aborted due to suspected tampering",
"site_visit_check_code": "06"
},
"failure_reason": "Suspected meter tampering. Installation cannot proceed until investigation is complete."
}
Required Blocks: job_details, contact, meter, readings, failure_reason, site_visit_issue_code, additional_info
{
"job_id": "JOB890123",
"outcome_code": "AB",
"sip_id": "YZAB",
"supplier_mpid": "SUPP",
"mpan": "5678901234567",
"date_of_action": "2024-08-23",
"address": {
"line1": "404 Faulty Meter Lane",
"line2": "Malfunction District",
"city": "Errorville",
"county": "Troubleshootshire",
"postcode": "FM1 4ME"
},
"contact": {
"name": "Eva Johnson",
"telephone": "07567890123"
},
"meter": {
"serial_number": "MSN890123",
"location": "Outside, north wall",
"register_id": "07",
"smart_meter": true,
"fault": true
},
"readings": [
{
"type": "E",
"value": 99999
}
],
"additional_info": "EV charger installation aborted due to critical meter fault detected.",
"sip_ani": {
"medical": false,
"third_party_presence": false
},
"maintenance": {
"date": "2024-08-23",
"nature": "Meter fault diagnosis and job abortion",
"site_visit_check_code": "05"
},
"failure_reason": "Critical meter fault detected. Installation cannot proceed until meter is replaced or repaired.",
"meter_fault_details": {
"fault_type": "Communication failure",
"description": "Smart meter unable to communicate with central systems. Display showing error code E004.",
"action_required": "Meter replacement needed before EV charger installation can proceed."
}
}
Required Blocks: job_details, contact, dno_issue, meter, readings, site_visit_issue_code, additional_info
{
"job_id": "JOB901234",
"outcome_code": "AB",
"sip_id": "CDEF",
"supplier_mpid": "SUPP",
"mpan": "6789012345678",
"date_of_action": "2024-08-23",
"address": {
"line1": "505 Grid Problem Street",
"line2": "Network Issues Zone",
"city": "Gridlockville",
"county": "Poweroutshire",
"postcode": "GP1 5NO"
},
"contact": {
"name": "Frank Wilson",
"telephone": "07678901234"
},
"meter": {
"serial_number": "MSN901234",
"location": "Outside, east wall",
"register_id": "08",
"smart_meter": true,
"fault": false
},
"readings": [
{
"type": "N",
"value": 76543
}
],
"additional_info": "EV charger installation aborted due to critical DNO issue detected.",
"sip_ani": {
"medical": true,
"third_party_presence": false
},
"maintenance": {
"date": "2024-08-23",
"nature": "DNO issue identification and job abortion",
"site_visit_check_code": "50"
},
"failure_reason": "Critical DNO issue detected. Installation cannot proceed until DNO resolves the problem.",
"dno_issue": {
"code": "A",
"comment": "Dangerous voltage fluctuations detected at the property. Immediate DNO intervention required."
}
}
Required Blocks: job_details, contact, dno_issue, meter, readings, site_visit_issue_code, additional_info
{
"job_id": "JOB012345",
"outcome_code": "AB",
"sip_id": "GHIJ",
"supplier_mpid": "SUPP",
"mpan": "7890123456789",
"date_of_action": "2024-08-23",
"address": {
"line1": "606 Network Concern Avenue",
"line2": "Grid Attention Area",
"city": "Infrastructureville",
"county": "Maintenanceshire",
"postcode": "NC1 6DN"
},
"contact": {
"name": "Grace Taylor",
"telephone": "07789012345"
},
"meter": {
"serial_number": "MSN012345",
"location": "Inside, hallway",
"register_id": "09",
"smart_meter": true,
"fault": false
},
"readings": [
{
"type": "N",
"value": 65432
}
],
"additional_info": "EV charger installation aborted due to significant DNO issue detected.",
"sip_ani": {
"medical": false,
"third_party_presence": false
},
"maintenance": {
"date": "2024-08-23",
"nature": "DNO issue identification and job abortion",
"site_visit_check_code": "51"
},
"failure_reason": "Significant DNO issue detected. Installation cannot proceed until DNO assesses and potentially upgrades the local network.",
"dno_issue": {
"code": "B",
"comment": "Insufficient network capacity detected for EV charger installation. Local transformer may require upgrading."
}
}
Success Response
{
"status": "success",
"message": "Data has been successfully processed."
}
Error Response
{
"status": "error",
"message": "Validation failed",
"errors": [
{
"field": "field_name",
"error": "Error description"
}
]
}
The base URL for all API requests is https://api.shocking.energy
. HTTPS is required for all API requests.
JSON Conventions
job_id
property.snake_case
(not camelCase
or kebab-case
).null
instead of an empty string to unset a value.The SIP API uses API keys for authentication. Include the API key in the request headers for authentication:
Authorization: Bearer $SE_API_KEY
The API employs rate limiting to ensure fair usage and prevent abuse. The rate limit policy is as follows:
If the rate limit is exceeded, the API will return a 429 Too Many Requests
response. Ensure your application handles this response appropriately, typically by implementing a retry mechanism with exponential backoff.
You can paste the command below into your terminal to run your first API request. Make sure to replace $SE_API_KEY
with your secret API key.
curl <https://api.shocking.energy/v2/job-data> \\\\
-H "Content-Type: application/json" \\\\
-H "Authorization: Bearer $SE_API_KEY" \\\\
-d '{
"job_details": {
"job_id": "JOB123456",
"outcome_code": "CO",
"sip_id": "ABCD",
"supplier_mpid": "SUP1",
"mpan": "1234567890123",
"date_of_action": "2024-06-24"
},
"contact": {
"name": "John Doe",
"telephone": "01234567890"
},
"additional_info": "Job completed successfully without any issues"
}'
First, you need to define a URL endpoint on your server that can accept HTTP POST requests. This endpoint will be the receiver of the JSON payloads.
It is crucial to secure your webhook endpoint. This can be achieved by:
Provide us with the URL of your webhook endpoint. This URL should be accessible from our system and be prepared to handle incoming JSON payloads.
Ensure your server is configured to handle incoming JSON payloads correctly. The incoming requests will be in the form of HTTP POST with a JSON body. Your server should:
We recommend testing the integration to verify that your webhook endpoint is correctly set up and can handle incoming JSON payloads. You can use a tool like curl to simulate an incoming request:
curl -X POST -H "Content-Type: application/json" -d '{}' <https://your-webhook-endpoint.com/path>
Replace https://your-webhook-endpoint.com/path
with the actual URL of your webhook endpoint.
| --- | --- | --- | --- | --- |
Notes
| --- | --- |
| --- | --- |