---
title: "Generovanie digitálnych produktových pasov EÚ cez API — qr3.app Blog"
description: "Väčšina návodov o DPP vám povie, čo musí pas obsahovať. Tento vám ukáže, ako programovo vytvárať digitálne produktové pasy v súlade s EÚ — pomocou curl, qr3 SDK, hromadného vytvárania, validácie, GS1 QR kódov a webhookov."
canonical: "https://qr3.app/sk/blog/dpp-api-generate-passports/"
lang: "sk"
robots: "index,follow,max-image-preview:large,max-snippet:-1"
---

# Generovanie digitálnych produktových pasov EÚ cez API — qr3.app Blog

> Väčšina návodov o DPP vám povie, čo musí pas obsahovať. Tento vám ukáže, ako programovo vytvárať digitálne produktové pasy v súlade s EÚ — pomocou curl, qr3 SDK, hromadného vytvárania, validácie, GS1 QR kódov a webhookov.

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

[← Blog](/sk/blog/) [Návody](/sk/blog/category/tutorials/)

30. mája 2026 4 min čítania [Návody](/sk/blog/category/tutorials/) [dpp](/sk/blog/tag/dpp/)[api](/sk/blog/tag/api/)[gs1-digital-link](/sk/blog/tag/gs1-digital-link/)[developers](/sk/blog/tag/developers/)[eu-2024-1781](/sk/blog/tag/eu-2024-1781/)

# Generovanie digitálnych produktových pasov EÚ cez API

Väčšina návodov o DPP vám povie, čo musí pas obsahovať. Tento vám ukáže, ako programovo vytvárať digitálne produktové pasy v súlade s EÚ — pomocou curl, qr3 SDK, hromadného vytvárania, validácie, GS1 QR kódov a webhookov.

autor **QR3 Redaktion**

![Generovanie digitálnych produktových pasov EÚ cez API](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/dpp-api-generate-passports/hero.png)

Väčšina článkov o digitálnom produktovom pase EÚ (EU DPP) vysvetľuje, *čo* musí pas obsahovať. Oveľa menej z nich vám ukáže, *ako* ho vytvoriť — a takmer žiadny vám neukáže, ako to urobiť pre katalóg 500 alebo 50 000 SKU bez toho, aby ste 50 000-krát preklikávali formulár.

Tento návod je verziou pre vývojárov. Každý krok nižšie je reálne, funkčné volanie API qr3.app (`https://qr3.app/v1`). Ak spravujete produktové dáta v ERP, PIM alebo databáze, môžete generovanie DPP zapojiť priamo do svojho existujúceho pipeline.

## Prečo na DPP záleží API

