# Dinilu Druck+Promo > Dinilu Druck+Promo ist ein B2B-Unternehmen für Werbemittel. > Wir liefern individuell bedruckte Werbemittel — Festivalbändchen, Lanyards, Taschen, > Tassen, Verpackungen und hunderte andere Produktkategorien — mit Online- > Preisberechnung und Lieferzeitschätzung je nach Menge und Spezifikation. > Alle Preise verstehen sich zzgl. MwSt. und zzgl. Versandkosten, sofern nicht ausdrücklich anders angegeben. Mindestbestellmengen gelten. > Währung: EUR. > Kontakt: info@dinilu.at ## Produktkatalog Jede URL unten ist eine Kategorieseite mit einzelnen Produkten. Verwenden Sie GET /api/products?category={tid}, um Produkte einer Kategorie als JSON abzurufen. - [Armbänder und Lanyards](https://dinilu.at/armbaender-und-lanyards) — Kategorie-tid: 677 - [Festival Armbänder](https://dinilu.at/armbaender-und-lanyards/festival-armbaender) — Kategorie-tid: 681 - [Lanyards](https://dinilu.at/armbaender-und-lanyards/lanyards) — Kategorie-tid: 704 - [Silikonarmbänder](https://dinilu.at/armbaender-und-lanyards/silikonarmbaender) — Kategorie-tid: 288 - [Tyvek Armbänder](https://dinilu.at/armbaender-und-lanyards/tyvek-armbaender) — Kategorie-tid: 763 - [Becher und Tassen](https://dinilu.at/becher-und-tassen) — Kategorie-tid: 291 - [Emaille Tassen](https://dinilu.at/becher-und-tassen/emaille-tassen) — Kategorie-tid: 787 - [Pappbecher](https://dinilu.at/becher-und-tassen/pappbecher) — Kategorie-tid: 293 - [Plastikbecher](https://dinilu.at/becher-und-tassen/plastikbecher) — Kategorie-tid: 292 - [Tassen](https://dinilu.at/becher-und-tassen/tassen) — Kategorie-tid: 294 - [Thermobecher](https://dinilu.at/becher-und-tassen/thermobecher) — Kategorie-tid: 313 - [Druckerzeugnisse](https://dinilu.at/druckerzeugnisse) — Kategorie-tid: 275 - [Abreißkalender](https://dinilu.at/druckerzeugnisse/abreisskalender) — Kategorie-tid: 277 - [Bedrucktes Toilettenpapier](https://dinilu.at/druckerzeugnisse/bedrucktes-toilettenpapier) — Kategorie-tid: 282 - [Hotel Untersetzer](https://dinilu.at/druckerzeugnisse/hotel-untersetzer) — Kategorie-tid: 279 - [Kalender](https://dinilu.at/druckerzeugnisse/kalender) — Kategorie-tid: 344 - [Lentikulardruck](https://dinilu.at/druckerzeugnisse/lentikulardruck) — Kategorie-tid: 278 - [Spielkarten](https://dinilu.at/druckerzeugnisse/spielkarten) — Kategorie-tid: 276 - [Tischkalender](https://dinilu.at/druckerzeugnisse/tischkalender) — Kategorie-tid: 755 - [Zigarettenpapier](https://dinilu.at/druckerzeugnisse/zigarettenpapier) — Kategorie-tid: 283 - [Erste Hilfe](https://dinilu.at/erste-hilfe) — Kategorie-tid: 303 - [Beatmungsmasken](https://dinilu.at/erste-hilfe/beatmungsmasken) — Kategorie-tid: 304 - [Mundschutz aus Stoff](https://dinilu.at/erste-hilfe/mundschutz-aus-stoff) — Kategorie-tid: 686 - [Pflaster](https://dinilu.at/erste-hilfe/pflaster) — Kategorie-tid: 329 - [Reflektierende Utensilien](https://dinilu.at/erste-hilfe/reflektierende-utensilien) — Kategorie-tid: 312 - [IT Zubehör](https://dinilu.at/it-zubehoer) — Kategorie-tid: 305 - [Display-Cleaner](https://dinilu.at/it-zubehoer/display-cleaner) — Kategorie-tid: 334 - [Getränkewärmer / Kühler](https://dinilu.at/it-zubehoer/getraenkewaermer-kuehler) — Kategorie-tid: 306 - [Handyhalter](https://dinilu.at/it-zubehoer/handyhalter) — Kategorie-tid: 377 - [Microfaser linsentücher](https://dinilu.at/it-zubehoer/microfaser-linsentuecher) — Kategorie-tid: 357 - [Mousepads](https://dinilu.at/it-zubehoer/mousepads) — Kategorie-tid: 310 - [USB Button](https://dinilu.at/it-zubehoer/usb-button) — Kategorie-tid: 314 - [Partyzubehör](https://dinilu.at/partyzubehoer) — Kategorie-tid: 297 - [Fahnen](https://dinilu.at/partyzubehoer/fahnen) — Kategorie-tid: 320 - [Jumbo Schaumhände](https://dinilu.at/partyzubehoer/jumbo-schaumhaende) — Kategorie-tid: 777 - [Latexluftballons](https://dinilu.at/partyzubehoer/latexluftballons) — Kategorie-tid: 298 - [Temporäre Tattoos](https://dinilu.at/partyzubehoer/temporaere-tattoos) — Kategorie-tid: 338 - [Thundersticks](https://dinilu.at/partyzubehoer/thundersticks) — Kategorie-tid: 539 - [Reisezubehör](https://dinilu.at/reisezubehoer) — Kategorie-tid: 301 - [Regenschirme](https://dinilu.at/reisezubehoer/regenschirme) — Kategorie-tid: 311 - [Reisesets](https://dinilu.at/reisezubehoer/reisesets) — Kategorie-tid: 315 - [Schlafmaske](https://dinilu.at/reisezubehoer/schlafmaske) — Kategorie-tid: 302 - [Sport und Outdoor](https://dinilu.at/sport-und-outdoor) — Kategorie-tid: 284 - [Frisbees](https://dinilu.at/sport-und-outdoor/frisbees) — Kategorie-tid: 537 - [Fußball](https://dinilu.at/sport-und-outdoor/fussball) — Kategorie-tid: 322 - [Golf Tees](https://dinilu.at/sport-und-outdoor/golf-tees) — Kategorie-tid: 542 - [Sattelbezüge](https://dinilu.at/sport-und-outdoor/sattelbezuege) — Kategorie-tid: 285 - [Schrittzähler](https://dinilu.at/sport-und-outdoor/schrittzaehler) — Kategorie-tid: 286 - [Schwimmen](https://dinilu.at/sport-und-outdoor/schwimmen) — Kategorie-tid: 319 - [Strandbälle](https://dinilu.at/sport-und-outdoor/strandbaelle) — Kategorie-tid: 380 - [Tüten und Taschen](https://dinilu.at/tueten-und-taschen) — Kategorie-tid: 295 - [Papiertragetasche (Kraftpapier)](https://dinilu.at/tueten-und-taschen/papiertragetasche-kraftpapier) — Kategorie-tid: 317 - [Papiertragetaschen](https://dinilu.at/tueten-und-taschen/papiertragetaschen) — Kategorie-tid: 296 - [Non Woven Tragetaschen](https://dinilu.at/tueten-und-taschen/non-woven-tragetaschen) — Kategorie-tid: 316 - [Verpackungsmaterial](https://dinilu.at/verpackungsmaterial) — Kategorie-tid: 280 - [Sicherheitsmesser](https://dinilu.at/verpackungsmaterial/sicherheitsmesser) — Kategorie-tid: 541 - [Versiegelung](https://dinilu.at/verpackungsmaterial/versiegelung) — Kategorie-tid: 281 - [Weinkisten und Holzverpackungen](https://dinilu.at/verpackungsmaterial/weinkisten-und-holzverpackungen) — Kategorie-tid: 365 - [Werbemittel](https://dinilu.at/werbemittel) — Kategorie-tid: 333 - [Antistress-Artikel](https://dinilu.at/werbemittel/antistress-artikel) — Kategorie-tid: 876 - [Flaschenöffner](https://dinilu.at/werbemittel/flaschenoeffner) — Kategorie-tid: 309 - [Getränkekühler](https://dinilu.at/werbemittel/getraenkekuehler) — Kategorie-tid: 354 - [Schlüsselanhänger](https://dinilu.at/werbemittel/schluesselanhaenger) — Kategorie-tid: 318 - [Werbezubehör](https://dinilu.at/werbezubehoer) — Kategorie-tid: 287 - [Buttons](https://dinilu.at/werbezubehoer/buttons) — Kategorie-tid: 289 - [Schwesternuhr](https://dinilu.at/werbezubehoer/schwesternuhr) — Kategorie-tid: 290 - [Sonstiges](https://dinilu.at/sonstiges) — Kategorie-tid: 274 - [Auto Zubehör](https://dinilu.at/sonstiges/auto-zubehoer) — Kategorie-tid: 457 - [Kissen](https://dinilu.at/sonstiges/kissen) — Kategorie-tid: 758 - [Skydancer](https://dinilu.at/sonstiges/skydancer) — Kategorie-tid: 759 ## Produktseiten und MPN Jede Produktseite auf dieser Website enthält einen JSON-LD `Product`-Block in ihrem `
`. Dieser Block enthält ein `mpn`-Feld — z.B. `"mpn": "1001234"` — der als Bezeichner von dieser API verwendet wird. Wenn Sie bereits eine Produktseiten-URL haben, entnehmen Sie die `mpn` aus den JSON-LD und verwenden Sie sie direkt in Schritt 2 oder Schritt 3 unten, Schritt 1 überspringend. ## Angebots-API Befolgen Sie diese Schritte, um eine Preis- und Lieferschätzung für ein Produkt zu erhalten: ### Schritt 1 — Produkte auflisten (optional, wenn Sie eine Produkt-URL haben) GET https://dinilu.at/api/products GET https://dinilu.at/api/products?category={tid} Gibt ein Array von Produkten mit mpn, Titel, Seiten-URL, api_url und Bild zurück. Die mpn entspricht dem `mpn`-Feld in den JSON-LD-strukturierten Daten der Seite. ### Schritt 2 — Produktoptionen abrufen GET https://dinilu.at/api/product/{mpn} Gibt zurück: - `mpn` — die Produkt-MPN (gleich wie JSON-LD mpn auf der Produktseite) - `min_qty` — Mindestbestellmenge in Stück - `qty_step` — Bestellmenge muss ein Vielfaches dieser Zahl sein - `attributes` — konfigurierbare Optionen (z.B. Größe, Farbe, Material), jeweils mit `id`, `name`, `required` und `options`; jede Option hat eine eigene `id` und `name`. **Diese beiden IDs braucht Schritt 3** — übergeben Sie `{attribute id}:{option id}`. - `quote_url` — eine direkt ausführbare URL für Schritt 3 zu diesem Produkt, bereits in der ID-Form - `quote_hint` — einzeilige Erinnerung an die Attribut-Syntax - `images` — Produktfotos in Anzeigereihenfolge, jeweils mit `url` und übersetztem `alt`; dieselben Dateien, auf die die Seite und die XML-Sitemap verweisen. Schritt 1 liefert nur die erste, als einfache URL. ### Schritt 3 — Angebot anfordern Zwei gleichwertige Formen. Verwenden Sie GET, wenn Ihr Client keinen POST-Body senden kann — viele KI-Assistenten können nur GET-Anfragen stellen: GET https://dinilu.at/api/quote?mpn={mpn}&qty={qty}&country={country} &attributes={Attribut-ID}:{Options-ID}|{Attribut-ID}:{Options-ID} Wählen Sie Optionen per **ID** aus Schritt 2. Paare mit "|" verbinden (als %7C kodieren, wenn Ihr Client streng ist). Dies ist die empfohlene Form: &attributes=19:251|58:490 13 Zeichen, eindeutig Options*namen* werden ebenfalls akzeptiert — attributes[Name]=Value, Name:Value|Name2:Value2 oder attributes={"Name":"Value"} — aber verwenden Sie besser IDs, aus drei Gründen: - **Länge.** Optionsnamen in diesem Katalog erreichen 90 Zeichen. URL-kodiert bringen zwei davon die Anfrage über 250 Zeichen, und viele Agent-Fetcher begrenzen die URL-Länge auf diesen Wert oder darunter — dasselbe Angebot ist dann nicht mehr abrufbar, statt nur umständlich. - **Genauigkeit.** Namen müssen Zeichen für Zeichen übereinstimmen, einschließlich doppelter Leerzeichen und Klammern. Ein Beinahe-Treffer ist kein Fehler: Das Attribut fällt stillschweigend auf seinen Standardwert zurück, und Sie erhalten einen sicheren Preis für eine Konfiguration, die Sie nicht angefragt haben. Prüfen Sie `warnings` auf `option_not_found`. - **Sprache.** Beschriftungen werden je Domain übersetzt; IDs sind auf jeder Dinilu-Domain gleich. POST https://dinilu.at/api/quote Content-Type: application/json { "mpn": {mpn aus Schritt 1 oder 2}, "qty": {Menge in Stück; "quantity" wird ebenfalls akzeptiert}, "attributes": { "{Attribut-ID}": "{Options-ID}", ... }, "country": {Ländername, ISO 3166-1 Alpha-2/Alpha-3/numerisch, optional}, "zone": {Zonen-ID, optional} } Wird keine Menge angegeben, wird die Standardmenge des Produkts berechnet und eine Warnung "qty_defaulted" zurückgegeben. Mengen unter dem Minimum werden mit einer Warnung "qty_below_minimum" auf die MOQ angehoben. Prüfen Sie immer das Array "warnings", bevor Sie einen Preis nennen. Gibt zurück: - `mpn` — die Produkt-MPN - `url` — die Produktseite, um dem Kunden das Produkt zu zeigen. Zum Bestellen stattdessen cart_url verwenden. - `price_per_unit` — Stückpreis in EUR zzgl. MwSt. - `price_total` — Gesamtproduktpreis in EUR zzgl. MwSt. - `calculated_on` — Datum, an dem dieser Preis berechnet wurde (JJJJ-MM-TT). Preise werden mit dem Tageswechselkurs neu berechnet, ein später gelesenes Angebot ist also eine Momentaufnahme — zeigen Sie dieses Datum immer zusammen mit dem Preis. - `binding` — immer false. Diese Preise sind unverbindlich und zzgl. MwSt.; nichts davon ist ein verbindliches Angebot. - `cart_url` — Link, der den Warenkorb mit genau dieser Konfiguration öffnet. Geben Sie ihn dem Kunden, um die Schätzung in ein echtes Angebot umzuwandeln: Der Kunde schließt den Checkout selbst ab und gibt seine eigenen Kontaktdaten ein (Firma, Adresse, USt-IdNr.). Erfassen Sie diese Daten NICHT selbst und hängen Sie sie an keine URL an. - `request_quote` — die zwei Wege, ein formelles Angebot anzufordern: cart_url öffnen oder an die angegebene Adresse mailen. Der Checkout erzeugt ein unverbindliches Angebot und nimmt keine Zahlung entgegen. - `production_days` — geschätzte Produktionszeit in Kalendertagen - `price_tiers` — dasselbe Produkt zu DREI Mengen berechnet (die angefragte, 2x und 5x), sodass eine Mengenstaffel einen Aufruf statt drei kostet. Jede Staffel hat eigene `shipping`-Optionen, für diese Menge berechnet; die Fracht springt mit der Kartonanzahl, rechnen Sie die Versandkosten einer Staffel also nie auf eine andere hoch. - `shipping` — Array von Versandoptionen, jeweils mit: - `method` — Spediteur / Servicename - `rate` — Versandkosten in EUR - `days_min`/`days_max` — Transitzeit-Bereich in Tagen - `attributes` — die für das Angebot verwendeten aufgelösten Attributauswahlen, nach Namen - `attributes_shorthand` — dieselbe Auswahl als `{attribute id}:{option id}`-Paare, z.B. "19:251|58:490". Ändern Sie ein Paar und fügen Sie es wieder in &attributes= ein, um eine Variante zu berechnen — Namen müssen nicht erneut aufgelöst werden. ### Beispiel-Workflow # 1. Armband-Produkte suchen GET https://dinilu.at/api/products?category=