Developers

Every fault, fix and session,
one API call away.

The same data the console runs on, through a REST API and signed webhooks. Pipe incidents into your helpdesk, push work orders to field partners, or build your own night report.

GET/v1/incidents
curl https://api.salve.energy/v1/incidents?status=open \
  -H "Authorization: Bearer sk_live_••••••••4f2a"
200 OK · 41 ms · us-east-2
Response · application/jsonCopy
{
  "data": [
    {
      "id": "INC-4812",
      "site": "Fulton Market Garage",
      "port": "US*SLV*E0233*1",
      "code": "EVCommunicationError",
      "diagnosis": "Lost link to charging module",
      "confidence": 0.94,
      "status": "fix_running",
      "playbook": "reconnect-ocpp@v3",
      "opened_at": "2026-10-25T02:14:07Z"
    }
  ],
  "has_more": false
}

Quickstart

First event in five minutes.No charger required.

Official libraries for Node, Python and Go. Everything else is plain HTTPS and JSON, documented with examples you can paste.

Step 1

Create a sandbox key

Every account comes with a sandbox: 40 simulated ports that fault on a schedule, so you can build without touching a real charger.

# Settings → API keys → New sandbox key
export SALVE_KEY="sk_test_••••••••91c0"
Step 2

Subscribe to events

Tell Salve where to send events. Every payload is signed, retried for 72 hours and kept in a replayable log.

curl https://api.salve.energy/v1/webhooks \
  -H "Authorization: Bearer $SALVE_KEY" \
  -d url="https://ops.example.com/salve" \
  -d events="incident.*,workorder.created"
Step 3

Run a playbook

Trigger an approved playbook from your own tools. Salve applies the same guardrails as in the console.

await salve.playbooks.run('unlock-reset@v3', {
  port: 'US*SLV*E0417*2',
  reason: 'Driver reported stuck cable'
});

Webhooks

Know when anything happens.Six events cover the night.

Pick an event to see its payload. Every webhook is signed with HMAC-SHA256, retried with backoff and replayable from the console.

POST https://ops.example.com/salve · incident.openedCopy
{
  "type": "incident.opened",
  "id": "evt_8Kq2",
  "incident": "INC-4812",
  "port": "US*SLV*E0233*1",
  "code": "EVCommunicationError",
  "at": "2026-10-25T02:14:07Z"
}
Salve-Signature: t=1792..., v1=8f3c...Retries: 72 h with backoff

Built to be depended on

Built for the critical path.Measured and published monthly.

Status history

99.99%

API uptime, last 12 months

41 ms

median response time

1,200

requests a minute per key

2

US regions, east and west

Get a sandbox key today.

Forty simulated ports, every event and the full API. Free, no card. Talk to an engineer when you are ready for real chargers.