裝箱 API免費 Beta

同規劃器一樣嘅 Extreme-Point 引擎,一個 HTTP call 用到。重量限制、堆疊規則、易碎、同組聚集、多站卸貨分區 — 全部服務端執行。喺 Bischoff–Ratcliff 學術基準(300 個貨櫃裝載 instance)引擎平均 80% 容積利用率,連全套穩定性約束。CORS 開放:瀏覽器、腳本、AI agent 都可以調用。

認證: 毋須認證。可選加上 X-API-Key: dp_live_…(或 Authorization: Bearer)取得自己嘅限額配額,係匿名限額 5 倍 — 即時發出,免費。 攞 key / 睇方案 →

POST /api/case-design

探索產品外箱排列、TI-HI、卡板/貨櫃使用率同每件出貨成本。匿名每分鐘 10 次、每日 100 次;JSON 上限 32 KB。可用 X-API-Key 或 Authorization。GET 提供可執行範例。

請求:units 為 cm-kg 或 in-lb;product 包含 l,w,h,weight 及可選 keepUpright,label;unitsPerCase 為整數或 {min,max}。可選 caseConstraints、pallet、container、costs 同 candidates(1–10,預設 5)。GET 範例列出格式。

回應 found 或 none_within_search;候選方案包含排列、雙單位外箱尺寸同重量、卡板、貨櫃、可選成本分項、檢查同假設。頂層提供 checks、semantics、engineVersion、SHA-256 inputHash、notes、搜尋數目同限制。冇成本按每櫃件數再按卡板使用率排序;有成本按每件最低已填成本排序。缺少成本當零,每板同每櫃運費相加。可不填目的地,只篩選外箱。

最多平均抽樣 24 個件數(包括上下限)、400 個按 0.1 cm 尺寸去重嘅設計、2,000 個散裝箱。每箱件數 1–2,000。運輸保持箱直放、只計直柱疊法、最多疊兩板,卡板自重假設 25 kg。紙板每平方米 0.6 kg 係估算,預設每邊厚 0.4 cm、頂部空隙 0.5 cm。唔係 ECT/BCT 認證或最優證明。不可行方案會淘汰;冇可行結果會明示未評估。錯誤:400 輸入欄位、413 過大、415 格式、429 限流。

curl https://www.dimpack3d.com/api/case-design
curl https://www.dimpack3d.com/api/case-design -H 'Content-Type: application/json' --data-binary @case-design-request.json

訂單方案 — 慳返下一板

POST /api/order-options 接受 order-quote 請求加以下欄位。先用三種策略同四種貨品排序試原有數量;搵唔到更好砌法先試獲准嘅單 SKU 同雙 SKU 數量變更。最多回傳三個完整方案,依板數、變更件數絕對值、淨節省排序。卡板範圍、堆疊、包裝同收貨方限制全部不變。

  • targetPalletCount: 整數 1–20;預設原板數減一,最少一板。屬目標:亦可能回傳未達目標嘅改善或唔加板嘅加貨方案。
  • adjustments[]: {sku,minQty,maxQty,qtyStep?}: 預設所有 SKU 鎖定。SKU 必須存在而且唯一;範圍 0–200 要包含原數量;步幅預設 1,以原數量為起點。零代表整個 SKU 延後出貨;唔會回傳空貨運方案。
  • searchBudget: 整數 1–200,預設 60;唔計基準報價。用盡額度會有 SEARCH_BUDGET 警告。只係搵到嘅最佳方案,唔係最佳化證明。
  • economics: 可選填 palletFreight、handlingPerPallet、按 SKU 嘅 contributionPerUnit 同 deferralCostPerUnit、currency(三個大寫字母)。只用你提供嘅非負費用。淨節省 = 慳運費 + 慳處理費 − 延後貢獻利潤 − 延後出貨費。加貨利潤以負嘅延後利潤表示。欠所需費用會回 netSavings:null;冇費用請填零。

回應包含 baseline、target、searched、alternatives(連完整 quote、quantityChanges、candidateHash、economics 同 packing)、outcome、checks、semantics、notes、engineVersion、inputHash、tier;無效 key 另有 warning。內層報價同時回傳 cm/in 同 kg/lb。quoteOrder 亦接受 actuals.summary{actualPalletCount,selectedOptionId,measuredAt} 並喺 variance.summary 原樣回傳;measuredAt 係 ISO 時間。重現選中砌法可將 packing 連新數量交返 order-quote。

