MintDPP

EU Digital Product Passports Minted in Minutes

Compliance-grade passports with public verification and simple APIs.

Built by engineers for a greener, compliant Europe

Get Started View API

Benefits for Manufacturers

Compliance off your desk

Upload BOM & footprint → get a regulation-ready passport. We track schema updates so you don’t have to.

Save 5 hours per batch

15-min automated flow vs 6 h manual Excel + PDF stitching.

Audit- & future-proof

Chain anchor + public verification API = instant trust with customers & regulators.

How It Works

1

Upload Data

CSV, REST API, or UI forms.

2

Mint & Hash

Generate JSON-LD, QR, blockchain anchor.

3

Share & Monitor

QR on product + live SoH/usage updates.

Get Started

Create a Token

Request access and we’ll create a brand-scoped token for you.

Mint Models & Units

Create models, then mint units (each with a public QR and verify URL).

Onboard via CSV

Bulk upload production runs. See Onboard for a template.

API Quickstart

export BASE="https://opendpphub.com"
export TOKEN="<YOUR_BRAND_TOKEN>"   # Authorization: Token $TOKEN

# Optional model/unit names
export BRAND_SLUG="yourbrand"
export MODEL_NAME="Li-Ion 4Ah"
export MODEL_NO="BC-4000"
export UNIT_UID="BC-UNIT-$(date +%s)"

Create a Model

MODEL_ID=$(curl -sS -X POST "$BASE/api/models/" \
  -H "Authorization: Token $TOKEN" -H "Content-Type: application/json" \
  --data-binary "$(jq -n --arg brand "$BRAND_SLUG" --arg mn "$MODEL_NAME" --arg mno "$MODEL_NO" \
    '{brand_slug:$brand,model_name:$mn,model_number:$mno,chemistry_family:"NMC",rated_capacity_ah:"4.000",nominal_voltage_v:"3.700",rated_energy_kwh:"0.0148"}')" \
| jq -r .id); echo "$MODEL_ID"

Mint a Unit (gets QR + verify URL)

curl -sS -X POST "$BASE/api/units/" \
  -H "Authorization: Token $TOKEN" -H "Content-Type: application/json" \
  --data-binary "$(jq -n --arg uid "$UNIT_UID" --arg model "$MODEL_ID" \
    '{uid:$uid,model:$model,serial_number:"SN-001",batch_number:"BATCH-001",date_of_manufacture:"2025-08-01",place_of_manufacture:"Berlin, DE"}')" \
| jq .

Add Telemetry

# Flat endpoint with unit_uid
curl -sS -X POST "$BASE/api/telemetry/" \
  -H "Authorization: Token $TOKEN" -H "Content-Type: application/json" \
  --data-binary "$(jq -n --arg uid "$UNIT_UID" --arg soh "98.5" --argjson cc 10 \
    '{unit_uid:$uid,state_of_health_pct:$soh,cycle_count:$cc}')" | jq .

# or nested endpoint
curl -sS -X POST "$BASE/api/units/$UNIT_UID/telemetry/" \
  -H "Authorization: Token $TOKEN" -H "Content-Type: application/json" \
  --data-binary '{"state_of_health_pct":"98.5","cycle_count":10}' | jq .

Change Status

# Flat
curl -sS -X POST "$BASE/api/status-changes/" \
  -H "Authorization: Token $TOKEN" -H "Content-Type: application/json" \
  --data-binary "$(jq -n --arg uid "$UNIT_UID" --arg from original --arg to reused --arg reason 'Sold for reuse' \
    '{unit_uid:$uid,from_status:$from,to_status:$to,reason:$reason}')" | jq .

# Nested
curl -sS -X POST "$BASE/api/units/$UNIT_UID/status-change/" \
  -H "Authorization: Token $TOKEN" -H "Content-Type: application/json" \
  --data-binary '{"from_status":"original","to_status":"reused","reason":"Sold for reuse"}' | jq .

Anchor

curl -sS -X POST "$BASE/api/units/$UNIT_UID/anchor/" \
  -H "Authorization: Token $TOKEN" -H "Content-Type: application/json" \
  --data-binary '{"anchor_tx":"0x2222...2222","anchored":true}' | jq .

Public Verify

curl -sS "$BASE/api/verify/$UNIT_UID/" | jq .
# or open: https://opendpphub.com/verify/$UNIT_UID/

Revoke

curl -sS -X POST "$BASE/api/units/$UNIT_UID/revoke/" \
  -H "Authorization: Token $TOKEN" | jq .

Bulk Upload (CSV)

curl -sS -X POST "$BASE/api/units/bulk_upload/" \
  -H "Authorization: Token $TOKEN" \
  -F "file=@units.csv" | jq .

Onboard your Production

Choose CSV or the Onboard UI. CSV is best for larger batches; the UI walks you through small runs step-by-step (models → units → print labels).

Prepare

Create a brand token and at least one model. Note your model UUID.

Fill CSV

Use the CSV template or export from your MES/ERP. Keep required columns.

Upload

Upload via the Onboard UI to review and mint, or use the API below.

Open Onboard UI

Public Verification

Anyone can scan the QR or open the verify URL to see a redacted, read-only passport and revocation state. No login required.

What’s shown

  • Unit UID, model, manufacture info
  • Brand colors/logo (if provided)
  • Revocation status & verify URL

What’s hidden

  • Telemetry snapshots
  • Status-change history
  • Internal IDs & sensitive fields

Tips

  • Print QR as SVG/PNG at ≥ 300 DPI
  • Use UID on label for manual lookup
  • Keep media served at /media/ or S3

Questions?

Email us at info@mintdpp.com — we’ll help you get set up fast.