The Span API does not at this time require any authentication. This will probably change in the future.
Description: Gets panel summary, firmware version, door state, serial number, network status Request: GET /api/v1/status Response:
{
"software": {
"firmwareVersion": "spanos2/r202216/04",
"updateStatus": "idle",
"env": "prod"
},
"system": {
"manufacturer": "Span",
"serial": "nt-2139-c1ac4",
"model": "00200",
"doorState": "OPEN",
"uptime": 1475028
},
"network": {
"eth0Link": false,
"wlanLink": true,
"wwanLink": false
}
}
Description: Gets panel state, grid state, power draw for whole panel, and for each breaker Request: GET /api/v1/panel Response:
{
"mainRelayState": "CLOSED",
"instantGridPowerW": 8361.962890625,
"feedthroughPowerW": -82.79021826386452,
"gridSampleStartMs": 836674,
"gridSampleEndMs": 836686,
"dsmGridState": "DSM_GRID_UP",
"dsmState": "DSM_ON_GRID",
"currentRunConfig": "PANEL_ON_GRID",
"branches": [
{
"id": 1,
"relayState": "CLOSED",
"instantPowerW": -3.015791177749634,
"importedActiveEnergyWh": 1.4696391820907593,
"exportedActiveEnergyWh": 12594.255859375
},
{
"id": 2,
"relayState": "CLOSED",
"instantPowerW": -8.53760051727295,
"importedActiveEnergyWh": 343.6731262207031,
"exportedActiveEnergyWh": 19945.1328125
},
{
"id": 3,
"relayState": "CLOSED",
"instantPowerW": -4.699003219604492,
"importedActiveEnergyWh": 27.433591842651367,
"exportedActiveEnergyWh": 6132.89697265625
},
...
]
}
Description: Get information on individual breakers, their positions, names, state, priority Request: GET /api/v1/circuits Response:
{
"spaces": {
"xxxxxxxxxxxxxxx": {
"id": "xxxxxxxxxxxxxxx",
"name": "Garage 220",
"relayState": "CLOSED",
"instantPowerW": -3625.2879638671875,
"instantPowerUpdateTimeS": 1656531017,
"importEnergyAccumWh": 4146.5565185546875,
"exportEnergyAccumWh": 313066.625,
"energyAccumUpdateTimeS": 1656530716,
"tabs": [
12,
14
],
"priority": "NOT_ESSENTIAL",
"is_user_controllable": true,
"is_sheddable": false,
"is_never_backup": false
},
"xxxxxxxxxxxxxxx": {
"id": "xxxxxxxxxxxxxxx",
"name": "A/C condeser",
"relayState": "CLOSED",
"instantPowerW": -2428.6781005859375,
"instantPowerUpdateTimeS": 1656531017,
"importEnergyAccumWh": 11638.456787109375,
"exportEnergyAccumWh": 752839.09375,
"energyAccumUpdateTimeS": 1656530716,
"tabs": [
16,
18
],
"priority": "MUST_HAVE",
"is_user_controllable": true,
"is_sheddable": false,
"is_never_backup": false
},
"xxxxxxxxxxxxxxx": {
"id": "xxxxxxxxxxxxxxx",
"name": "Tesla charger",
"relayState": "CLOSED",
"instantPowerW": -503.9554138183594,
"instantPowerUpdateTimeS": 1656531017,
"importEnergyAccumWh": 30.012138724327087,
"exportEnergyAccumWh": 218781.4375,
"energyAccumUpdateTimeS": 1656530716,
"tabs": [
26,
28
],
"priority": "NICE_TO_HAVE",
"is_user_controllable": true,
"is_sheddable": false,
"is_never_backup": false
},
...
}
}
Description: Change breaker state, turn on/off a breaker Valid Values: OPEN, CLOSED Request: POST /api/v1/circuits/xxxxxxxxxxxxxxx
{
"relay_state_in": {
"relayState":"OPEN"
}
}
Response:
{
"id":"xxxxxxxxxxxxxxx",
"name":"Garage outlets*",
"relayState":"OPEN",
"instantPowerW":0.0,
"instantPowerUpdateTimeS":1656538555,
"importEnergyAccumWh":722.7332153320312,
"exportEnergyAccumWh":973.8363037109375,
"energyAccumUpdateTimeS":1656538493,
"tabs":[6],
"priority":"NOT_ESSENTIAL",
"is_user_controllable":true,
"is_sheddable":false,
"is_never_backup":false
}
Description: Change breaker priority Valid Values: MUST_HAVE, NICE_TO_HAVE, NOT_ESSENTIAL Request: POST /api/v1/circuits/xxxxxxxxxxxxxxx
{
"priority_in": {
"priority":"NICE_TO_HAVE"
}
}
Response:
{
"id":"xxxxxxxxxxxxxxx",
"name":"Garage outlets*",
"relayState":"OPEN",
"instantPowerW":0.0,
"instantPowerUpdateTimeS":1656539097,
"importEnergyAccumWh":722.7332153320312,
"exportEnergyAccumWh":973.8363037109375,
"energyAccumUpdateTimeS":1656538493,
"tabs":[6],
"priority":"NICE_TO_HAVE",
"is_user_controllable":true,
"is_sheddable":false,
"is_never_backup":false
}
Thanks hyun007 and patneimeyer. This script and all the info is great.
I modified patneimeyer's script to call /api/vi/panel, save it to a json file, and get the below info as part of the content. Any idea what the relayState means? All of mine are showing CLOSED for all 32 id fields.
..
"branches": [
{
"id": 1,
"relayState": "CLOSED",
"instantPowerW": 0.9801977276802063,
"importedActiveEnergyWh": 84.47095489501953,
"exportedActiveEnergyWh": 32.3878288269043
},
{
"id": 2,
"relayState": "CLOSED",
"instantPowerW": -0.25444918870925903,
"importedActiveEnergyWh": 0.31798499822616577,
"exportedActiveEnergyWh": 5361.7060546875
},
...
If anyone also knows the definition of the other fields that would also be helpful.
Cheers!!