Skip to main content
The Public Info API is a single POST endpoint that returns market, account, and platform data with no authentication. It is designed for AI trading agents, quant traders, analytics platforms, copy-trade bots, and whale trackers. Highlights:
  • One endpoint, 24 query types — switch behavior via the type field
  • Zero auth — every type, including by-address account queries, is callable from any IP without keys
  • Address-discoverable — any wallet can be inspected (positions, orders, fills, PnL)
  • Raw data — clients compute their own indicators; all monetary values are decimal strings
  • Independent rate-limit pool — does not share quota with the existing REST or WebSocket APIs

Quick start

When to use the Public Info API

This API is a new, additive read-only surface. It runs alongside the existing REST and WebSocket APIs and uses an independent rate-limit pool. Reach for it when you want to:
  • Build a public dashboard, AI agent, or analytics tool without wiring up authentication
  • Look up positions, orders, fills, or PnL for any address (whale tracking, copy trading, leaderboards)
  • Prototype against Orderly data quickly, no API keys required
  • Backtest strategies with historical candles, funding rates, or trade history
  • Aggregate cross-account / platform-wide views (e.g. liquidation heatmaps)
The Public Info API is read-only — it does not place orders, move funds, or change account settings.

Endpoint

Every request goes to the same URL. The type field selects the handler.

Response envelope

Success:
Error:
ts is the server’s response timestamp in milliseconds (UTC).

Error codes

A RATE_LIMIT_EXCEEDED response additionally carries "retry_after": <ms epoch> and a Retry-After HTTP header (in seconds).

Address resolution

Endpoints that take address resolve it to one or more accounts via the internal user table. The optional broker_id and account_id narrow the scope. If no accounts match, the response is ADDRESS_NOT_FOUND (HTTP 404). Some endpoints (accountState, feeRate) change response shape based on whether account_id is supplied — see the per-endpoint docs.

Pagination

Paginated endpoints return data.next_cursor (an opaque Base64 string; null on the last page). Pass it back as cursor to fetch the next page.
Treat cursors as opaque — do not parse them. Cursor contents vary by endpoint and may change between versions. marketSummary, marketTrades, fundingComparison, orderbook, and rateLimitStatus do not paginate — they return a bounded snapshot in a single response.

Time conventions

  • All timestamps are milliseconds since Unix epoch (UTC)
  • Range validation: timestamps must lie in [0, 253402300799000] (year 9999); out-of-range throws INVALID_PARAM
  • Several endpoints snap default lookbacks to UTC day boundaries — noted per endpoint

Rate limits

The Public Info API has its own rate-limit pool, separate from the existing REST and WebSocket APIs. Calls to this endpoint do not consume your REST API quota, and vice versa.

Weight pool

Quota is tracked per IP, in weight units, on a rolling one-minute window. Each query type costs a different amount of weight. Pick lighter types when polling.

Weight per query type

Response headers

Every response includes:
X-RateLimit-Weight reports how much this single call consumed.

Over-quota response

HTTP 429 with:
A Retry-After HTTP header (in seconds) is included.

rateLimitStatus

Read your IP’s quota state for the rolling one-minute window. Weight: 0 — calling it does not consume any quota, so it is safe to poll on every loop iteration. Request:
Response:

Data freshness

Worst-case data freshness per query type / field — the data you receive is at most this old, and usually fresher. Use this to decide how often to poll: there is no benefit to polling faster than a type’s freshness window.
The X-Data-Freshness response header records the server response time, not when the data was generated. Use the table below as the freshness reference.
For multi-source bundles, fields in one response can have different freshness, so they are listed per field; agentContext / positionContext reflect their oldest sub-block. trades older than 24 hours are served from the historical archive (refreshed hourly); fills within the last 24 hours are real-time.

Query types

  • Market datamarketSummary, marketDetail, orderbook, candles, marketTrades, liquidations, fundingRateHistory, fundingComparison
  • Account data (require address) — accounts, accountState, agentContext, feeRate, fundingPayments, historicalOrders, openOrders, orderStatus, portfolio, positionContext, trades, userDepositsWithdrawals, whaleContext
  • Platform datatopAddresses, platformPositions