Digitálny produktový pas nie je jednorazový dokument. Podľa [nariadenia o ekodizajne pre udržateľné produkty (ESPR, EU 2024/1781)](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32024R1781) a [nariadenia EÚ o batériách 2023/1542](https://eur-lex.europa.eu/eli/reg/2023/1542/oj) potrebuje každá regulovaná jednotka pas, ktorý zostáva aktuálny po celú dobu svojej životnosti. Pre výrobcu to znamená:

- **Škálovanie** — stovky až desaťtisíce produktov, každý s vlastným GTIN/sériovým číslom.

- **Aktuálnosť** — dáta (uhlíková stopa, podiel recyklovaného materiálu, informácie o oprave) sa menia a musia sa aktualizovať, nie vytvárať nanovo.

- **Integrácia** — zdrojom pravdy je vaše ERP/PIM, nie webový formulár.

To je problém pre API. Manuálny webový nástroj vám dá prvých desať pasov; API vám dá všetky.

## 1. Autentifikácia

Každá požiadavka používa bearer token (vytvorte si API kľúč v dashboarde). Základná URL je `https://qr3.app/v1`.

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

Alebo pomocou oficiálneho SDK:

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

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

## 2. Vytvorenie pasu pre batériu

DPP sa vytvára pomocou `POST /dpp`. Polia najvyššej úrovne sú rovnaké pre každú kategóriu; dáta špecifické pre kategóriu idú do `battery_data`, `textile_data` alebo `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"]
    }
  }'
```

To isté volanie pomocou 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
```

Odpoveď obsahuje vstupnú stránku určenú pre spotrebiteľa (lokalizovanú do 25 jazykov EÚ) a QR kód **GS1 Digital Link** pripravený na tlač etikiet — žiadny samostatný krok s QR nie je potrebný.

## 3. Validujte pred vytvorením

Chcete zachytiť chýbajúce alebo neplatné polia ešte pred uložením? `POST /dpp/validate` spustí presne tie isté validačné pravidlá EÚ bez toho, aby čokoľvek vytvoril. Ideálne ako pre-commit kontrola v 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. Hromadné vytvorenie celého katalógu

Pre produktový katalóg odošlite až **100 pasov na požiadavku** na `POST /dpp/batch`. Prejdite cyklom cez svoj export z ERP a celý svoj sortiment máte za pár minút.

```
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. Získanie QR kódu na tlač etikiet

Každý pas sprístupňuje svoj QR kód GS1 Digital Link v štyroch tlačových formátoch. Získajte ich cez objekt pasu alebo priamo:

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

K dispozícii sú `qr.svg`, `qr.png`, `qr.pdf` aj `qr.eps` — SVG/EPS pre vašu tlačiareň etikiet, PNG pre web.

## 6. Udržiavanie dát aktuálnych (bez narušenia QR)

GTIN/sériové číslo/šarža sú po vytvorení **nemenné** — vďaka tomu zostáva vytlačená GS1 URI navždy stabilná. Všetko ostatné možno aktualizovať pomocou `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,
  },
});
```

QR na fyzickom produkte sa nikdy nemení; dáta za ním áno. To je celý zmysel *dynamického* pasu.

## 7. Odoslanie do registra EÚ

Keď je centrálny register DPP EÚ relevantný pre váš produkt, odošlite pas jediným volaním (plán Business a vyššie):

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

> **Stav k dnešku:** EÚ ešte nezverejnila API svojho centrálneho registra DPP. Dovtedy je toto volanie testovacou cestou — stav zostáva `pending` a žiadny úrad pas nedostane. Hneď ako bude API live, rovnaké volanie sa stane skutočnou registráciou.

## 8. Reagovanie na skenovania pomocou webhookov

Skenovania DPP sú udalosti. Prihláste sa na odber `qr.scanned` a môžete ich streamovať do svojej analytiky, spúšťať doobjednávky alebo označiť stiahnutie z trhu — v reálnom čase. Payloady sú podpísané (HMAC-SHA256); vždy overte podpis.

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

## Poskladané dohromady: generovanie DPP v CI

Cieľový stav, ktorý chce väčšina výrobcov: produktové dáta žijú v ERP/PIM a naplánovaná úloha udržiava pasy synchronizované.

1. Exportujte zmenené produkty zo svojho ERP.

2. `client.dpp.validate(...)` každý z nich — pri validačných chybách nechajte zlyhať build.

3. `client.dpp.batch(...)` pre nové produkty; `client.dpp.update(...)` pre zmenené.

4. Pošlite vrátené URL adresy `qr.svg` do svojho systému tlače etikiet.

Žiadny webový formulár, žiadne kopírovanie a vkladanie, žiadny rozkol medzi vašimi kmeňovými dátami a vašimi pasmi.

## FAQ

**Potrebujem samostatný nástroj na QR kódy?**
Nie. Každý DPP vracia QR kód GS1 Digital Link vo formátoch SVG/PNG/PDF/EPS. QR *je* prístupovým bodom k pasu.

**Môžem pas aktualizovať aj potom, čo je etiketa vytlačená?**
Áno — to je základná myšlienka. GTIN/sériové číslo sú nemenné, takže vytlačená URI zostáva platná; všetky dátové polia sú aktualizovateľné cez `PUT /dpp/{id}`.

**Koľko pasov môžem vytvoriť naraz?**
Až 100 na požiadavku `POST /dpp/batch`. Väčšie katalógy rozdeľte na časti; limit je 60 požiadaviek za minútu na jeden API kľúč, v každom pláne.

**Ktoré kategórie sú podporované?**
`battery` a `textile` dnes prichádzajú s plnou validáciou EÚ; `general` pokrýva ostatné typy produktov. Batéria a textil zahŕňajú živú kontrolu súladu s EÚ (ESPR / AGEC).

## Zdroje

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

- [Nariadenie EÚ o batériách 2023/1542](https://eur-lex.europa.eu/eli/reg/2023/1542/oj)

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

**Začnite zadarmo** a vytvorte svoj prvý DPP cez API: [app.qr3.app/sign-up](https://app.qr3.app/sign-up)

## Súvisiace články

- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/gs1-resolver-test-suite-dpp-links/hero.png) Návody Testovacia súprava GS1 Resolver: DPP-linky dôkladne overiť pred uvedením do prevádzky Stabilná testovacia súprava GS1 umožňuje overiť Resolver 1.2. Takto pred uvedením do prevádzky otestujete presmerovania, linksety, CORS, jazyky a chybové scenáre.](/sk/blog/gs1-resolver-test-suite-dpp-links/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/dpp-battery-passport-2027-20260715/hero.png) Novinky z odvetvia BatteryPass-Ready spúšťa testovacie prostredie pre digitálny pas batérie Konzorcium BatteryPass-Ready spustilo 24. júna 2026 verejné testovacie prostredie pre digitálny pas batérie s ohľadom na povinnosť EÚ od februára 2027.](/sk/blog/dpp-battery-passport-2027-20260715/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/sector-20260713/hero.png) Novinky z odvetvia Digitálny pas batérie 2027: Čo teraz musia výrobcovia vedieť Webináre, open-source nástroje a nové normy: batériový pas EÚ naberá na obrátkach. Prehľad stavu v júli 2026 a otvorených otázok do februára 2027.](/sk/blog/sector-20260713/)
- [![](https://qr3-blog-agent.meistern.workers.dev/cdn/blog/sector-20260711/hero.png) Novinky z odvetvia Digitálny pas batérie 2026: testovacie prostredia, normy a otvorené otázky Ako je na tom priemysel s digitálnym pasom batérie? Prehľad testovacích prostredí, noriem CEN/CENELEC, open source nástrojov a regulačných rozhodnutí v júli 2026.](/sk/blog/sector-20260711/)

[← Všetky články](/sk/blog/) [Začať zadarmo](https://app.qr3.app/sign-up)
