---
title: "Générer des passeports numériques de produits européens via API — qr3.app Blog"
description: "La plupart des guides DPP vous indiquent ce que doit contenir un passeport. Celui-ci vous montre comment créer des passeports numériques de produits conformes à l"
canonical: "https://qr3.app/fr/blog/dpp-api-generate-passports/"
lang: "fr"
robots: "index,follow,max-image-preview:large,max-snippet:-1"
---

# Générer des passeports numériques de produits européens via API — qr3.app Blog

> La plupart des guides DPP vous indiquent ce que doit contenir un passeport. Celui-ci vous montre comment créer des passeports numériques de produits conformes à l

Canonical: <https://qr3.app/fr/blog/dpp-api-generate-passports/>

[← Blog](/fr/blog/) [Tutoriels](/fr/blog/category/tutorials/)

30 mai 2026 4 min de lecture [Tutoriels](/fr/blog/category/tutorials/) [dpp](/fr/blog/tag/dpp/)[api](/fr/blog/tag/api/)[gs1-digital-link](/fr/blog/tag/gs1-digital-link/)[developers](/fr/blog/tag/developers/)[eu-2024-1781](/fr/blog/tag/eu-2024-1781/)

# Générer des passeports numériques de produits européens via API

La plupart des guides DPP vous indiquent ce que doit contenir un passeport. Celui-ci vous montre comment créer des passeports numériques de produits conformes à l'UE par programmation — avec curl, le SDK qr3, la création par lots, la validation, les QR codes GS1 et les webhooks.

par **QR3 Redaktion**

![Générer des passeports numériques de produits européens via API](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/dpp-api-generate-passports/hero.png)

La plupart des articles sur le passeport numérique de produit (EU DPP) européen expliquent *ce que* doit contenir un passeport. Beaucoup plus rares sont ceux qui vous montrent *comment* en créer un — et presque aucun ne vous explique comment le faire pour un catalogue de 500 ou 50 000 références sans cliquer 50 000 fois dans un formulaire.

Ce guide est la version pour développeurs. Chaque étape ci-dessous correspond à un appel réel et fonctionnel vers l'API qr3.app (`https://qr3.app/v1`). Si vous gérez vos données produit dans un ERP, un PIM ou une base de données, vous pouvez intégrer la génération de DPP directement dans votre pipeline existant.

## Pourquoi une API est essentielle pour les DPP

