Dieser Artikel liegt noch nicht auf Deutsch vor und wird unten auf Englisch angezeigt.
On this pageYour first call
60-second start
Make your first call
Three steps, nothing to install. A test key reads your real data and dry-runs every write, so you can explore without changing anything.
- 1
Create a test key
In the app, open Organisation → API keys and create a
dpp_test_…key with thereadscope. - 2
Put it in your environment
Every sample in these docs reads
DPP_API_KEY, so you never paste a key into code. - 3
Ask who you are
GET /meanswers with the key’s mode, your organisation, plan, usage and rate limit.
API access is included on every plan.
# macOS / Linux. Keep the key out of source code and shell history.export DPP_API_KEY="dpp_test_…" # or dpp_live_… once you are readycurl "https://dppapi-production.up.railway.app/v1/me" \-H "Authorization: Bearer $DPP_API_KEY"{"apiKey": {"name": "SAP production","prefix": "dpp_test_3f9a","scopes": ["read", "write"],"mode": "test"},"organisation": {"id": "cm1q7v0aa0000l70f1a2b3c4d",Start here
Test keys & dry runs
Validate any write against your real data, store nothing.
Idempotency
Retry any write safely; the first answer is replayed for 24 h.
Signed webhooks
HMAC-SHA256 signatures, retried for hours, with a delivery log.
Cursor pagination
Pages of up to 200, stable while records are added.
71 EU data points
Obligation per category and access tier, as data.
No DELETE
Ten-year retention, enforced by the API itself.
How it fits together
Your systems talk to the API; the API keeps one passport per battery and serves its public tier behind the QR code; webhooks tell your systems when something changed.
Your systems
- ERP · product master data
- MES · end of line
- BMS · fleet telemetry
Collecta DPP API · /v1
One passport per battery, the publish gate and access tiers, enforced on the server.
Public resolver
/p/{uniqueIdentifier}
Behind the QR code on the battery. Public tier only; JSON-LD on request.
What it is for
Regulation (EU) 2023/1542 requires a passport for every individual LMT battery, industrial battery above 2 kWh and EV battery placed on the EU market from 18 February 2027. The API lets the systems that already describe those batteries create, publish and maintain the passports themselves — no re-typing, no spreadsheet hand-offs, and the same rules as the app, enforced on the server.
ERP
Mirror battery models from product master data, and issue a passport for every serial number your ERP records — the passport follows the data you already maintain.
MES
Register batteries as they leave the line, with place and date of manufacture and end-of-line measurements, then publish the run in one request.
BMS & fleet
Post state of health, cycles, throughput, temperature exposure and negative events from the field, so each passport reflects the battery it describes.
At a glance
- Base URL
- https://dppapi-production.up.railway.app/v1
- Auth
- Bearer API key · read / write scopes
- Keys
- dpp_live_… stores · dpp_test_… dry-runs
- Rate limit
- 600/min live · 60/min test
- Bulk
- Up to 1,000 rows per request
- Lists
- Cursor pages of up to 200
- Retries
- Idempotency-Key, stored 24 h
- Events
- 9 signed webhook types
- Spec
- OpenAPI 3.1, public
The happy path
Five calls take a battery design from nothing to live passports that stay current:
- 1
Create a model
POST/v1/modelsCategory, capacity, chemistry and the model-level data points in
fields. - 2
Close the gaps
GET/v1/models/{id}/completenessThe missing-field analysis lists what the category still requires; publishing waits until it is complete.
- 3
Create the batteries
POST/v1/items/batchOne passport per physical battery, each with its own unique identifier.
- 4
Publish
POST/v1/passports/publishThe passports go live on the public resolver behind the QR code.
- 5
Keep it current
POST/v1/passports/{id}/eventsAppend state of health and other dynamic data over the battery’s life.
Endpoints
Paths are relative to https://dppapi-production.up.railway.app/v1. GET needs the read scope; POST, PATCH and PUT need write. Every endpoint has its own section with parameters, examples in seven languages and its errors.
Account and catalogue
Models
Documents
Batteries
Passports
- GETList passports
/v1/passports - GETGet a passport
/v1/passports/{id} - POSTPublish a passport
/v1/passports/{id}/publish - POSTPublish many passports
/v1/passports/publish - PATCHChange status
/v1/passports/{id}/status - POSTMark as recycled
/v1/passports/{id}/recycle - GETPublished versions
/v1/passports/{id}/versions - GETQR code
/v1/passports/{id}/qr.svg
Dynamic data (events)
Fleet operations
Webhook endpoints
- GETList webhook endpoints
/v1/webhooks - POSTRegister a webhook endpoint
/v1/webhooks - GETEvent types
/v1/webhooks/event-types - GETGet an endpoint
/v1/webhooks/{id} - PATCHUpdate or pause an endpoint
/v1/webhooks/{id} - POSTRotate the signing secret
/v1/webhooks/{id}/rotate-secret - POSTSend a test event
/v1/webhooks/{id}/test - GETDelivery log
/v1/webhooks/{id}/deliveries - POSTResend a delivery
/v1/webhooks/deliveries/{deliveryId}/resend
Facilities
Supplier requests
Audit trail
Export
Public resolver
Guides
ERP: issue at end of line
Models from master data, passports per production order.
BMS telemetry
State of health, throughput and temperature exposure.
Supplier data requests
Ask suppliers for the fields only they know.
Recycling & end of life
Second life, waste, recycling and the 410 answer.
Raw specification: https://dppapi-production.up.railway.app/v1/openapi.json · Example ids in these docs, such as cm1q8x2k40003l70f9a8s7d6e, stand for the ids your own calls return.