API・連携

販売店、パートナー、開発者、AIエージェント向けの公開インターフェースです。送料の計算、在庫の確認、商品データの取得、カートの準備、3Dコンフィギュレーターで作成した構成の活用ができます。ここで紹介するインターフェースはすべて無料・読み取り専用で、登録は不要です。

概要

  • 形式:JSON(UTF-8)。金額はドット区切りの文字列(例:"18.14")で、特に記載がない限りEURです。
  • 認証:不要です。ここで紹介するエンドポイントはすべて公開・読み取り専用です。
  • エラー403の場合:当社のサーバーはCloudflareの背後にあります。curl、Pythonのrequests、JavaScriptのfetchは追加設定なしで利用できますが、一部のライブラリ(例:Pythonのurllib)は拒否されます。その場合は独自のUser-Agent(例:MeineFirma-Integration/1.0 (kontakt@example.com))を送信してください。
  • ブラウザからの呼び出し(CORS):在庫APIと商品フィードは、どのウェブサイトからでも呼び出せます。送料APIはサーバー間の呼び出し用です。バックエンドから呼び出してください。
  • 制限:構成の送料は、IPアドレスごとに毎分60リクエストまでです(超えると429)。必要以上に頻繁にデータを取得せず、結果は短時間キャッシュしてください(例:在庫は5~10分)。
  • エラー:HTTPステータスコード(400 入力が無効、404 見つからない、422 パラメーターの不足・不正、429 リクエストが多すぎる)。メッセージはdetailまたはerrorフィールドに含まれます。
  • AIエージェント向け:言語モデル向けの簡潔な概要は/llms.txtと/agents.mdにあります。

送料API

ベースURL: https://modula24.com

カートやレジ(お会計)とまったく同じ方法で送料を計算します。カート、重量、または3Dコンフィギュレーターの構成に対応しています。ハンブルク倉庫の商品はDHL(1個口31.5 kgまで)で発送し、中国倉庫にのみ在庫がある商品は海上輸送または航空輸送で発送します。一部の商品のみがハンブルクにある場合は分割発送となります。どの商品がどこにあるかは、APIが現在の在庫から判断します。

配送方法(id):dhl(ハンブルクから:DHL Paket International Premium、玄関先までお届け。ドイツ国内はDHL Paket)、dhl_eco(ハンブルクから:DHL Paket International Economy、宅配ロッカー/郵便局でのお受け取り。EU域外のみ、一部の国を除く)、sea / air(中国倉庫のみの商品)、split_sea / split_air(分割発送:ハンブルク分はDHL Premium、残りは中国から)、air_door(EU域外のみ、ハンブルク在庫の商品を含む場合:ご注文全体を中国倉庫から航空便で玄関先まで、通関済み、7~10営業日)、pallet(ハンブルクからフォワーダーによるパレット輸送。ドイツ/EU/スイス/ノルウェー/アイスランドのみ、1パレット750 kgまで、100 kgから、価格順に表示)、fourpx(4PX:ご注文全体を中国倉庫から追跡付きで発送、関税はショップ負担。EU域内も対応、一部の国を除く)、sea_door(EU域外のみ:ご注文全体を中国倉庫から海上輸送で玄関先まで、通関済み、9~11週間。常に最後に表示)。適用される料金体系はlegs[].productにも記載されます。各オプションにはcost、配送日数daysとunit(days = 営業日、weeks = 週)、および発送の各区間legsが含まれます。最も安いオプションが最初に表示されます(air_door、fourpx、sea_doorは常に最後)。

GET /api/checkout/config

配送対象国 – 配送対象国(ISO 3166コード)と通貨の一覧です。配送はこれらの国に限られます。

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

POST /api/checkout/shipping

商品の送料 – カートの配送オプションです。バリエーションID(variant_id)は商品フィードに記載されています。

