---
title: "Generar Pasaportes Digitales de Producto de la UE mediante API — qr3.app Blog"
description: "La mayoría de las guías sobre DPP te dicen qué debe contener un pasaporte. Esta te muestra cómo crear Pasaportes Digitales de Producto conformes con la UE de forma programática — con curl, el SDK de qr3, creación por lotes, validación, códigos QR GS1 y webhooks."
canonical: "https://qr3.app/es/blog/dpp-api-generate-passports/"
lang: "es"
robots: "index,follow,max-image-preview:large,max-snippet:-1"
---

# Generar Pasaportes Digitales de Producto de la UE mediante API — qr3.app Blog

> La mayoría de las guías sobre DPP te dicen qué debe contener un pasaporte. Esta te muestra cómo crear Pasaportes Digitales de Producto conformes con la UE de forma programática — con curl, el SDK de qr3, creación por lotes, validación, códigos QR GS1 y webhooks.

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

[← Blog](/es/blog/) [Tutoriales](/es/blog/category/tutorials/)

30 de mayo de 2026 4 min de lectura [Tutoriales](/es/blog/category/tutorials/) [dpp](/es/blog/tag/dpp/)[api](/es/blog/tag/api/)[gs1-digital-link](/es/blog/tag/gs1-digital-link/)[developers](/es/blog/tag/developers/)[eu-2024-1781](/es/blog/tag/eu-2024-1781/)

# Generar Pasaportes Digitales de Producto de la UE mediante API

La mayoría de las guías sobre DPP te dicen qué debe contener un pasaporte. Esta te muestra cómo crear Pasaportes Digitales de Producto conformes con la UE de forma programática — con curl, el SDK de qr3, creación por lotes, validación, códigos QR GS1 y webhooks.

por **QR3 Redaktion**

![Generar Pasaportes Digitales de Producto de la UE mediante API](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/dpp-api-generate-passports/hero.png)

La mayoría de los artículos sobre el Pasaporte Digital de Producto de la UE (EU DPP) explican *qué* debe contener un pasaporte. Muchos menos te muestran *cómo* crear uno — y casi ninguno te muestra cómo hacerlo para un catálogo de 500 o 50 000 SKU sin tener que rellenar un formulario 50 000 veces.

Esta guía es la versión para desarrolladores. Cada paso que sigue es una llamada real y funcional contra la API de qr3.app (`https://qr3.app/v1`). Si gestionas datos de producto en un ERP, un PIM o una base de datos, puedes integrar la generación de DPP directamente en tu pipeline actual.

## Por qué importa una API para los DPP

Un Pasaporte Digital de Producto no es un documento puntual. Bajo el [Reglamento de Diseño Ecológico para Productos Sostenibles (ESPR, UE 2024/1781)](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R1781) y el [Reglamento de Baterías de la UE 2023/1542](https://eur-lex.europa.eu/eli/reg/2023/1542/oj), cada unidad regulada necesita un pasaporte que se mantenga actualizado durante toda su vida útil. Para un fabricante, eso significa:

- **Escala** — de cientos a decenas de miles de productos, cada uno con su propio GTIN/número de serie.

- **Actualidad** — los datos (huella de carbono, contenido reciclado, información de reparación) cambian y deben actualizarse, no recrearse.

- **Integración** — la fuente de la verdad es tu ERP/PIM, no un formulario web.

Eso es un problema de API. Una herramienta web manual te lleva hasta los primeros diez pasaportes; una API te da todos ellos.

## 1. Autenticación

Cada solicitud usa un token bearer (crea una clave API en el panel de control). La URL base es `https://qr3.app/v1`.

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

O con el SDK oficial:

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

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

## 2. Crear un pasaporte de batería

Un DPP se crea con `POST /dpp`. Los campos de nivel superior son los mismos para cada categoría; los datos específicos de la categoría van en `battery_data`, `textile_data` o `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"]
    }
  }'
```

La misma llamada con el 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);  // GS1 Digital Link QR listo para imprimir
```

La respuesta incluye una página de aterrizaje orientada al consumidor (localizada en 25 idiomas de la UE) y un código QR **GS1 Digital Link** listo para imprimir en etiquetas — sin necesidad de un paso de QR aparte.

## 3. Validar antes de crear

¿Quieres detectar campos faltantes o no válidos antes de persistir? `POST /dpp/validate` ejecuta exactamente las reglas de validación de la UE sin crear nada. Ideal como comprobación previa al commit en 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. Crear un catálogo completo por lotes

Para un catálogo de productos, envía hasta **100 pasaportes por solicitud** a `POST /dpp/batch`. Recorre tu exportación del ERP y tendrás toda tu gama en minutos.

```
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,
  },
}));

