GET /providers
List available perpetual provider platforms.Parameters
Response 200
Provider Fields
Calling a sub-route (
/markets, /assets, createAction, etc.) with the key of an inactive provider fails with 400 and code: 2002 (ValidationError) rather than returning empty data.ProviderCategory in categories describes a trading category within the provider:
The same
ProviderAction shape backs setup, options, and actions. Entries in setup and options additionally carry UI metadata (title, description) and a params array. Each params[] entry describes one input the widget collects before dispatching the action — its values array enumerates the legal value strings the action accepts, which is the source of truth for things like the mode values on accountMode and the tier values on accountType. A setup or options entry may also carry gatesAccountReads: true, marking the step whose satisfaction lets the venue authenticate account reads and account streams for the address; while that step stays unsatisfied, those reads and streams cannot start.
SDK: getProviders()
GET /markets
List the tradeable markets (instruments) for a provider. Returns static instrument metadata only — ids, base/quote assets, decimals, leverage caps, and margin. Live per-market data (mark price, previous-day price, 24h volume, open interest, funding) is served by/marketsContext. Cached for one hour, since instrument metadata changes rarely.
Parameters
Response 200
Market carries static metadata only — live data lives on MarketContext:
SDK:
getMarkets()
GET /assets
List the underlying asset registry for a provider. An asset is a transferable balance unit (Lighter’sasset_id namespace), not a tradable market — markets reference assets as their base/quote legs. Providers whose ledger deltas already carry the asset symbol inline (Hyperliquid) return an empty array.
Parameters
Response 200
Asset:
SDK:
getAssets()
GET /marketsContext
Get live per-market context for all markets:midPrice, markPrice, and (where the venue publishes it) oraclePrice; prevDayPrice, priceChange24h, and volume24h for every market; marketCap where the venue publishes circulating supply; and openInterest and funding for perps. Intended for frequent polling; pair it with the static metadata from /markets. Cached for one second.
Parameters
Response 200
MarketContext:
SDK:
getMarketsContext()
GET /ohlcv
Get OHLCV candle data for charts.Parameters
Response 200
Response 404
Market not found error.
SDK: getOhlcv()
GET /orderbook
Get current orderbook snapshot.Parameters
Response 200
Response 404
Market not found error.
SDK: getOrderbook()
GET /meta
Get read-only platform metadata: the backendversion and the list of active platform-level notices (advisories shown to all users, independent of any provider or market). Cached for one minute.
Parameters
Response 200
Meta:
Each
Notice:
GET /meta/terms
Get the current terms-of-service document and whether an address has accepted that version. When the address has not accepted,accepted is false and acceptedAt is omitted.
Parameters
Response 200
TermsAcceptanceStatus:
GET /meta/referral
Get an address’s onboarding and internal-referral state: terms acceptance, its attached and owned codes, whether it may create a code, and the verdict on a candidate code. Provider-independent.Parameters
Response 200
ReferralStatus:
Response 400
ValidationError — malformed address or code.
GET /meta/referral/activity
Get the addresses attached toaddress’s owned internal referral code, paginated. Provider-independent.
Parameters
Response 200
ReferralActivityResponse:
Each
ReferralActivityItem:
Response 400
ValidationError — malformed address, limit, or cursor.