Developers · Reference

Developer FAQ

Answers to the questions integrators ask most: sandboxes, identifiers, limits, partial failures, webhooks, data residency and leaving.

Version
v1.0.0
Base URL
https://dppapi-production.up.railway.app/v1
Format
JSON · OpenAPI 3.1
FeedbackLast updated

Dieser Artikel liegt noch nicht auf Deutsch vor und wird unten auf Englisch angezeigt.

Is there a sandbox?
Yes, without a separate environment: a test key runs against your real organisation and dry-runs every write — fully validated, nothing stored. A live key can dry-run a single request with X-DPP-Dry-Run: true.
Which plan do I need for the API?
None in particular: API access — keys, /v1 and webhooks — is included on every plan. What a call may do follows the plan: publishing needs a paid plan, supplier requests need Growth. See pricing.
Can I use my own battery identifiers?
Yes, when you are moving from another provider and the codes are already printed: send uniqueIdentifier with POST /items. Otherwise we mint one (C- + 11 characters) — short enough for the 50-character registry limit, unambiguous on a label.
One passport per battery — even for 100,000 cells a day?
Yes; Article 77(1) requires one per physical battery (for the categories in scope). POST /items/batch creates up to 1,000 per request and POST /passports/publish publishes up to 1,000; at 600 requests a minute that is far beyond any line rate.
What happens if a batch fails halfway?
Creating batteries is all-or-nothing: a batch is created in one transaction. Publishing and fleet operations are per row and answer 207 with a reason per failed row. Use an idempotency key so a retry never doubles a batch.
Why was my publish refused with 422?
The publish gate: the battery needs a place of manufacture, and its model must be complete for its category. blockers names each problem; `GET /models/{id}/completeness` lists the missing fields.
Can I delete a passport over the API?
No. Passports must stay available for ten years, so the API never deletes — see why there is no DELETE. Record recycling, change status, or delete in the app, where deletions are audited.
How do I keep my systems in sync?
Subscribe to webhooks for immediacy and run an incremental sync with updated_since as the safety net.
Who sees the data I send?
Each data point has an Annex XIII access tier. The public resolver serves only PUBLIC data; restricted tiers stay on the server. Your own key sees everything of your organisation.
Do webhooks arrive in order, exactly once?
Neither is guaranteed: deliveries are at least once and may arrive out of order. Deduplicate on the event id, and order by created_at where it matters.
Can I call the API from a browser or mobile app?
Technically yes — /v1 allows any origin — but do not: a key is an organisation-wide secret. Call it from a server you control.
How do I leave, and what happens to the QR codes?
Download everything with `GET /export/archive`. The identifiers never change; redirecting the printed address to a new provider is arranged between providers, and we accept identifiers issued elsewhere for the same reason.
Is there an SDK?
A TypeScript SDK, @collecta/dpp-sdk, is coming soon to npm. Meanwhile every endpoint has samples in seven languages, and the OpenAPI document generates clients for many more.
Is this legal advice?
No. The docs describe how the software maps the regulation; responsibility for the content of a passport stays with the economic operator.

Cookie-Einstellungen

Sie entscheiden, welche Cookies verwendet werden. Ihre Wahl können Sie jederzeit über „Cookie-Einstellungen“ im Footer ändern. Datenschutzerklärung

Notwendig

Immer aktiv

Für den Betrieb der Website erforderlich: Ihr Hell-/Dunkel-Design und diese Cookie-Auswahl werden in Ihrem Browser gespeichert. Sie dienen nicht dem Tracking.

Analyse

Google Analytics 4 misst über Statistiken, wie Seiten genutzt werden, und hilft uns, die Website zu verbessern. Wenn Sie zustimmen, setzt es Cookies und erfasst Ihren Besuch vollständig. Wenn Sie ablehnen, setzt es keine Cookies, doch Google kann weiterhin technische Daten erhalten, etwa die aufgerufene Seite, Ihren Browsertyp und Ihre IP-Adresse.

_ga, _ga_* · bis zu 2 Jahre · Google