Non sono articoli originali USM Haller, ma compatibili al 100%. Non abbiamo alcun rapporto commerciale con USM Haller.

API e interfacce

Le nostre interfacce pubbliche per rivenditori, partner, sviluppatori e agenti IA: calcolare le spese di spedizione, consultare le giacenze, caricare i dati dei prodotti, preparare carrelli e analizzare le configurazioni del configuratore 3D. Tutte le interfacce descritte qui sono gratuite, di sola lettura e senza registrazione.

Informazioni generali

  • Formato: JSON (UTF-8); importi come stringa con il punto, ad es. "18.14", in EUR (salvo diversa indicazione).
  • Autenticazione: nessuna. Tutti gli endpoint descritti qui sono pubblici e di sola lettura.
  • Errore 403? I nostri server sono dietro Cloudflare. curl, Python requests e JavaScript fetch funzionano senza altre impostazioni; alcune librerie (ad es. Python urllib) vengono rifiutate. In tal caso invia un tuo User-Agent, ad es. MeineFirma-Integration/1.0 (kontakt@example.com).
  • Chiamate dal browser (CORS): l’API delle giacenze e i feed prodotti possono essere chiamati da qualsiasi sito. L’API delle spese di spedizione è pensata per chiamate da server a server – chiamala dal tuo backend.
  • Limiti: spese di spedizione per configurazioni: 60 richieste al minuto per indirizzo IP (poi 429). Non richiedere i dati più spesso del necessario e memorizza brevemente i risultati (ad es. giacenze 5–10 minuti).
  • Errori: codici di stato HTTP (400 input non valido, 404 non trovato, 422 parametri mancanti o non validi, 429 troppe richieste). Il messaggio è nel campo detail o error.
  • Per agenti IA: una panoramica compatta per modelli linguistici è disponibile su /llms.txt e /agents.md.

API spese di spedizione

URL di base: https://modula24.com

Calcola le spese di spedizione esattamente come il nostro carrello e la cassa – per un carrello, per dei pesi o per una configurazione del configuratore 3D. La merce del nostro magazzino di Amburgo viene spedita con DHL (pacchi fino a 31,5 kg); la merce disponibile solo nel magazzino in Cina viene spedita via mare o via aerea. Se solo una parte è ad Amburgo, viene offerta una spedizione parziale. L’API determina dove si trovano gli articoli in base alle giacenze attuali.

Metodi di spedizione (id): dhl (da Amburgo: DHL Paket International Premium, consegna a domicilio; in Germania pacco DHL), dhl_eco (da Amburgo: DHL Paket International Economy, consegna a locker/ufficio postale – solo fuori dall’UE e non in tutti i paesi), sea / air (merce solo in Cina), split_sea / split_air (spedizione parziale: Amburgo con DHL Premium, il resto dalla Cina), sea_door (solo fuori dall’UE: intero ordine dal magazzino in Cina via mare fino a casa, sdoganato, 9–11 settimane – sempre per ultimo). Il tariffario è indicato anche in legs[].product. Ogni opzione contiene cost, i tempi di consegna days con unit (days = giorni lavorativi, weeks = settimane) e le singole parti della spedizione legs. L’opzione più economica è la prima (tranne sea_door).

GET /api/checkout/config

Paesi di consegna – Elenco dei paesi di consegna (codici ISO 3166) e delle valute. Consegniamo solo in questi paesi.

curl https://modula24.com/api/checkout/config
Risposta (abbreviata)
{
  "currencies": ["EUR", "USD"],
  "countries": ["AT", "AU", "BE", "BG", "CA", "CH", "CY", "CZ", "DE", "DK", "…"]
}

POST /api/checkout/shipping

Spese di spedizione per articoli – Opzioni di spedizione per un carrello. Gli ID delle varianti (variant_id) sono nel feed prodotti.

Parametri
NomePosizioneTipoDescrizione
countryobbligatorio corpo (JSON) string Paese di consegna, codice ISO (ad es. DE, AT)
itemsobbligatorio corpo (JSON) array Articoli: [{"id": "<variant_id>", "qty": 2}], max. 100 righe
currencyfacoltativo corpo (JSON) string EUR (predefinito) o USD
curl -X POST https://modula24.com/api/checkout/shipping \
  -H "Content-Type: application/json" \
  -d '{"country": "AT", "items": [{"id": "58436497375496", "qty": 8}, {"id": "58546503745800", "qty": 8}]}'
