Claim a draft as the customer
Sandbox only: send it to https://api-staging.joulo.nl (pick the Sandbox server). Logs in as the draft's customer and runs the claim page: claim, then activate with the machtiging accepted. With submit: true it also connects a virtual charger and submits the registration. It never logs into an account you did not create.
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 draft id or your external_ref from GET /partner/drafts.
Also connect a virtual charger and submit the registration. Works for particulier drafts.
falseStored as the customer would enter it. With submit: true it defaults to the test IBAN NL91ABNA0417164300, because ERE is allocatable only with an IBAN on the account. Send null to test a customer without an IBAN.
15 <= length <= 34Overrides the uploaded EAN. A test value picks the EAN check outcome.
^[0-9]{18}$A Dutch mobile number. A test number when absent.
A test street when absent.
The virtual charger for submit.
Response Body
curl -X POST "https://api.joulo.nl/functions/v1/api/sandbox/v1/drafts/string/claim" \
-H "Content-Type: application/json" \
-d '{}'{
"ok": true,
"draft_id": "d998e5e8-954a-4a68-bb9e-7305e87278c0",
"external_ref": "string",
"account_id": "449e7a5c-69d3-4b8a-aaaf-5c9b713ebc65",
"email": "string",
"draft_status": "string",
"registration_status": "string",
"steps": {
"claim": "string",
"activate": "string",
"submit": "ok",
"iban": "stored"
},
"charger": {
"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"
}
},
"sync": {
"ok": true,
"sessions_created": 0,
"error": "string"
},
"next": "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"
}{
"error": "string",
"detail": "string",
"step": "string",
"reason": "string",
"draft_status": "string"
}{
"error": "string",
"detail": "string",
"step": "string",
"reason": "string",
"draft_status": "string"
}