匿名:每分鐘 5 次、每日 50 次。JSON 內容最多 48 KB。GET 回傳例子;OPTIONS 支援 CORS、X-API-Key 同 Authorization。錯誤:400 驗證錯誤附 field、413 內容過大、415 內容類型錯誤、429 超額。檢查只屬篩查,唔係認證。

curl -s https://www.dimpack3d.com/api/order-options > order-options-help.json
curl -X POST https://www.dimpack3d.com/api/order-options -H 'Content-Type: application/json' --data-binary @order-options-request.json
試用方案面板 →

POST /api/consolidate

多訂單併櫃:最多三個搵到嘅最佳方案,包含擺位、檢查、PO/SKU 餘貨同可選散貨估價。同一出發地區、同一目的地篩查,唔係訂艙。

請求:units、pos(PO、供應商、備妥日期、優先次序同箱資料)、window、containers(櫃型、最多數量、每櫃報價)、lcl、rules 同 searchBudget。日期用 ISO 格式,包含起止日;有時間窗但冇日期嘅 PO 會跳過。合資格 PO 中優先次序 1 先行。

上限:30 個 PO、60 款箱、3,000 箱、64 KB。匿名每分鐘 5 次、每日 50 次;可加 X-API-Key 或 Authorization: Bearer key。預設 40 次砌櫃、最多 120 次;55–85% 容積範圍最多 12 個組合,冇組合時明確註明用最接近容積後備方案。maxCount 預設 12;易碎箱頂部唔承重,maxStack 係重量,唔係層數。

每個方案嘅合資格紙箱全部入櫃時 status 為 complete,否則為 partial。搵到完整方案(或冇合資格紙箱)時頂層 status 為 complete,否則為 partial。原有 outcome 保留。

回應包含合資格及跳過 PO、貨量、方案(櫃內箱、分區、檢查、餘貨、散貨估算、成本及雜湊)、搜尋次數、版本、輸入雜湊、假設同 tier。無效 key 有 warning。欠報價時成本係 null;全部報價須同一貨幣。散貨只係容積估價。箱及分區用 cm/kg,尺寸重量亦提供雙單位。錯誤:400 驗證附 field、413 太大、415 格式、429 配額。

curl https://www.dimpack3d.com/api/consolidate > consolidate-docs.json
curl -X POST https://www.dimpack3d.com/api/consolidate -H 'Content-Type: application/json' --data-binary @consolidation-request.json
開啟併櫃規劃 →

POST /api/box-catalog

按訂單記錄揀紙箱目錄。GET 提供完整例子。POST 欄位:units、skus(sku,l,w,h,weight,keepUpright?,fragile?)、orders(orderId?,lines[{sku,qty}],count?)、currentBoxes?、candidateBoxes?(id,l,w,h,maxWeight?,cost?)、catalogSize 1–12、billing(dimDivisor,unit,minBillableWeight?,ratePerKgOrLb?)、voidFillCostPerLitre?、searchBudget?(預設 200,上限 1000)。

限制:96 KB、300 SKU、500 組訂單,每組 60 件/10 SKU,每池 40 箱型。匿名每分鐘 5 次、每日 50 次;支援 X-API-Key 或 Authorization。回傳 catalog(cm/in 尺寸、使用次數、佔比)、perOrder、totals(kg/lb)、baseline?、savings?、checks、searched、semantics、engineVersion、inputHash、tier;無效 key 附 warning。冇費率會回 RATE_PROVIDED:not_evaluated 並省略費用。400 輸入錯誤連 field、413 過大、415 格式錯誤、429 超額。

自動候選箱一律用 1 cm 網格,包括英制請求;尺寸同時回傳 cm 同英吋。全部訂單放得落時 status 為 complete,否則為 partial。