Risposta (abbreviata)
{
  "country": "AT", "currency": "EUR", "kg_hamburg": 1.8, "kg_china": 0.0,
  "shipping_options": [
    {"id": "dhl", "cost": "18.43", "days": "3–6", "unit": "days",
     "legs": [{"from": "hamburg", "kg": 1.8, "cost": "18.43", "product": "DHL Paket International Premium", "days": "3–6", "unit": "days", "packages": 1}]}
  ]
}

POST /api/checkout/shipping

Spese di spedizione per pesi – Senza articoli, direttamente con i pesi per magazzino – ad es. per calcoli propri.

Parametri
NomePosizioneTipoDescrizione
countryobbligatorio corpo (JSON) string Paese di consegna, codice ISO
kg_hamburgfacoltativo corpo (JSON) number Peso dal magazzino di Amburgo in kg (0–5000)
kg_chinafacoltativo corpo (JSON) number Peso dal magazzino in Cina in kg (0–5000)
currencyfacoltativo corpo (JSON) string EUR o USD
curl -X POST https://modula24.com/api/checkout/shipping \
  -H "Content-Type: application/json" \
  -d '{"country": "DE", "kg_hamburg": 12.5, "kg_china": 4}'
Risposta (abbreviata)
{
  "country": "DE", "currency": "EUR", "kg_hamburg": 12.5, "kg_china": 4.0,
  "shipping_options": [
    {"id": "split_sea", "cost": "19.32", "days": "9–10", "unit": "weeks",
     "legs": [{"from": "hamburg", "kg": 12.5, "cost": "14.92", "product": "DHL Paket", "days": "1–2", "unit": "days", "packages": 1},
              {"from": "china", "kg": 4.0, "cost": "4.40", "product": "Seefracht", "days": "9–10", "unit": "weeks"}]},
    {"id": "split_air", "cost": "42.92", "days": "5–10", "unit": "days", "legs": ["…"]}
  ]
}

GET /api/checkout/shipping?config={id}

Spese di spedizione per una configurazione – Per una configurazione salvata del configuratore 3D: la distinta viene convertita in articoli del negozio come con il pulsante “Aggiungi al carrello”. Senza country si ottengono le opzioni per tutti i paesi di consegna (countries). Le parti senza articolo disponibile sono in missing – il loro peso non è incluso e complete è false. Disponibile anche come POST con {"config": "…"} o una distinta {"bom": […]}. Max. 60 richieste al minuto.

Parametri
NomePosizioneTipoDescrizione
configobbligatorio query string ID della configurazione (ad es. LFKDD5KLP9MG)
countryfacoltativo query string Paese di consegna; vuoto = tutti i paesi
currencyfacoltativo query string EUR o USD
curl "https://modula24.com/api/checkout/shipping?config=LFKDD5KLP9MG&country=AT"
Risposta (abbreviata)
{
  "config": "LFKDD5KLP9MG", "country": "AT", "currency": "EUR",
  "complete": false,
  "missing": [{"text": "Tablar Metall 500x350 RAL 6003", "qty": 2, "reason": "derzeit nicht lieferbar"}, "…"],
  "items": [{"id": "58436497080584", "qty": 4, "title": "Rohr ohne Bohrung … – 100", "stock_sku": "rohr_100"}, "…"],
  "subtotal": "693.79", "weight_kg": 19.522, "kg_hamburg": 19.522, "kg_china": 0.0,
  "cart_url": "https://modula24.com/cart?add=58436497080584:4,…&cfg=LFKDD5KLP9MG",
  "shipping_options": [{"id": "dhl", "cost": "39.62", "days": "3–6", "unit": "days", "legs": ["…"]}]
}

API giacenze

URL di base: https://api.modula24.com

