For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Dashboard
DocsAPI Reference
Dashboard
LogoLogo
DocsAPI Reference
  • OCPPLAB Gateway API
        • GETList chargers in location
        • POSTCreate chargers in location (durable)
        • PUTUpdate chargers in location
        • DELDelete chargers in location
        • GETGet bulk charger-create job status
OCPPLAB Gateway APILocation OperationsLocation Chargers

Create chargers in location (durable)

||View as Markdown|
POST
https://host.com/ocpp/locations/:location_id/chargers
POST
/ocpp/locations/:location_id/chargers
1import requests
2
3url = "https://host.com/ocpp/locations/4090477f-a416-4515-a302-97aa344a0a2a/chargers"
4
5payload = [
6 {
7 "template": {
8 "brand_slug": "schneider",
9 "model_slug": "evlink-pro-ac-22kw",
10 "connector_type": "CCS2",
11 "ws_url": "wss://ocpp.ocpplab.com",
12 "ocpp_version": "OCPP1.6",
13 "identity_prefix": "SITE_A_",
14 "template_name": "Charger"
15 },
16 "charger_ids": ["001", "002"],
17 "chargers_number": 5
18 }
19]
20headers = {
21 "Authorization": "Bearer <token>",
22 "Content-Type": "application/json"
23}
24
25response = requests.post(url, json=payload, headers=headers)
26
27print(response.json())
1{
2 "job_id": "4f6b5e0e-7d1a-4b0a-9c2e-abc123456789",
3 "status": "PROVISIONING",
4 "status_url": "/ocpp/locations/4090477f-a416-4515-a302-97aa344a0a2a/chargers/jobs/4f6b5e0e-7d1a-4b0a-9c2e-abc123456789",
5 "workflow_run_id": "wfr_abc123"
6}
Create multiple charger deployments under the selected location. Returns **202 Accepted** in under a second once the job row is written; each charger is provisioned as its own durable Upstash Workflow step with per-step retries, so a 1000-charger batch completes without holding the HTTP connection open. Poll `GET {status_url}` every 1-2s until `status == READY` (or `FAILED`). The poll payload's `results` column returns the same `created` / `failed` shape the old synchronous endpoint used to return inline.
Was this page helpful?
Previous

List chargers in location

Next

Update chargers in location

Built with

Create multiple charger deployments under the selected location. Returns 202 Accepted in under a second once the job row is written; each charger is provisioned as its own durable Upstash Workflow step with per-step retries, so a 1000-charger batch completes without holding the HTTP connection open. Poll GET {status_url} every 1-2s until status == READY (or FAILED). The poll payload’s results column returns the same created / failed shape the old synchronous endpoint used to return inline.

Authentication

AuthorizationBearer

Bearer authentication of the form Bearer <token>, where token is your auth token.

Path parameters

location_idstringRequired
Internal location identifier returned by the location CRUD API.

Request

This endpoint expects a list of objects.
templateobjectRequired
Shared charger properties applied to every charger in a group.
charger_idslist of strings or nullOptional

Explicit identity suffixes. Truncated to chargers_number when longer.

chargers_numberinteger or nullOptional

Total chargers to create. Pads with random hex suffixes when charger_ids is shorter.

Response

Bulk charger provisioning accepted; poll status_url

job_idstring
statusenum

Terminal + in-flight states for async charger provisioning.

Mirrors CpoProvisioningStatus so callers observe the same shape for both durable flows. PENDING is the transient state between the 202 response and the workflow’s first webhook.

Allowed values:
status_urlstring
workflow_run_idstring or null

Errors

401
Unauthorized Error
403
Forbidden Error
404
Not Found Error
422
Unprocessable Entity Error
500
Internal Server Error
503
Service Unavailable Error