Skip to main content
The Ondo Stocks APIs return structured error messages with three key fields:
  • code: Machine-readable identifier (e.g., MARKET_CLOSED)
  • message: Human-readable description
  • documentation: URL linking to relevant documentation

Error Codes

MARKET_CLOSED

Status: 403 Forbidden
The market is closed due to weekends, holidays, or scheduled/unscheduled closures from maintenance or exchange outages.

MARKET_PAUSED

Status: 403 Forbidden
Trading is temporarily paused, either during scheduled session transitions (09:29-09:31 ET) or unscheduled halts (circuit breaker triggers).

ASSET_PAUSED

Status: 403 Forbidden
Trading for a specific asset is paused, possibly due to corporate actions, symbol migration, or market volatility.

ASSET_LIMITED

Status: 200 OK
Returned as a reason code within asset status responses (not as an error). Indicates the asset has limited trading capacity, typically during earnings events. Trading is still permitted, but quantity may be restricted.

ASSET_CLOSED_FOR_SESSION

Status: 403 Forbidden
The asset isn’t tradable in the current session (“premarket”, “regular”, “postmarket”, “overnight”, or “offhours”).

ASSET_REDEEM_ONLY

Status: 403 Forbidden
The asset can only be redeemed (sold), not minted (bought).

READ_ONLY_API_KEY

Status: 403 Forbidden
The API key used is read-only and cannot create attestations or perform other write operations.

MISSING_API_KEY

Status: 401 Unauthorized
No API key was provided in the x-api-key request header.

INVALID_API_KEY

Status: 401 Unauthorized
The provided API key is not valid or has been revoked.

INVALID_SYMBOL

Status: 400 Bad Request
The symbol is invalid, unrecognized, or improperly formatted. Use valid namespaced symbols (e.g., TSLAon, AAPLon).

MISSING_SYMBOL

Status: 400 Bad Request
The required symbol parameter was not provided.

ASSET_NOT_FOUND

Status: 404 Not Found
The specified asset does not exist in the system.

INVALID_SIDE

Status: 400 Bad Request
The side parameter must be either buy or sell.

INVALID_DURATION

Status: 400 Bad Request
The duration parameter must be either long or short.

MAX_LIMIT_REACHED

Status: 400 Bad Request
The order exceeds user-based notional caps. Limits reset when attestations expire.

SESSION_LIMIT_REACHED

Status: 400 Bad Request
The order exceeds session-based notional caps, which reset after each session transition.

MAX_ATTESTATIONS

Status: 400 Bad Request
Maximum concurrent attestation requests reached. Wait for some to settle before requesting more.

OFFHOURS_EXPOSURE_LIMIT_REACHED

Status: 400 Bad Request
The off-hours exposure limit has been reached for the asset during the current off-hours session. Wait for the next session to open, or trade a different asset.

INSUFFICIENT_LIQUIDITY

Status: 400 Bad Request
An attestation cannot be created due to insufficient funds, typically during sparse overnight trading.

INVALID_NOTIONAL_VALUE

Status: 400 Bad Request
The amount is below minimum requirements, above user limits, or malformed/non-numeric.

INVALID_TOKEN_AMOUNT

Status: 400 Bad Request
The token amount is malformed or not a positive decimal value.

MISSING_TOKEN_OR_NOTIONAL

Status: 400 Bad Request
The request must include either tokenAmount or notionalValue, but neither was provided.

INVALID_ADDRESS

Status: 403 Forbidden
The provided wallet address is not whitelisted for trading.

MISSING_CHAIN_ID

Status: 400 Bad Request
The required chainId parameter was not provided in the request.

MISSING_SIDE

Status: 400 Bad Request
The required side parameter was not provided in the request.

INVALID_GM_CHAIN

Status: 400 Bad Request
The specified chain is not a valid GM chain identifier.

UNSUPPORTED_GM_CHAIN

Status: 400 Bad Request
The specified chain is recognized but not currently supported for the requested operation.

PAUSED_GM_CHAIN

Status: 400 Bad Request
The specified chain is temporarily paused and not accepting requests.

INVALID_SORT

Status: 400 Bad Request
The sort query parameter is invalid. Valid values are asc or desc.

INVALID_INTERVAL

Status: 400 Bad Request
The interval query parameter is not a valid value. Valid intervals are 1min, 5min, 15min, 1hour, 4hour, 12hour, and 1day.

INVALID_RANGE

Status: 400 Bad Request
The range query parameter is not a valid value. Valid ranges are 1day, 1month, 3month, 6month, 1year, and all.

INVALID_INTERVAL_RANGE_PAIR

Status: 400 Bad Request
The combination of interval and range parameters is not supported. See the OHLC endpoint documentation for valid pairs.

MISSING_TICKER_ID

Status: 400 Bad Request
The required tickerId parameter was not provided.

INVALID_TICKER_ID

Status: 400 Bad Request
The provided tickerId is not a valid ticker identifier. Ticker IDs are formatted as <base>_<target> (e.g., AAPLon_USDon).

RESOURCE_NOT_FOUND

Status: 404 Not Found
The requested resource does not exist.

MISSING_USER_ADDRESS

Status: 400 Bad Request
The user_address field is required for firm attestation requests on Solana chains but was not provided.

INVALID_USER_ADDRESS

Status: 400 Bad Request
The user_address provided for a firm attestation request on a Solana chain is not a valid Solana public key.

GAS_FEE_EXCEEDS_ORDER_VALUE

Status: 400 Bad Request
The estimated gas fee for executing the order on-chain exceeds the total value of the order. Increase your order size or try again when gas fees are lower.

RATE_LIMITED

Status: 429 Too Many Requests
The account has exceeded its request rate limits. Wait briefly and retry with exponential backoff.

INTERNAL_ERROR

Status: 500 Internal Server Error
An unexpected server error occurred. If this persists, contact your account manager.
This list is non-exhaustive. For unresolved issues, consult request documentation or contact us at support@ondo.finance.