パラメーター
名前場所型説明
country必須 ボディ(JSON) string 配送先の国、ISOコード(例:DE、AT)
items必須 ボディ(JSON) array 商品:[{"id": "<variant_id>", "qty": 2}]、最大100行
currency任意 ボディ(JSON) string EUR(標準)または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}]}'
レスポンス(抜粋)
{
  "country": "AT", "currency": "EUR", "kg_hamburg": 1.8, "kg_china": 0.0,
  "shipping_options": [
    {"id": "dhl", "cost": "18.43", "days": "3–5", "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

重量による送料 – 商品を指定せず、倉庫ごとの重量で直接計算します。独自の見積もり計算などにご利用ください。

パラメーター
名前場所型説明
country必須 ボディ(JSON) string 配送先の国、ISOコード
kg_hamburg任意 ボディ(JSON) number ハンブルク倉庫からの重量(kg、0~5000)
kg_china任意 ボディ(JSON) number 中国倉庫からの重量(kg、0~5000)
currency任意 ボディ(JSON) string EURまたは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}'
レスポンス(抜粋)
{
  "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}

構成の送料 – 3Dコンフィギュレーターで保存した構成について、「カートに追加」ボタンと同じように部品リストをショップの商品に変換します。countryを指定しない場合は、すべての配送対象国のオプション(countries)が返されます。購入可能なショップ商品がない部品はmissingに記載され、その重量は含まれず、completeはfalseになります。POSTで{"config": "…"}または部品リスト{"bom": […]}を送ることもできます。毎分最大60リクエストです。

パラメーター
名前場所型説明
config必須 クエリ string 構成ID(例:LFKDD5KLP9MG)
country任意 クエリ string 配送先の国。空欄 = すべての国
currency任意 クエリ string EURまたはUSD
missing任意 クエリ integer 1 = 購入できない部品について、中国倉庫からの推定送料missing_shippingも返します(重量はカタログ値、または面積・長さからの推定値、梱包分として+10 %。海上輸送/航空輸送、4PX、fourpx_split = 30 kgごとの分割などのオプション)。関税・輸入消費税を含まない目安です。これらの部品はショップでは注文できません。POSTの場合:"missing": true
curl "https://modula24.com/api/checkout/shipping?config=LFKDD5KLP9MG&country=AT"

# mit Versand-Schätzung für nicht lieferbare Teile (ab China)
curl "https://modula24.com/api/checkout/shipping?config=8JUKX9TJ2WSK&country=DE&missing=1"
レスポンス(抜粋)
{
  "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": ["…"]}],
  "missing_shipping": {  // nur mit missing=1
    "origin": "china", "weight_kg_net": 51.25, "weight_kg": 56.38, "packaging_factor": 1.1,
    "parts": [{"text": "Tablar Metall 595x395 RAL 2004", "qty": 11, "kg_each": 1.998, "kg_total": 21.978, "kg_source": "schaetzung"}, "…"],
    "unknown_weight": [],
    "shipping_options": [{"id": "air", "cost": "311.76", "days": "7–10", "unit": "days", "legs": ["…"]},
                         {"id": "fourpx_split", "cost": "776.90", "days": "5–7", "unit": "days", "parcels": 2, "parcel_kg": [30, 26.38]}]
  }
}

在庫API

ベースURL: https://api.modula24.com

当社ハンブルク倉庫(hamburg)の在庫SKUごとの現在の在庫です。販売店、価格比較サイト、ERPシステムに最適です。データは継続的に更新され(全販売チャネルの販売を10分ごとに反映)、最新の変更日時はdata_updated_atフィールドで確認できます。ブラウザから直接呼び出すこともできます(CORS)。

各商品のフィールド:sku、warehouse、title、price + currency(ショップと同じ価格。ショップで販売していない商品はnull)、available(在庫数)、ean、url(modula24.comの商品ページ、ドイツ語)、urls(言語別の商品ページ:de、en、fr、it)、updated_at。modula24.comで販売していない商品の場合、urlとurlsはnullです。

GET /stock

在庫の照会 – すべての商品、または絞り込んだ商品。フィルターは組み合わせて使えます。

パラメーター
名前場所型説明
warehouse任意 クエリ string 倉庫ID(/warehousesを参照)、現在はhamburg。空欄 = すべて
skus任意 クエリ string カンマ区切りのSKU(例:kugel,rohr_350)
q任意 クエリ string SKU、商品名、EANのフリーテキスト検索
ean任意 クエリ string EAN(完全一致)
in_stock任意 クエリ boolean true = 在庫が0より多い商品のみ
curl "https://api.modula24.com/stock?warehouse=hamburg&skus=kugel,rohr_350"
レスポンス(抜粋)
{
  "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}

SKU単位の在庫 – 1つのSKUの全倉庫の在庫と合計total_availableです。?warehouse=で特定の倉庫のみ。存在しないSKUは404。

パラメーター
名前場所型説明
sku必須 パス string 在庫SKU(大文字・小文字の区別なし)
warehouse任意 クエリ string 倉庫ID(/warehousesを参照)、現在はhamburg。空欄 = すべて
curl https://api.modula24.com/stock/kugel
レスポンス(抜粋)
{
  "sku": "kugel", "total_available": 3243,
  "warehouses": [
    {"sku": "kugel", "warehouse": "hamburg", "available": 3243, "…": "…"}
  ]
}

GET /stock.csv

CSV形式の在庫 – Excelなど向け。列:倉庫、SKU、EAN、商品名、価格、通貨、在庫、ショップURL、更新日時。

パラメーター
名前場所型説明
warehouse任意 クエリ string 倉庫ID(/warehousesを参照)、現在はhamburg。空欄 = すべて
in_stock任意 クエリ boolean 在庫のある商品のみ
lang任意 クエリ string 言語 de(標準)、en、fr、it:列見出し、商品名、ショップURLがその言語になります。enはカンマ区切り・小数点はドット
sep任意 クエリ string 区切り文字 ;(標準)または,
curl -o bestand.csv "https://api.modula24.com/stock.csv?warehouse=hamburg"
curl -o stock.csv "https://api.modula24.com/stock.csv?warehouse=hamburg&lang=en"
レスポンス(抜粋)
Warehouse,SKU,EAN,Product name,Price,Currency,Stock,Shop URL,Updated
hamburg,kugel,,Ball - Replacement Ball - 100% compatible with USM Haller,3.50,EUR,3243,https://modula24.com/en/products/replacement-ball-usm-haller,2026-09-28 17:30

GET /warehouses

倉庫 – 倉庫の一覧です。また、GET /healthで倉庫ごとのSKU数とデータの更新日時を取得できます。

curl https://api.modula24.com/warehouses
curl https://api.modula24.com/health
レスポンス(抜粋)
{"warehouses": [{"id": "hamburg", "name": "Hamburg"}]}

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

商品データ・フィード

ベースURL: https://modula24.com

注文可能なすべての商品について、価格、在庫状況、画像、重量、カテゴリー、カラー/サイズ、配送先の国ごとの送料(1点、最も安いオプション)を、言語ごとにJSON形式およびGoogle Merchant Center形式で提供しています。フィードはショップで変更があるたびに再生成されます。送料APIとカートリンクにはvariant_idが必要です。

GET /products.json

商品(Shopify互換) – バリエーションを含むすべての商品を、おなじみのShopify形式で提供します。既存のShopify向けツールはそのまま使えます。個別の商品:/products/{handle}.json、カテゴリーの商品:/collections/{handle}/products.json。他の言語はプレフィックス付き(例:/en/products.json、/ja/products.json)。バリエーションのidが、送料APIとカートリンクで使うvariant_idです。

パラメーター
名前場所型説明
handle任意 パス string 商品またはカテゴリーのURL名(リンクから取得)
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
レスポンス(抜粋)
{
  "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

商品フィード(JSON) – {lang} = de、en、fr、it、ja。バリエーションごとに1件。availability = in_stock / out_of_stock、価格はEURとUSD。

パラメーター
名前場所型説明
lang必須 パス string 言語
curl https://modula24.com/feeds/products.de.json
レスポンス(抜粋)
{
  "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",
     "google_product_category": 8023, "product_type": "Konnektoren", "shipping_weight": "0.034 kg",
     "shipping": [{"countries": ["DE"], "price": "…", "min_days": 1, "max_days": 2}, "…"], "options": {}}
  ]
}

GET /feeds/google.{lang}.xml

Google Merchantフィード(XML) – Merchant Center、価格比較サイト、マーケットプレイス向けのGoogle名前空間付きRSS 2.0です。{lang} = de、en、fr、it、ja、またはus(USD)。あわせて/sitemap.xmlもご利用いただけます。

パラメーター
名前場所型説明
lang必須 パス string 言語またはus
curl https://modula24.com/feeds/google.de.xml
レスポンス(抜粋)
<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>

カートリンク

ベースURL: https://modula24.com

訪問者のカートに商品を直接追加するリンクです。部品リスト、見積書、プランニングツール、AIアシスタントなどからご利用いただけます。訪問者には「N点の商品がカートに追加されました」と表示され、ご本人がレジ(お会計)で注文します。追加されるのは既知の購入可能なバリエーションのみです。カートにすでにある商品はそのまま残り、同じバリエーションは数量が合算されます。1リンクあたり最大60行です。

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

カートに商品を追加 – 言語:/cart(ドイツ語)、/en/cart、/fr/cart、/it/cart、/ja/cart。&cfg=IDを付けると構成IDも表示されます。

パラメーター
名前場所型説明
add必須 クエリ string VARIANT:QTY、複数の場合はカンマ区切り
cfg任意 クエリ string 構成ID(表示のみ)
https://modula24.com/cart?add=58436497375496:8,58546503745800:8
https://modula24.com/en/cart?add=58436497375496:8&cfg=LFKDD5KLP9MG

コンフィギュレーターAPI

ベースURL: https://konfigurator.modula24.com

3Dコンフィギュレーターで保存した構成には、それぞれ12文字のID(例:LFKDD5KLP9MG)が付きます。このIDを使って、構成を開く、価格・重量・外形寸法を取得する、ショップの商品に変換する(カートリンク用)、送料を計算する(送料APIを参照)ことができます。コンフィギュレーターを開く:https://konfigurator.modula24.com/?load=ID。

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

概要 – コンフィギュレーターでの価格、重量、外形寸法(mm)、部品リスト。

パラメーター
名前場所型説明
id必須 クエリ string 構成ID
curl "https://konfigurator.modula24.com/checkout-api.php?action=summary&id=LFKDD5KLP9MG"
レスポンス(抜粋)
{
  "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}

ショップの商品として – 部品リストを注文可能なショップの商品(lines)に変換し、すぐに使えるカートリンク(url)を返します。ショップで購入できない部品はmissingに記載されます。

パラメーター
名前場所型説明
id必須 クエリ string 構成ID
lang任意 クエリ string カートリンクの言語:de、en、fr、it
curl "https://konfigurator.modula24.com/checkout-api.php?action=cart&id=LFKDD5KLP9MG&lang=de"
レスポンス(抜粋)
{
  "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

ギャラリー画像 – 実際の構成をもとにしたフォトリアルなAI画像。カラー、外形寸法(mm)、区画数、構成IDを含みます。画像URL:https://konfigurator.modula24.com/images/ai/{file}。

curl "https://konfigurator.modula24.com/galerie.php?format=json"
レスポンス(抜粋)
{
  "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}
  ]
}

ご質問、上限の引き上げ、個別の連携(B2B・卸売)については、こちらまでご連絡ください: service@modula24.com.