Un passeport numérique de produit n'est pas un document ponctuel. En vertu du [règlement sur l'écoconception des produits durables (ESPR, EU 2024/1781)](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R1781) et du [règlement européen sur les batteries 2023/1542](https://eur-lex.europa.eu/eli/reg/2023/1542/oj), chaque unité réglementée a besoin d'un passeport qui reste à jour pendant toute sa durée de vie. Pour un fabricant, cela signifie :

- **L'échelle** — de centaines à des dizaines de milliers de produits, chacun avec son propre GTIN/numéro de série.

- **L'actualité** — les données (empreinte carbone, contenu recyclé, informations de réparation) évoluent et doivent être mises à jour, et non recréées.

- **L'intégration** — la source de vérité est votre ERP/PIM, pas un formulaire web.

C'est un problème d'API. Un outil web manuel vous permet de créer les dix premiers passeports ; une API vous permet de les créer tous.

## 1. Authentification

Chaque requête utilise un jeton bearer (créez une clé API dans le tableau de bord). L'URL de base est `https://qr3.app/v1`.

```
curl https://qr3.app/v1/dpp \
  -H "Authorization: Bearer $QR3_API_KEY"
```

Ou avec le SDK officiel :

```
import { QR3 } from "@qr3/sdk";

const client = new QR3({ apiKey: process.env.QR3_API_KEY! });
```

## 2. Créer un passeport de batterie

Un DPP se crée avec `POST /dpp`. Les champs de premier niveau sont les mêmes pour chaque catégorie ; les données spécifiques à la catégorie vont dans `battery_data`, `textile_data` ou `general_data`.

```
curl -X POST https://qr3.app/v1/dpp \
  -H "Authorization: Bearer $QR3_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "gtin": "09506000134376",
    "serial": "SN-00012345",
    "product_name": "PowerCell 5 kWh LFP",
    "manufacturer": "ExampleTech GmbH",
    "origin_country": "DE",
    "category": "battery",
    "market_countries": ["DE", "FR", "AT"],
    "status": "live",
    "battery_data": {
      "capacity_kwh": 5,
      "carbon_footprint_kg": 62,
      "carbon_footprint_class": "B",
      "recycled_content_pct": 12,
      "recyclability_pct": 95,
      "manufacturer_warranty_years": 8,
      "lithium_content_pct": 6.5,
      "certifications": ["CE", "UN38.3"]
    }
  }'
```

Le même appel avec le SDK :

```
const passport = await client.dpp.create({
  gtin: "09506000134376",
  serial: "SN-00012345",
  product_name: "PowerCell 5 kWh LFP",
  manufacturer: "ExampleTech GmbH",
  origin_country: "DE",
  category: "battery",
  market_countries: ["DE", "FR", "AT"],
  battery_data: {
    capacity_kwh: 5,
    carbon_footprint_kg: 62,
    recycled_content_pct: 12,
    recyclability_pct: 95,
    manufacturer_warranty_years: 8,
  },
});

console.log(passport.id);      // dpp_xxxxxxxx
console.log(passport.qr.svg);  // print-ready GS1 Digital Link QR
```

La réponse inclut une page de destination orientée consommateur (localisée dans 25 langues de l'UE) et un QR code **GS1 Digital Link** prêt pour l'impression d'étiquettes — aucune étape QR distincte n'est nécessaire.

## 3. Valider avant de créer

Vous voulez détecter les champs manquants ou invalides avant la persistance ? `POST /dpp/validate` applique exactement les règles de validation de l'UE sans rien créer. Idéal comme vérification pre-commit dans une CI.

```
const result = await client.dpp.validate({
  gtin: "09506000134376",
  product_name: "PowerCell 5 kWh LFP",
  manufacturer: "ExampleTech GmbH",
  origin_country: "DE",
  category: "battery",
  battery_data: {
    capacity_kwh: 5,
    carbon_footprint_kg: 62,
    recycled_content_pct: 12,
    recyclability_pct: 95,
    manufacturer_warranty_years: 8,
  },
});

if (!result.valid) {
  console.error(result.errors);
  // [{ field: "battery_data.recyclability_pct", message: "..." }]
}
```

## 4. Créer un catalogue entier par lots

Pour un catalogue de produits, envoyez jusqu'à **100 passeports par requête** à `POST /dpp/batch`. Parcourez votre export ERP en boucle et vous obtenez toute votre gamme en quelques minutes.

```
const items = products.map((p) => ({
  gtin: p.gtin,
  serial: p.serial,
  product_name: p.name,
  manufacturer: "ExampleTech GmbH",
  origin_country: "DE",
  category: "battery" as const,
  battery_data: {
    capacity_kwh: p.capacityKwh,
    carbon_footprint_kg: p.co2Kg,
    recycled_content_pct: p.recycledPct,
    recyclability_pct: p.recyclablePct,
    manufacturer_warranty_years: p.warrantyYears,
  },
}));

// Chunk into batches of 100
const result = await client.dpp.batch({ items: items.slice(0, 100) });
```

## 5. Récupérer le QR code pour l'impression d'étiquettes

Chaque passeport expose son QR code GS1 Digital Link dans quatre formats d'impression. Récupérez-les via l'objet passeport ou directement :

```
curl https://qr3.app/v1/dpp/dpp_xxxxxxxx/qr.svg \
  -H "Authorization: Bearer $QR3_API_KEY" -o label.svg
```

`qr.svg`, `qr.png`, `qr.pdf` et `qr.eps` sont tous disponibles — SVG/EPS pour votre imprimante d'étiquettes, PNG pour le web.

## 6. Maintenir les données à jour (sans casser le QR)

Le GTIN/numéro de série/lot sont **immuables** après la création — cela garde l'URI GS1 imprimée stable pour toujours. Tout le reste peut être mis à jour avec `PUT /dpp/{id}` :

```
await client.dpp.update(passport.id, {
  battery_data: {
    capacity_kwh: 5,
    carbon_footprint_kg: 58, // re-measured, lower footprint
    recycled_content_pct: 16, // 2031 target reached early
    recyclability_pct: 95,
    manufacturer_warranty_years: 8,
  },
});
```

Le QR code sur le produit physique ne change jamais ; les données qui se trouvent derrière, si. C'est tout l'intérêt d'un passeport *dynamique*.

## 7. Soumettre au registre de l'UE

Lorsque le registre central des DPP de l'UE concerne votre produit, soumettez un passeport en un seul appel (à partir du plan Business) :

```
const reg = await client.dpp.registerForEuRegistry(passport.id);
console.log(reg.data.eu_registry_status);          // "pending"
console.log(reg.data.registry_request_id);
```

> **État actuel :** L’UE n’a pas encore publié l’API de son registre DPP central. D’ici là, cet appel est un chemin de test — le statut reste `pending`, et aucune autorité ne reçoit le passeport. Dès que l’API sera en ligne, le même appel servira à l’enregistrement réel.

## 8. Réagir aux scans avec les webhooks

Les scans de DPP sont des événements. Abonnez-vous à `qr.scanned` et vous pouvez les transmettre en flux vers votre outil d'analytics, déclencher des réapprovisionnements ou signaler un rappel — en temps réel. Les charges utiles sont signées (HMAC-SHA256) ; vérifiez toujours la signature.

```
import { createHmac, timingSafeEqual } from "crypto";

app.post("/webhooks/qr3", express.raw({ type: "application/json" }), (req, res) => {
  const expected = createHmac("sha256", secret).update(req.body).digest("hex");
  const expectedBytes = Buffer.from(`sha256=${expected}`);
  const receivedBytes = Buffer.from(String(req.headers["x-qr3-signature"] ?? ""));
  const ok =
    expectedBytes.length === receivedBytes.length &&
    timingSafeEqual(expectedBytes, receivedBytes);
  if (!ok) return res.sendStatus(401);

  const event = JSON.parse(req.body.toString("utf8"));
  if (event.type === "qr.scanned") {
    console.log(event.data.country, event.data.dpp_id);
  }
  res.sendStatus(200);
});
```

## Tout assembler : la génération de DPP en CI

L'état final que souhaitent la plupart des fabricants : les données produit vivent dans l'ERP/PIM, et une tâche planifiée maintient les passeports synchronisés.

1. Exportez les produits modifiés depuis votre ERP.

2. Validez chacun avec `client.dpp.validate(...)` — faites échouer le build en cas d'erreurs de validation.

3. Créez les nouveaux produits avec `client.dpp.batch(...)` ; mettez à jour ceux qui ont changé avec `client.dpp.update(...)`.

4. Transmettez les URL `qr.svg` retournées à votre système d'impression d'étiquettes.

Aucun formulaire web, aucun copier-coller, aucune dérive entre vos données de référence et vos passeports.

## FAQ

**Ai-je besoin d'un outil de QR code séparé ?**
Non. Chaque DPP retourne un QR code GS1 Digital Link au format SVG/PNG/PDF/EPS. Le QR code *est* le point d'accès au passeport.

**Puis-je mettre à jour un passeport une fois l'étiquette imprimée ?**
Oui — c'est l'idée centrale. Le GTIN/numéro de série étant immuables, l'URI imprimée reste valide ; tous les champs de données sont modifiables via `PUT /dpp/{id}`.

**Combien de passeports puis-je créer en une seule fois ?**
Jusqu'à 100 par requête `POST /dpp/batch`. Découpez les catalogues plus volumineux ; la limite est de 60 requêtes par minute par clé API, pour tous les plans.

**Quelles catégories sont prises en charge ?**
`battery` et `textile` sont livrés aujourd'hui avec une validation UE complète ; `general` couvre les autres types de produits. Les batteries et les textiles incluent un contrôle de conformité UE en direct (ESPR / AGEC).

## Sources

- [ESPR — Règlement (EU) 2024/1781](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R1781)

- [Règlement européen sur les batteries 2023/1542](https://eur-lex.europa.eu/eli/reg/2023/1542/oj)

- [GS1 Digital Link](https://www.gs1.org/standards/gs1-digital-link)

**Commencez gratuitement** et créez votre premier DPP via API : [app.qr3.app/sign-up](https://app.qr3.app/sign-up)

## Articles liés

- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/gs1-resolver-test-suite-dpp-links/hero.png) Tutoriels Suite de tests du résolveur GS1 : vérifier la robustesse des DPP-Links avant la mise en production La suite de tests GS1 stable permet de tester le résolveur 1.2. Testez ainsi les redirections, les jeux de liens, CORS, les langues et les cas d’erreur avant la mise en production.](/fr/blog/gs1-resolver-test-suite-dpp-links/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/dpp-battery-passport-2027-20260715/hero.png) Actualités du secteur BatteryPass-Ready lance un environnement de test pour le passeport numérique des batteries Le consortium BatteryPass-Ready a lancé le 24 juin 2026 un environnement de test public pour le passeport numérique des batteries, en prévision de l’obligation européenne à partir de février 2027.](/fr/blog/dpp-battery-passport-2027-20260715/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/sector-20260713/hero.png) Actualités du secteur Passeport numérique de batterie 2027 : ce que les fabricants doivent savoir dès maintenant Webinaires, outils open source et nouvelles normes : le passeport européen des batteries prend de l’ampleur. État des lieux en juillet 2026 et questions ouvertes jusqu’en février 2027.](/fr/blog/sector-20260713/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/sector-20260711/hero.png) Actualités du secteur Passeport numérique des batteries 2026 : environnements de test, normes et questions ouvertes Où en est l’industrie concernant le passeport numérique des batteries ? Tour d’horizon des environnements de test, des normes CEN/CENELEC, des outils open source et des orientations réglementaires en.](/fr/blog/sector-20260711/)

[← Tous les articles](/fr/blog/) [Démarrer gratuitement](https://app.qr3.app/sign-up)