只係搵到嘅最佳方案,唔保證最優。冇緩衝、承運商進位或空箱重量。放唔落嘅訂單會標示並按最大體積候選箱估費,只計入總估算;任何一個目錄放唔落嘅訂單都唔計入節省。有費率先將箱費同填充費加入目標;否則按計費 kg 搜尋。預算太低時餘下箱型會按固定次序補齊。chooseBox 為完整單張訂單揀最低計費重量紙箱。

coverageFirst 預設 true:先盡量覆蓋最多訂單(按次數計),再減少計費重量/費用。false 只供分析。節省只計兩個目錄都放得落嘅訂單,附 basisOrders、excludedUnfit;有排除會附 partial,每千單以 basisOrders 計。冇 currentBoxes 就省略 baseline 同 savings。放唔落會附 unfitSharePct 同 COVERAGE_LIMITED_BY_CATALOG_SIZE;覆蓋率只係搜尋預算內搵到嘅最佳結果,唔代表證明無解。

curl https://www.dimpack3d.com/api/box-catalog -H 'Content-Type: application/json' --data-binary @box-request.json
試用紙箱目錄 →

POST /api/receiver-check

傳送 order-quote 請求加 profileId 或完整 profile。設定尺寸同限制用 cm/kg,會轉成請求單位。GET 列出範本、來源同日期。匿名限額每分鐘 10 次、每日 100 次。回傳報價、設定資料同版本、profileChecks、tier;無效 key 另有 warning。有規則失敗就回 needs_review;必須檢查 cartonsUnplaced。人手規則回 not_evaluated。範本須由買家確認,唔代表接收或扣款預測。

{
  "profileId": "ltl-standard-us",
  "orderId": "SO-1",
  "pallet": {
    "l": 121.92,
    "w": 101.6,
    "baseHeight": 14.5,
    "maxHeight": 200,
    "maxWeight": 900,
    "tareWeight": 22
  },
  "items": [
    {
      "sku": "A",
      "l": 40,
      "w": 30,
      "h": 25,
      "qty": 10,
      "weight": 5
    }
  ]
}

400: invalid fields · 404: unknown profileId · 413: body too large · 415: application/json required · 429: rate limit

訂單 → 卡板報價 API

POST /api/order-quote 係 order-plan 之上嘅報價流程封裝:明確單位(cm-kg 或 in-lb)、穩定 sku id、連板底同包裝嘅毛重、收貨方/承運商限制檢查(附假設)、inputHash + engineVersion、以及計費 id(每張訂單一次)。互動版連 CSV 匯入同預測 vs 實量記錄: /order-quote

status
complete — 全部箱已放入且所有限制通過。partial — maxPallets 內放唔晒;絕不可當整張訂單報價。needs_review — 已放入但某個限制(limits.maxLoadedHeight / maxGrossWeight)未通過;reviewReasons[] 指明。
pallets[].outerDims / grossWeight / checks[]
外高 = 板底 + 貨 + packagingAllowance.height;毛重 = 貨 + pallet.tareWeight + packagingAllowance.weight。兩種單位一併回傳。每項檢查都有 code、status(pass|fail|warn|not_evaluated)、observed、limit 同所用假設 — 冇檢查或 not_evaluated 從來唔等於通過。
inputHash / engineVersion / meter
規劃輸入(統一 cm/kg)嘅 SHA-256;單位制同 actuals 都唔會改變佢。同 hash + 同 engineVersion = 同結果。meter.unit 係 "order",meter.id 係你嘅 orderId(或 hash 前綴)— 付費方案嘅計費單位。
actuals
可選 { "0": { height, grossWeight, note } },以板序號為 key,用請求單位;回傳每板 variance(delta、deltaPct)。試點就係用呢個量度我哋。
限制
每張訂單 20 種箱型、200 箱、20 板、32 KB。匿名每 IP 10/分、100/日;免費 key 5 倍。GET 該 endpoint 可取得完整範例請求。
curl -s https://www.dimpack3d.com/api/order-quote | jq .request > order-quote-request.json
curl -X POST https://www.dimpack3d.com/api/order-quote \
  -H "Content-Type: application/json" -H "X-API-Key: dp_live_…" \
  --data-binary @order-quote-request.json | jq '{status, reviewReasons, summary, pallets: [.pallets[] | {outerDims, grossWeight, checks: [.checks[] | {code, status}]}]}'