Giacenze attuali dei nostri magazzini di Amburgo (hamburg) e Cina (china) per SKU. Ideale per rivenditori, comparatori di prezzi e gestionali. I dati vengono aggiornati continuamente (le vendite di tutti i canali vengono registrate ogni 10 minuti); il campo data_updated_at indica l’ultima modifica. Chiamabile anche direttamente dal browser (CORS).

Campi per articolo: sku, warehouse, title, price + currency, available (quantità disponibile), ean, url (pagina prodotto su modula24.com, in tedesco), urls (pagina prodotto per lingua: de, en, fr, it), updated_at. Se un articolo non è offerto su modula24.com, url e urls sono null.

GET /stock

Consultare le giacenze – Tutti gli articoli o filtrati. I filtri sono combinabili.

Parametri
NomePosizioneTipoDescrizione
warehousefacoltativo query string hamburg o china; vuoto = tutti i magazzini
skusfacoltativo query string SKU separati da virgole, ad es. kugel,rohr_350
qfacoltativo query string Ricerca libera in SKU, titolo ed EAN
eanfacoltativo query string EAN esatto
in_stockfacoltativo query boolean true = solo articoli con giacenza > 0
curl "https://api.modula24.com/stock?warehouse=hamburg&skus=kugel,rohr_350"
Risposta (abbreviata)
{
  "count": 2, "data_updated_at": "2026-09-29T10:43:15+00:00",
  "items": [
    {"sku": "kugel", "warehouse": "hamburg", "title": "Kugel - Ersatzkugel", "price": 3.5, "currency": "EUR",
     "available": 3243, "ean": "", "url": "https://modula24.com/products/kugel-ersatzkugel-usm-haller",
     "urls": {"de": "https://modula24.com/products/kugel-ersatzkugel-usm-haller", "en": "…", "fr": "…", "it": "https://modula24.com/it/products/pallina-di-ricambio-usm-haller"},
     "updated_at": "2026-09-28T17:30:15Z"},
    {"sku": "rohr_350", "warehouse": "hamburg", "title": "Rohr Ohne Loch – 350 mm", "price": 4.5, "currency": "EUR",
     "available": 300, "ean": "", "url": "https://modula24.com/products/rohr-ohne-bohrung-100-mm-bis-750-mm-usm-haller?variant=58436497375496",
     "urls": {"de": "…", "en": "https://modula24.com/en/products/tube-without-bore-100-mm-to-750-mm-usm-haller?variant=58436497375496", "fr": "…", "it": "…"},
     "updated_at": "2026-09-29T11:40:18Z"}
  ]
}

GET /stock/{sku}

Giacenza di uno SKU – Giacenza di uno SKU in tutti i magazzini con la somma total_available. Con ?warehouse= un solo magazzino. SKU sconosciuto: 404.

Parametri
NomePosizioneTipoDescrizione
skuobbligatorio percorso string SKU, maiuscole/minuscole indifferenti
warehousefacoltativo query string hamburg o china
curl https://api.modula24.com/stock/kugel
Risposta (abbreviata)
{
  "sku": "kugel", "total_available": 3243,
  "warehouses": [
    {"sku": "kugel", "warehouse": "china", "available": 0, "…": "…"},
    {"sku": "kugel", "warehouse": "hamburg", "available": 3243, "…": "…"}
  ]
}

GET /stock.csv

Giacenze in CSV – Per Excel & co. Colonne: magazzino, SKU, EAN, nome, prezzo, valuta, giacenza, URL negozio, aggiornamento.

Parametri
NomePosizioneTipoDescrizione
warehousefacoltativo query string hamburg, china o vuoto
in_stockfacoltativo query boolean solo articoli disponibili
sepfacoltativo query string Separatore ; (predefinito) o ,
curl -o bestand.csv "https://api.modula24.com/stock.csv?warehouse=hamburg&sep=,"
Risposta (abbreviata)
Lager,SKU,EAN,Artikelname,Preis,Waehrung,Bestand,Shop-URL,Stand
hamburg,kugel,,Kugel - Ersatzkugel,3.50,EUR,3243,https://modula24.com/products/kugel-ersatzkugel-usm-haller,2026-09-28 17:30

GET /warehouses

Magazzini – Elenco dei magazzini. Inoltre GET /health restituisce il numero di SKU per magazzino e la data dei dati.

