Error codes

Failures return an HTTP error status and a stable envelope:

{
  "error": {
    "code": "INVALID_DURATION",
    "message": "Unsupported duration",
    "details": null
  },
  "request_id": "…"
}

The code is stable and safe to match on; message is human-readable and may change.

Error codes

CodeHTTPMeaning
UNAUTHORIZED401Missing or invalid signing headers, bad signature, expired timestamp, replayed nonce, or an unknown/revoked API key.
FORBIDDEN403Authenticated but not permitted.
INVALID_REQUEST400Malformed or failed-validation request.
INVALID_ADDRESS400target_address is not a valid TRON address.
INVALID_DURATION400duration_minutes is not in the allowed catalog.
NOT_FOUND404Resource not found.
ORDER_NOT_FOUND404Quote or order not found, or not owned by your account.
QUOTE_EXPIRED409The quote is no longer open or has expired.
INSUFFICIENT_BALANCE402Prepaid balance cannot cover the order.
IDEMPOTENCY_CONFLICT409Idempotency key reused with a different payload.
RATE_LIMITED429Too many requests; slow down and retry.
SERVICE_UNAVAILABLE503The service is unavailable; retry later.
INTERNAL_ERROR500Unexpected server error.

Retry guidance

  • Safe to retry (with the same idempotency key): SERVICE_UNAVAILABLE, RATE_LIMITED, and network-level failures.
  • Do not blindly retry 4xx errors without fixing the request first.