舊版同步 API 只接受 cm/kg:卡板請求帶 units 欄位會被拒絕。回應提供 version,冇 engineVersion 或 inputHash。需要單位轉換同 SHA-256 識別請用 /api/order-quote。

混合訂單與多棧板規劃 API

POST /api/order-plan 將剩餘紙箱依序分配至最多 20 個棧板。傳送 { request, maxPallets },request 使用下方 pallet 與 items 欄位。API 尺寸一律為公分、重量為公斤,即使網站選擇英吋與磅亦相同。

規劃訂單、比較棧板尺寸並下載 API 請求 →
status / placedCount / unplacedCount / byItem
這些頂層欄位代表整張訂單。complete 表示全部紙箱已放入;partial 表示尚有餘箱,即使個別棧板已滿。報價前請確認 unplacedCount。
pallets[] / loadedHeight / boxes
每個棧板包含連底座高度、貨物重量、擺位及該次分配的各箱型餘數。紙箱 ID 在整張訂單中不重複。py 從棧板表面起算;依 py、pz、px 排序可產生由下至上的擺放步驟。
限制與解讀
最多 20 種箱型、總計 200 箱、maxPallets 為 1–20,JSON 不超過 32 KB。設定限流儲存後,免費 Beta 每 IP 每分鐘 10 次、每日 100 次。錯誤碼與下方單棧板接口相同。結果為啟發式分配,不保證最低高度或最少棧板;支撐檢查亦不代表運輸穩定性認證。

JavaScript · Node.js 20+

import { readFile } from 'node:fs/promises';
const input = JSON.parse(await readFile('order-request.json', 'utf8'));
const response = await fetch('https://www.dimpack3d.com/api/order-plan', {
  method: 'POST', headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify(input), signal: AbortSignal.timeout(30000)
});
if (!response.ok) throw new Error(await response.text());
const plan = await response.json();
console.log(plan.status, plan.palletCount, plan.unplacedCount);
for (const pallet of plan.pallets) console.log(pallet.loadedHeight);

Python · 標準函式庫

import json
from urllib.request import Request, urlopen
with open('order-request.json', 'rb') as source:
    request = Request('https://www.dimpack3d.com/api/order-plan',
        data=source.read(), headers={'Content-Type': 'application/json'})
with urlopen(request, timeout=30) as response:
    plan = json.load(response)
print(plan['status'], plan['palletCount'], plan['unplacedCount'])
for pallet in plan['pallets']:
    print(pallet['loadedHeight'])

估算卡板連底座高度

POST /api/pallet-estimate 比較三種擺法,回傳最佳方案。高度包含底座;partial 只代表已放入紙箱,並非整批訂單。結果不是已證明的最低高度。

舊版同步 API 只接受 cm/kg:卡板請求帶 units 欄位會被拒絕。回應提供 version,冇 engineVersion 或 inputHash。需要單位轉換同 SHA-256 識別請用 /api/order-quote。

輸入訂單並下載請求範例 →
{
  "pallet": {
    "l": 120,
    "w": 80,
    "baseHeight": 15,
    "maxHeight": 160,
    "maxWeight": 750
  },
  "items": [
    {
      "label": "Main cartons",
      "l": 60,
      "w": 40,
      "h": 30,
      "qty": 12,
      "weight": 8,
      "keepUpright": true
    },
    {
      "label": "Small cartons",
      "l": 40,
      "w": 30,
      "h": 20,
      "qty": 8,
      "weight": 4,
      "keepUpright": true
    }
  ]
}
pallet
l/w:底面;baseHeight:空板高度;maxHeight:連底座總高度上限;maxWeight:只計貨物的載重。cm/kg,必須提供限制。
items[]
必須提供 label、l/w/h、整數 qty、正數 weight 及布林 keepUpright。可選 maxStack 為上方容許重量,0 表示不可堆疊;未提供則不檢查紙箱承重。
status / loadedHeight / byItem / boxes
complete 表示全部放入;partial 表示尚有餘箱。loadedHeight 包含 baseHeight。byItem 列出訂購、已放入及剩餘數量。boxes 的 px/py/pz 為最小角位置,py 由板面起計。cargoWeight 不含空板重量。
限制與錯誤
每次 20 種 / 200 箱 / 32 KB。免費 Beta:設定限流儲存後每 IP 每分鐘 20 次、每日 200 次。400:JSON 或欄位錯誤;413:內容過大;415:類型錯誤;429:限流(Retry-After)。大量訂單請聯絡我們。

