此頁面由英文翻譯而成。英文版為官方權威來源。如翻譯內容有任何不一致之處,請以英文版為準。
錯誤處理
Flex Forward API 使用標準 HTTP 狀態碼和結構化的錯誤回應。本頁面涵蓋錯誤格式、狀態碼含義以及處理失敗的指引。錯誤回應格式
API 根據失敗類型回傳四種錯誤回應格式。了解預期的格式有助於撰寫正確的錯誤解析邏輯。標準錯誤
用於不支援的物流業者/產品、身份驗證失敗、衝突、資源未找到和伺服器錯誤等情況。格式為{ "error": string, "code"?: string }:
error 文字僅供參考,可能隨時變更而不另行通知。請根據 HTTP 狀態碼,以及存在時的 code,來判斷分支邏輯 — 切勿依賴訊息文字本身。
code 欄位會在部分錯誤回應中提供。IDEMPOTENCY_CONFLICT 與 DUPLICATE_CUSTOMER_ORDER_NUMBER 可區分 HTTP 409 衝突。
code 為選填,也可能出現未知值。沒有代碼時請依 HTTP 狀態碼處理。
驗證錯誤
用於請求驗證失敗(HTTP 400)。包含帶有欄位級別錯誤資訊的details 陣列:
details 中的每個條目包含:
只會回傳第一個驗證錯誤。修正後重新送出即可看到下一個錯誤。
HTTP 狀態碼
標籤建立結果的判讀
POST /labels 在 200、201 與 502 時都回傳相同的 LabelResponse 結構。HTTP 狀態碼說明這次呼叫是建立了標籤、重放了先前的嘗試,還是被物流業者拒絕。status 欄位則說明標籤是否存在。
驗證錯誤(400)
綱要驗證錯誤表示請求本文不符合 API 的要求,並包含帶有具體欄位路徑的details 陣列。其他 HTTP 400 錯誤則使用不含 details 的標準錯誤格式。
常見原因:
- 缺少必填欄位(
shipment.shipTo、courier、idempotencyKey) - 欄位型別或長度錯誤(例如
countryCode必須恰好為 2 個字元) - 數值為負(
weight與尺寸不得為負數) order.customerOrderNumber無效(最多 40 個字元,只能使用 ASCII 英文字母、數字、-、_)- 不支援的
label.format(請使用PDF或PNG)或商品unitPrice.currency(僅接受USD)
重試前請修正回報的錯誤。由於未建立標籤,400 回應後可以重複使用相同的
idempotencyKey。身份驗證錯誤(401 / 403)
401 Unauthorized
x-rr-apikey 或 x-rr-apitoken 標頭缺失或無效:
403 Forbidden
認證資訊有效,但帳戶不被允許呼叫 API(例如遭封鎖的帳戶):下游物流業者錯誤 502 與 422
當POST /labels 執行期間物流業者服務回傳錯誤時,API 以 HTTP 502 回應。標籤會以 status: failed 保存在資料庫中,並包含物流業者的錯誤詳情:
error 物件包含:
之後對失敗標籤呼叫
GET /labels/{id} 或 GET /tracking/{id} 時,會回傳 HTTP 422 及 LabelFailedResponse 內容 — 該標籤無文件或追蹤資料可用:
可重試與不可重試的錯誤
推薦的重試策略請參閱冪等性與重試。
疑難排解
缺少 Content-Type 標頭
缺少 Content-Type 標頭
所有 POST 請求必須包含
Content-Type: application/json。缺少時請求本文將不會被解析,API 會回傳 400 錯誤。基礎 URL 錯誤或使用 HTTP
基礎 URL 錯誤或使用 HTTP
所有請求必須使用 HTTPS。請確認使用正確的環境 URL:
https://api.flexforwardship.com(正式)或 https://sandbox.flexforwardship.com(開發)。找不到識別碼
找不到識別碼
GET /labels/{id} 和 GET /tracking/{id} 的 id 參數接受標籤 UUID 或您的 customerOrderNumber。傳入其他值,或屬於其他帳戶的識別碼,將回傳 404 錯誤。標籤已建立但狀態為 failed
標籤已建立但狀態為 failed
status: failed 的回應會由 POST /labels 以 HTTP 502 回傳(若以相同 idempotencyKey 重放則為 HTTP 200),之後讀取該標籤則會回傳 HTTP 422。請檢查 error 物件(讀取時為 LabelFailedResponse 內容)中的物流業者錯誤訊息。常見原因:無效地址、不支援的目的地,或物流業者帳戶設定問題。