Getting started

DPP Automate Documentation

DPP Automate is the issuance and audit platform for Digital Product Passports. Issue compliant passports for every EU-bound product, capture supplier declarations down the supply chain, and hand notified bodies an audit-ready export — all from a single API.

What is DPP Automate?

Under ESPR, every product placed on the EU market needs a Digital Product Passport — a structured, machine-readable record that carries materials, carbon footprint, supplier provenance, and lifecycle events. The first regulations bite in 2027 (Battery), with textiles, electronics, and consumer goods following on a staggered timeline through 2030.

DPP Automate is the platform that issues those passports at scale, keeps them in sync with your ERP/PIM, and hands notified bodies a time-bounded audit room when they ask. The product is built on four primitives: the Passport object, the Supplier graph, the Lifecycle ledger, and the Audit room. Everything in this documentation is composed out of those four.

Quickstart

Issue your first passport in under five minutes. You'll need a free sandbox API key — grab one from the dashboard, then follow the three steps below.

1. Get an API key

Generate one in the dashboard's API Keys page, then export it as DPP_API_KEY so the snippets below pick it up. Sandbox keys (sk_test_…) and production keys (sk_live_…) hit different data; they're not interchangeable.

Shell
# Generate one in the dashboard's API Keys page,
# then export it for the rest of your shell session.
export DPP_API_KEY="sk_live_..."

2. Authenticate

Every request carries a bearer token in the Authorization header. Hit /v1/health first to confirm your key is live and your network can reach the API.

cURL
curl https://api.dppautomate.com/v1/health \
  -H "Authorization: Bearer $DPP_API_KEY"

3. Issue your first passport

POST to /v1/passports with the regulation ( EU 2023/1542for batteries), GTIN, manufacturer, materials, and carbon payload. You'll get back a signed passport with a public QR URL — that URL is what consumers scan on the physical product.

cURL
curl https://api.dppautomate.com/v1/passports \
  -X POST \
  -H "Authorization: Bearer $DPP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "category": "battery",
    "regulation": "EU 2023/1542",
    "gtin": "07612345678901",
    "manufacturer": "Lumiform Cells GmbH",
    "placedOnMarket": "2026-09-01",
    "product": {
      "sku": "BAT-18650-A",
      "name": "18650 Lithium Cell",
      "serialNumber": "LF-2026-00042"
    },
    "materials": [
      { "name": "Lithium",  "mass_g": 2.1, "origin": "AU" },
      { "name": "Cobalt",   "mass_g": 1.4, "origin": "CD" },
      { "name": "Graphite", "mass_g": 4.6, "origin": "CN" }
    ],
    "carbon": { "kgCO2e": 8.7, "scope": "cradle_to_gate" }
  }'

The response carries the canonical identifiers you'll persist on your side:

JSON
{
  "id": "psp_01HQ7K9ZJX8N4MRB5VS0YQ2F3T",
  "status": "issued",
  "category": "battery",
  "regulation": "EU 2023/1542",
  "qrUrl":     "https://dpp.automate/p/psp_01HQ7K9ZJX",
  "publicUrl": "https://dpp.automate/passport/psp_01HQ7K9ZJX",
  "apiUrl":    "https://api.dppautomate.com/v1/passports/psp_01HQ7K9ZJX",
  "createdAt": "2026-09-01T10:14:22Z"
}

Building blocks

DPP Automate composes four primitives. Every API request and every webhook event resolves down to one of these.

Passport object

A structured, signed, versioned record of a product. Carries materials, carbon, suppliers, and lifecycle events.

Learn more

Supplier graph

Tier-N supplier relationships with signed declarations. Traverse upstream to verify origin claims without spreadsheets.

Learn more

Lifecycle ledger

Append-only log of every passport state change — issued, repaired, recycled, revoked. Audit-grade history.

Learn more

Audit room

Time-bounded, scoped access for notified bodies and auditors. Export-ready evidence packs with one click.

Learn more

Common workflows

Three workflows cover most of what teams build on top of DPP Automate. Each one stitches a few primitives together; the cookbook walks through the full pattern.

Issuance at scale

Issue thousands of passports from a CSV or PIM webhook. Batch endpoint + idempotency keys do the heavy lifting.

View recipe

Supplier onboarding

Invite tier-N suppliers, collect signed declarations, and wire the responses into your passport schema automatically.

View recipe

Audit-ready exports

Generate a time-bounded audit room and a downloadable evidence pack the moment a notified body requests one.

View recipe

Reference

When you're ready to go beyond the quickstart, the reference docs cover every endpoint, every webhook event, and every schema.

REST API Reference

Every endpoint, every parameter, every response. The source of truth.

Webhooks

Subscribe to passport.issued, supplier.signed, audit.exported, and 20+ more lifecycle events.

Learn more

Schema Reference

The full ESPR-aligned schema catalogue — Battery 1542, Textiles, Electronics, Toys, and more.

Learn more