請求

curl -X POST https://www.dimpack3d.com/api/pack \
  -H "Content-Type: application/json" \
  -d '{
    "container": { "l": 589, "w": 235, "h": 239, "maxWeight": 28200 },
    "items": [
      { "label": "Master carton", "l": 60, "w": 40, "h": 40, "weight": 18, "qty": 120 },
      { "label": "Fragile", "l": 45, "w": 35, "h": 25, "weight": 6, "qty": 30, "maxStack": 0 }
    ]
  }'

回應

{
  "boxes": [ { "id": "i0-0", "label": "Master carton", "l": 60, "w": 40, "h": 40,
               "px": 0, "py": 0, "pz": 0, "weight": 18 }, … ],
  "unplaced": 0,
  "stats": { "volumeUtil": 78.4, "totalWeight": 2340, "weightUtil": 8.3,
             "cog": { "x": 271, "y": 63, "z": 115 }, "cogOffsetPct": { "x": -8, "z": -2 } },
  "zones": [ { "unloadOrder": 1, "xStart": 0, "xEnd": 589, "count": 150 } ],
  "checks": [ { "code": "DOOR_APERTURE", "status": "not_evaluated",
                "assumption": "Send container.door {w,h} or container.preset to evaluate…" },
              { "code": "HEAVY_OVER_LIGHT", "status": "pass", "observed": "none", "assumption": "…" }, … ],
  "checksSummary": { "evaluated": 7, "notEvaluated": ["DOOR_APERTURE","AXLE_LOADS","VGM"], "failed": [], "warned": [] },
  "computeMs": 41,
  "engine": "dimpack3d-extreme-point"
}

欄位

container.l/w/hInternal dimensions in cm (required)
container.maxWeightPayload limit in kg (optional)
container.preset"20gp" | "40gp" | "40hq" — fills interior, payload, door aperture and tare; explicit fields override
container.door{w,h} door aperture in cm (optional) — enables the DOOR_APERTURE check
container.axles{frontPos, rearPos, frontLimit, rearLimit} cm/kg (optional, trucks) — enables AXLE_LOADS
container.tareContainer tare kg (optional) — shown on the VGM line; VGM is never declared here
items[].l/w/hItem dimensions in cm (required)
items[].qtyUnits of this item (default 1; ≤2,000 total per request)
items[].weightkg per unit (optional; enables weight/CoG stats)
items[].maxStackMax kg allowed on top; 0 = fragile, nothing stacks on it
items[].keepUprighttrue = never tip on its side ("this way up")
items[].allowRotatefalse = fixed orientation
items[].groupKeep-together group name (packed contiguously)
items[].unloadOrder1 = unload first (loaded nearest the door); LIFO zones

checks[] — 每個回應、每項檢查、明確狀態

每個 /api/pack 回應都附帶 checks[]:狀態 pass | fail | warn | not_evaluated、觀察值、限制同所用假設:PLACEMENT_COMPLETE、DOOR_APERTURE、PAYLOAD、STACK_LIMITS_PROVIDED、HEAVY_OVER_LIGHT、COG_HEIGHT、LOAD_VOIDS、AXLE_LOADS、VGM、ZONE_SEGREGATION。你冇提供輸入嘅檢查會回 not_evaluated 並指明要加邊個欄位 — 永遠唔會靜靜當通過。checksSummary 列出已評估、失敗同警告項目。/api/pallet-estimate、/api/order-plan、/api/order-quote 帶有卡板版本。呢啲係對你提供數字嘅篩查,唔係穩定性、道路合法性、危險品相容或收貨方接受嘅認證。

單位: cm / kg. 限制: 每次 100 種箱型、共 2,000 件。位置為最小角 (px, py, pz),櫃門喺 +X 方向。

條款: Beta 期間免費,合理使用。結果屬估算 — 重要裝載請核實。更高限額同商業方案: /api-pricing

想用介面?打開互動規劃器 →