Build charging-linked experiences with Nerava.
The Partner API lets a charging network, app or platform send charging sessions to Nerava, find out whether they qualify for a program, and receive signed results. Access is granted to approved partners.
Authentication
Send your API key in the X-Partner-Key header. Keys are scoped (for example, sessions:write), stored only as SHA-256 hashes, and can be revoked or rotated without changing your partner account.
Submit a session
Send sessions as they start, update or complete. Required fields are partner_session_id, partner_driver_id, status (candidate, charging or completed) and session_start. Optional fields include charger, network, connector, power, energy, location and battery levels.
candidate sessions are soft signals and skip program evaluation. How much a session is trusted depends on the evidence it carries and your partner trust tier, so not every submitted session is treated as verified.
Signed webhooks
Nerava can notify you when results are ready, for example grant.created or partner.session.resolved. Each request carries X-Nerava-Event and X-Nerava-Signature: sha256=<hex>, an HMAC-SHA256 of the raw request body using your webhook secret. Failed deliveries are retried up to three times.
curl -X POST https://api.nerava.network/v1/partners/sessions \
-H "X-Partner-Key: $NERAVA_PARTNER_KEY" \
-H "Content-Type: application/json" \
-d '{
"partner_session_id": "sess_8412",
"partner_driver_id": "drv_2207",
"status": "completed",
"session_start": "2026-10-01T17:05:00Z",
"session_end": "2026-10-01T17:41:00Z",
"charger_id": "site-14-stall-3",
"charger_network": "your-network",
"kwh_delivered": 31.0
}'{
"session_event_id": "6f1c…",
"partner_session_id": "sess_8412",
"status": "completed",
"verified": true,
"quality_score": 72,
"session_start": "2026-10-01T17:05:00+00:00",
"session_end": "2026-10-01T17:41:00+00:00",
"duration_minutes": 36,
"kwh_delivered": 31.0,
"charger_id": "site-14-stall-3",
"grant": null
}import crypto from 'node:crypto'
// rawBody: the exact bytes Nerava sent. secret: your webhook secret.
export function isFromNerava(rawBody, signatureHeader, secret) {
const expected = 'sha256=' + crypto.createHmac('sha256', secret).update(rawBody).digest('hex')
const a = Buffer.from(expected)
const b = Buffer.from(signatureHeader || '')
return a.length === b.length && crypto.timingSafeEqual(a, b)
}Endpoints
| POST /v1/partners/sessions | Submit a charging session. Idempotent on partner_session_id: re-sending returns the existing session. |
| PATCH /v1/partners/sessions/{partner_session_id} | Update telemetry or mark a session completed. |
| GET /v1/partners/sessions | List your sessions. |
| GET /v1/partners/sessions/{partner_session_id} | One session with its program result, if any. |
| GET /v1/partners/grants | Program results (grants) for your sessions. |
| GET /v1/partners/campaigns/available | Programs your sessions can qualify for. |
| GET /v1/partners/me | Your partner profile and usage. |
Example values above are illustrative. Field names and response shapes match the current API. There is no public SDK package; approved partners receive keys and integration help directly.