Error Codes & Limits

Outlines common API error codes and their meaning.

Ondo’s Global Market APIs return a structured set of error messages to ensure that developers and integrators receive clear, actionable feedback when a request cannot be fulfilled. These error codes are designed to cover both market-level and asset-level conditions, user-specific constraints, and input validation issues. Each error response includes a standardized error object that contains three key fields:

  • code: A short, machine-readable identifier (e.g., MARKET_CLOSED)
  • message: A human-readable description of the issue (e.g., "Weekend or Holiday")
  • documenation: A URL linking to the appropriate documentation reference on this page for that error.

This consistent format allows for robust client-side error handling, debugging, and end-user messaging. The HTTP status code for each error is included in the response headers, while the error is always provided as the response body. Below is a list of errors you may encounter.


MARKET_CLOSED

{
  "code": "MARKET_CLOSED",
  "message": "Weekend or Holiday"
}

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

Learn more: Market Status →


MARKET_PAUSED

{
  "code": "MARKET_PAUSED",
  "message": "Market paused for unscheduled outage"
}

Status: 403 Forbidden Trading is temporarily paused. This could be a scheduled session transition (like 09:29–09:31 ET) or an unscheduled halt (ie a circuit breaker trigger).

Learn more: Market Status →


ASSET_PAUSED

{
  "code": "ASSET_PAUSED",
  "message": "Trading for this asset is temporarily paused"
}

Status: 403 Forbidden Trading for this specific asset is paused. May be due to a corporate action, symbol migration, or real-time market volatility.

Learn more: Asset Paused →


ASSET_CLOSED_FOR_SESSION

{
  "code": "ASSET_CLOSED_FOR_SESSION",
  "message": "asset is not available for trading during the current session"
}

Status: 403 Forbidden Trading for this specific asset is not available in the current session. "Session" is defined as one of "premarket", "regular", "postmarket", or "overnight".

You can view the tradable sessions for each asset using the Get Market Data For Asset API →

Learn more about sessions at: Asset Paused →


INVALID_SYMBOL

{
  "code": "INVALID_SYMBOL",
  "message": "invalid symbol; must be at least 3 characters long and end with 'on'"
}

Status: 400 Bad Request The symbol provided is invalid, unrecognized, or improperly formatted. Ensure you’re using valid, name-spaced asset symbols (e.g., TSLAon, AAPLon).


MAX_LIMIT_REACHED

{
  "code": "MAX_LIMIT_REACHED",
  "message": "exceeded the active notional value limit"
}

Status: 400 Bad Request Your order exceeds the user-based notional cap. User limits reset when attestations expire and/or every 24 hours.


SESSION_LIMIT_REACHED

{
  "code": "SESSION_LIMIT_REACHD",
  "message": "exceeded the session's notional value limit"
}

*Status: 400 Bad Request

Your order exceeds the session-based notional cap. Limits reset after each session transition. Please refer to the Market Status Page for more information on session timings.


MAX_ATTESTATIONS

{
  "code": "MAX_ATTESTATIONS",
  "message": "exceeded the active attestations limit"
}

Status: 400 Bad Request You’ve submitted the maximum number of concurrent attestation requests. You must wait for some to settle before requesting more.


INSUFFICIENT_LIQUIDITY

{
  "code": "INSUFFICIENT_LIQUIDITY",
  "message": "exceeded the active attestations limit"
}

Status: 400 Bad Request An attestation cannot be created due to insufficient funds. This may occur during overnight trading when trading volume is sparse.


INVALID_NOTIONAL_VALUE

{
  "code": "INVALID_NOTIONAL_VALUE",
  "message": "invalid notional value"
}

Status: 400 Bad Request The amount specified is either below the minimum notional requirement or above your limit. Also returned for non-numeric or malformed input.


Other Errors

This list of error messages is not exhaustive. If the message field does not provide enough detail to resolve your issue, please consult the request’s documentation. For further assistance, you can contact your designated account manager.