Connect a virtual charger
Sandbox only: send it to https://api-staging.joulo.nl (pick the Sandbox server). Connects a charger that delivers generated sessions through the real session pipeline, then collects them.
Partner API key, sent as Authorization: Bearer <key>. Production keys start with jpk_live_ and work only on https://api.joulo.nl. Sandbox keys start with jpk_test_ and work only on https://api-staging.joulo.nl. Sandbox keys minted before September 2026 also start with jpk_live_. A key used on the wrong host returns 401 with a detail. A key is bound to one partner and reaches only the Partner API routes. Any other route returns 404 when it does not exist. A route that needs a scope the key lacks, such as GET /sessions, returns 403 with error: Insufficient scope and a required_scope. Every other route returns 403 with error: partner_api_key_scope. Mint and revoke keys in the partner portal. A partner has one active key at a time.
In: header
Path Parameters
A customer_ref from GET /partner/customers, or an account id from the CPO API or the claim helper.
false connects a charger without a MID meter. Its sessions never count toward ERE.
trueAverage energy per session, in kWh.
12Average sessions per week.
4Charging power in kW. Sets how long a session lasts.
11First day with sessions.
"2026-01-01"dateResponse Body
curl -X POST "https://api.joulo.nl/functions/v1/api/sandbox/v1/customers/string/chargers" \
-H "Content-Type: application/json" \
-d '{}'{
"ok": true,
"charger_id": "faa5efff-159a-49fd-8a8f-d55377568a59",
"integration_id": "55d7337e-1d0a-49fc-9826-925ba40df035",
"catalog_charger_id": "45aeec55-e46d-42b6-a990-2b5f65ab05a6",
"brand": "string",
"model": "string",
"mid": true,
"sync": {
"ok": true,
"sessions_created": 0,
"error": "string"
}
}{
"error": "string",
"detail": "string",
"step": "string",
"reason": "string",
"draft_status": "string"
}{
"error": "Missing or invalid API token"
}{
"error": "string",
"detail": "string",
"step": "string",
"reason": "string",
"draft_status": "string"
}{
"error": "string",
"detail": "string",
"step": "string",
"reason": "string",
"draft_status": "string"
}{
"error": "string",
"detail": "string",
"step": "string",
"reason": "string",
"draft_status": "string"
}