curl https://api.modula24.com/warehouses
curl https://api.modula24.com/health
Risposta (abbreviata)
{"warehouses": [{"id": "hamburg", "name": "Hamburg"}, {"id": "china", "name": "China"}]}

{"status": "ok", "skus": 308, "per_warehouse": {"china": 154, "hamburg": 154},
 "data_updated_at": "2026-09-29T10:43:15+00:00"}

Dati prodotti e feed

URL di base: https://modula24.com

Tutti gli articoli ordinabili con prezzo, disponibilità, immagini e peso – per lingua in JSON e nel formato Google Merchant Center. I feed vengono rigenerati a ogni modifica del negozio. La variant_id serve per l’API delle spese di spedizione e per il link al carrello.

GET /products.json

Prodotti (compatibile con Shopify) – Tutti i prodotti con varianti nel noto formato Shopify – gli strumenti Shopify esistenti continuano a funzionare. Singolo prodotto: /products/{handle}.json, prodotti di una categoria: /collections/{handle}/products.json. Altre lingue con prefisso, ad es. /it/products.json. L’id della variante è la variant_id per l’API delle spese di spedizione e il link al carrello.

Parametri
NomePosizioneTipoDescrizione
handlefacoltativo percorso string Nome URL del prodotto o della categoria (dal link)
curl https://modula24.com/products.json
curl https://modula24.com/products/rohr-ohne-bohrung-100-mm-bis-750-mm-usm-haller.json
curl https://modula24.com/collections/konnektoren-usm-haller/products.json
Risposta (abbreviata)
{
  "product": {
    "id": 12175235252488, "title": "Rohr ohne Bohrung - 100 mm bis 750 mm - kompatibel mit USM Haller",
    "handle": "rohr-ohne-bohrung-100-mm-bis-750-mm-usm-haller", "vendor": "Modula24",
    "variants": [
      {"id": 58436497080584, "title": "100", "price": "2.50", "price_usd": "2.85", "sku": "M24-58436497080584",
       "available": true, "option1": "100", "grams": 42, "weight": 0.042, "weight_unit": "kg"},
      "…"
    ],
    "options": ["…"], "images": ["…"]
  }
}

GET /feeds/products.{lang}.json

Feed prodotti (JSON) – {lang} = de, en, fr o it. Una voce per variante. availability = in_stock / out_of_stock, prezzi in EUR e USD.

Parametri
NomePosizioneTipoDescrizione
langobbligatorio percorso string Lingua
curl https://modula24.com/feeds/products.de.json
Risposta (abbreviata)
{
  "generated": "2026-09-29T13:02:49Z", "language": "de", "currency": "EUR",
  "items": [
    {"id": "M24-58436517069064", "variant_id": "58436517069064",
     "title": "Konnektor Connector Verbindung - 100% kompatibel mit USM Haller",
     "description": "…", "link": "https://modula24.com/products/konnektor-connector-verbindung-usm-haller",
     "image_link": "https://modula24.com/img/…webp", "availability": "in_stock",
     "price": "0.95 EUR", "price_usd": "1.09 USD", "brand": "Modula24", "condition": "new",
     "shipping_weight": "0.034 kg", "options": {}}
  ]
}

GET /feeds/google.{lang}.xml

Feed Google Merchant (XML) – RSS 2.0 con namespace Google per Merchant Center, comparatori di prezzi e marketplace. {lang} = de, en, fr, it o us (USD). Inoltre: /sitemap.xml.

Parametri
NomePosizioneTipoDescrizione
langobbligatorio percorso string Lingua o us
curl https://modula24.com/feeds/google.de.xml
Risposta (abbreviata)
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0"><channel>
<item>
  <g:id>M24-58436517069064</g:id>
  <title>Konnektor Connector Verbindung - 100% kompatibel mit USM Haller</title>
  <g:price>0.95 EUR</g:price>
  <g:availability>in_stock</g:availability>
  …
</item>

Link al carrello

URL di base: https://modula24.com