// Dividir en lotes de 100
const result = await client.dpp.batch({ items: items.slice(0, 100) });
```

## 5. Obtener el código QR para imprimir etiquetas

Cada pasaporte expone su QR GS1 Digital Link en cuatro formatos de impresión. Recupéralos a través del objeto del pasaporte o directamente:

```
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` y `qr.eps` están todos disponibles — SVG/EPS para tu impresora de etiquetas, PNG para la web.

## 6. Mantener los datos actualizados (sin romper el QR)

El GTIN/número de serie/lote son **inmutables** tras la creación — eso mantiene la URI GS1 impresa estable para siempre. Todo lo demás puede actualizarse con `PUT /dpp/{id}`:

```
await client.dpp.update(passport.id, {
  battery_data: {
    capacity_kwh: 5,
    carbon_footprint_kg: 58, // remedido, menor huella
    recycled_content_pct: 16, // objetivo de 2031 alcanzado antes de tiempo
    recyclability_pct: 95,
    manufacturer_warranty_years: 8,
  },
});
```

El QR del producto físico nunca cambia; los datos que hay detrás sí. Ese es justo el sentido de un pasaporte *dinámico*.

## 7. Enviar al registro de la UE

Cuando el registro central de DPP de la UE sea aplicable a tu producto, envía un pasaporte con una sola llamada (plan Business en adelante):

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

> **Estado actual:** La UE aún no ha publicado la API de su registro central de DPP. Hasta entonces, esta llamada es una ruta de prueba — el estado permanece `pending` y ninguna autoridad recibe el pasaporte. En cuanto la API esté activa, la misma llamada se convertirá en el registro real.

## 8. Reaccionar a los escaneos con webhooks

Los escaneos de DPP son eventos. Suscríbete a `qr.scanned` y podrás transmitirlos a tu analítica, activar reposiciones o señalar una retirada — en tiempo real. Los payloads están firmados (HMAC-SHA256); verifica siempre la firma.

```
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);
});
```

## Uniéndolo todo: generación de DPP en CI

El estado final que quiere la mayoría de los fabricantes: los datos de producto viven en el ERP/PIM y un trabajo programado mantiene los pasaportes sincronizados.

1. Exporta los productos modificados desde tu ERP.

2. `client.dpp.validate(...)` cada uno — haz fallar la compilación ante errores de validación.

3. `client.dpp.batch(...)` los productos nuevos; `client.dpp.update(...)` los modificados.

4. Envía las URL `qr.svg` devueltas a tu sistema de impresión de etiquetas.

Sin formulario web, sin copiar y pegar, sin desfase entre tus datos maestros y tus pasaportes.

## Preguntas frecuentes

**¿Necesito una herramienta de códigos QR aparte?**
No. Cada DPP devuelve un QR GS1 Digital Link en SVG/PNG/PDF/EPS. El QR *es* el punto de acceso al pasaporte.

**¿Puedo actualizar un pasaporte después de imprimir la etiqueta?**
Sí — esa es la idea central. El GTIN/número de serie son inmutables, así que la URI impresa sigue siendo válida; todos los campos de datos son actualizables vía `PUT /dpp/{id}`.

**¿Cuántos pasaportes puedo crear a la vez?**
Hasta 100 por petición `POST /dpp/batch`. Divide los catálogos más grandes; el límite es de 60 peticiones por minuto por clave API, en todos los planes.

**¿Qué categorías son compatibles?**
`battery` y `textile` se entregan hoy con validación completa de la UE; `general` cubre otros tipos de producto. Battery y textile incluyen una comprobación de cumplimiento de la UE en vivo (ESPR / AGEC).

## Fuentes

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

- [Reglamento de Baterías de la UE 2023/1542](https://eur-lex.europa.eu/eli/reg/2023/1542/oj)

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

**Empieza gratis** y crea tu primer DPP mediante API: [app.qr3.app/sign-up](https://app.qr3.app/sign-up)

## Artículos relacionados

- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/gs1-resolver-test-suite-dpp-links/hero.png) Tutoriales Suite de pruebas de Resolver GS1: DPP-Links fiables antes de la puesta en producción La suite de pruebas estable de GS1 permite verificar Resolver 1.2. Compruebe redirecciones, conjuntos de enlaces, CORS, idiomas y errores antes de la puesta en producción.](/es/blog/gs1-resolver-test-suite-dpp-links/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/dpp-battery-passport-2027-20260715/hero.png) Noticias del sector BatteryPass-Ready inicia el entorno de pruebas para el Pasaporte Digital de Baterías El consorcio BatteryPass-Ready inició el 24 de junio de 2026 un entorno público de pruebas para el Pasaporte Digital de Baterías, ante la obligación de la UE a partir de febrero de 2027.](/es/blog/dpp-battery-passport-2027-20260715/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/sector-20260713/hero.png) Noticias del sector Pasaporte Digital de Baterías 2027: lo que los fabricantes deben saber ahora Webinarios, herramientas de código abierto y nuevas normas: el pasaporte europeo de baterías avanza. Una visión general del estado en julio de 2026 y de las cuestiones pendientes hasta febrero de 202.](/es/blog/sector-20260713/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/sector-20260711/hero.png) Noticias del sector Pasaporte Digital de Baterías 2026: entornos de prueba, normas y cuestiones pendientes ¿En qué punto se encuentra la industria con el Pasaporte Digital de Baterías? Un resumen de los entornos de prueba, las normas CEN/CENELEC, las herramientas de código abierto y las decisiones regul👉🏼?](/es/blog/sector-20260711/)

[← Todos los artículos](/es/blog/) [Empezar gratis](https://app.qr3.app/sign-up)
