錯誤碼與處理

理解和處理 API 錯誤

錯誤響應格式

所有錯誤響應使用統一格式:

{
  "error": {
    "code": "ERROR_CODE",
    "message": "Human readable error message",
    "details": "Additional context (optional)"
  }
}

💡 使用 error.code 作為穩定的分支條件(message 可能變化)

HTTP 狀態碼

200 OK

請求成功

200

201 Created

資源建立成功

201

400 Bad Request

請求參數錯誤

400
{
  "code": "INVALID_REQUEST",
  "message": "Invalid request format"
}

401 Unauthorized

未授權或 API Key 無效

401
{
  "code": "UNAUTHORIZED",
  "message": "Invalid or expired API key"
}

403 Forbidden

帳戶餘額不足或權限不足

403
{
  "code": "INSUFFICIENT_BALANCE",
  "message": "Account balance is insufficient"
}

404 Not Found

資源不存在

404
{
  "code": "ORDER_NOT_FOUND",
  "message": "Order not found"
}

409 Conflict

資源衝突

409
{
  "code": "ADDRESS_EXISTS",
  "message": "Address already exists"
}

429 Too Many Requests

API Key 請求頻率超限

429
{
  "code": "RATE_LIMITED",
  "message": "Rate limit exceeded"
}

500 Internal Server Error

伺服器內部錯誤

500
{
  "code": "INTERNAL_ERROR",
  "message": "An unexpected error occurred"
}

503 Service Unavailable

服務暫時無法使用(維護中)

503
{
  "code": "SERVICE_UNAVAILABLE",
  "message": "Service is temporarily unavailable"
}

常見錯誤碼

Error Code Status Description Solution
UNAUTHORIZED 401 API Key 無效、已過期或已被撤銷 檢查 API Key 是否正確,必要時重新建立
INSUFFICIENT_BALANCE 403 帳戶餘額不足 充值帳戶餘額
INVALID_ADDRESS 400 TRON 位址格式無效 檢查位址是否為有效的 TRON 位址(以 T 開頭)
INVALID_ENERGY_AMOUNT 400 能量數量無效 能量數量必須是正整數,推薦 65000 用於 USDT 轉帳
INVALID_DURATION 400 租賃時長無效 使用有效的時長:1H, 1D, 3D, 7D, 14D, 30D
ORDER_NOT_FOUND 404 訂單不存在 檢查訂單 ID 是否正確
ADDRESS_EXISTS 409 位址已存在 檢查是否已新增該位址,或使用現有位址
RATE_LIMITED 429 API Key 請求頻率超限(目前僅對 POST /v1/wallet/recharges 生效) 實作指數退避重試,或降低呼叫頻率

該怎麼做

Error Handling
401 UNAUTHORIZED 檢查/輪換 API Key
403 INSUFFICIENT_BALANCE 充值或降低請求金額
409 ADDRESS_EXISTS 改為查詢/冪等處理
429 RATE_LIMITED 退避重試(如存在 Retry-After 則遵循,否則指數退避)
5xx 重試 + 記錄請求上下文

重試要點

  • • max retries: 3
  • • backoff: 指數退避(1s, 2s, 4s...)
  • • 僅重試 429/5xx
  • • 4xx 不重試(請求錯誤)