Un link che inserisce gli articoli direttamente nel carrello di un visitatore – ad es. da una distinta, un preventivo, uno strumento di progettazione o un assistente IA. Il visitatore vede “N articoli aggiunti al carrello” e ordina lui stesso alla cassa. Vengono accettate solo varianti note e disponibili; gli articoli già presenti restano, le varianti uguali vengono sommate. Max. 60 righe per link.

LINK /cart?add={variant_id}:{qty},…

Aggiungere articoli al carrello – Lingue: /cart (tedesco), /en/cart, /fr/cart, /it/cart. Con &cfg=ID viene mostrato anche l’ID della configurazione.

Parametri
NomePosizioneTipoDescrizione
addobbligatorio query string VARIANTE:QTÀ, più voci separate da virgole
cfgfacoltativo query string ID della configurazione (solo visualizzazione)
https://modula24.com/cart?add=58436497375496:8,58546503745800:8
https://modula24.com/en/cart?add=58436497375496:8&cfg=LFKDD5KLP9MG

API del configuratore

URL di base: https://konfigurator.modula24.com

Ogni configurazione salvata nel configuratore 3D ha un ID di 12 caratteri (ad es. LFKDD5KLP9MG). Con questo ID puoi aprire la configurazione, ottenere prezzo, peso e dimensioni esterne, convertirla in articoli del negozio (per il link al carrello) e calcolare le spese di spedizione (vedi API spese di spedizione). Aprire il configuratore: https://konfigurator.modula24.com/?load=ID.

GET /checkout-api.php?action=summary&id={id}

Riepilogo – Prezzo secondo il configuratore, peso, dimensioni esterne (mm) e distinta.

Parametri
NomePosizioneTipoDescrizione
idobbligatorio query string ID della configurazione
curl "https://konfigurator.modula24.com/checkout-api.php?action=summary&id=LFKDD5KLP9MG"
Risposta (abbreviata)
{
  "ok": true, "id": "LFKDD5KLP9MG", "currency": "EUR", "total": 1487.66, "weight": 69,
  "dims": {"width": 1795, "height": 600, "depth": 500},
  "items": [{"label": "Rohr 100 mm", "qty": 4, "type": "tube"}, {"label": "Rohr 125 mm", "qty": 4, "type": "tube"}, "…"],
  "configuratorUrl": "https://konfigurator.modula24.com/?load=LFKDD5KLP9MG"
}

GET /checkout-api.php?action=cart&id={id}&lang={lang}

Come articoli del negozio – Converte la distinta in articoli ordinabili (lines) e restituisce il link al carrello pronto (url). Le parti non disponibili sono in missing.

Parametri
NomePosizioneTipoDescrizione
idobbligatorio query string ID della configurazione
langfacoltativo query string Lingua del link al carrello: de, en, fr, it
curl "https://konfigurator.modula24.com/checkout-api.php?action=cart&id=LFKDD5KLP9MG&lang=de"
Risposta (abbreviata)
{
  "ok": true,
  "lines": [{"vid": "58436497080584", "qty": 4, "sku": "rohr_100", "price": 2.5, "title": "Rohr ohne Bohrung … – 100"}, "…"],
  "missing": [{"text": "Tablar Metall 500x350 RAL 6003", "qty": 2, "reason": "derzeit nicht lieferbar"}, "…"],
  "total": 693.79,
  "url": "https://modula24.com/cart?add=58436497080584:4,…&cfg=LFKDD5KLP9MG"
}

GET /galerie.php?format=json

Immagini della galleria – Immagini IA fotorealistiche di configurazioni reali con colore, dimensioni esterne (mm), vani e ID della configurazione. URL immagine: https://konfigurator.modula24.com/images/ai/{file}.

curl "https://konfigurator.modula24.com/galerie.php?format=json"
Risposta (abbreviata)
{
  "images": [
    {"file": "MULTI2_LFKDD5KLP9MG.webp", "code": "MULTI2", "ral": "", "glass": false, "price": 1488,
     "weight": 69, "cfg": "LFKDD5KLP9MG", "dims": {"w": 1795, "h": 550, "d": 500},
     "cells": 7, "doors": 3, "trays": 0}
  ]
}

Domande, limiti più alti o un’integrazione personalizzata (B2B, ingrosso)? Scrivici a service@modula24.com.