Before you start
All four reads take your Trading API key and change nothing. The examples useTRDRS_API_BASE_URL and TRDRS_TRADING_API_KEY from the
programmatic quickstart. The TypeScript SDK
isn’t published, so call the routes over HTTP, as the curl examples do. The TypeScript examples
show the same calls through the SDK’s client.
1
Read the limits once
Get market-data limits says which
timeframes you can ask for and how big a request can be. Read it once when your app starts,
and keep it.The response settles what the other routes take for granted:
Check a timeframe against
units before you send it and you reach the same answer the engine
would, without a failed request. Each unit also has nominalSeconds, its rough length, which
is exact for fixed units and only approximate for t and mo. Use it to size ranges, never
to predict bar spacing.2
Search the catalog
Search the symbol catalog matches your
text anywhere in a symbol or its name. Each row has the
class narrows it to one kind of instrument, as each
row’s type writes it: future for futures, crypto for the crypto perpetuals you can trade,
or the class of a builder-deployed Hyperliquid market, such as equity or commodity. Leave
q empty to get a default list.symbol, its name, exchange and type, and provider, the provider whose
data serves the row to you. A futures row names the provider of your futures login, and a symbol
more than one provider serves you lists once for each. A perpetual names no provider, because its
exchange’s own feed charts it, and carries currencyCode, the asset it’s quoted in, such as
USDC.A builder-deployed Hyperliquid market lists under Hyperliquid as its exchange, with the class
Hyperliquid files it under and the ticker, name and exchange its instrument goes by in its own
market. HYPERLIQUID:XYZ:TSLA has the type equity, the name Tesla, Inc., the
displaySymbol TSLA, the displayExchange NASDAQ and the dex XYZ, the perp dex that
lists it; HYPERLIQUID:XYZ:CL reads as CL, WTI Crude Oil, on NYMEX. Show displaySymbol,
name and displayExchange to a trader, with dex beside them, since two dexes can list the
same stock, and name the market by symbol in every call. A market whose instrument lists on no
exchange, such as an exchange rate, has no displayExchange.Futures prices are licensed to each trader, so futures list only in a signed-in trader’s own
session at trdrs, and only when that trader has connected a login that carries futures prices
under their own market data subscription (Providers says which). A Trading API key
reads no futures data, so its search lists none. A signed-in trader sees each futures product in
this order:A continuous symbol always stands for the contract its position names at the moment you use
it, so a chart of
ES1! moves to the next contract at the roll with nothing for you to
change. The continuous rows appear only for a product whose roll trdrs models, and the dated
rows only for contracts it registers.Use the returned symbol exactly as it comes in every other market data call. limit is 50
when you leave it out, and a limit above 100 is reduced to 100 rather than refused. To page,
raise offset by limit while hasMore is true. hasMore is exact, so paging stops cleanly.3
Resolve one symbol
Get symbol details is the read a chart and an
order ticket both need. Read it once per instrument and keep it for the session.It answers for any known symbol, even one nothing feeds for you right now, such as a futures
symbol read with a Trading API key. An unknown symbol answers
404, which is an answer about the
symbol, not a failure. A futures root, a continuous symbol such as ES1! and a dated contract
such as ESZ6 share their product’s details, and each is named for what it is.
What symbol details carry explains each field.4
Read the futures catalog once
Get the futures catalog returns one row
per futures product. It’s the same for every caller and doesn’t change during the day, so read
it when your app starts and keep it.Each row has the product
root, such as ES, its name and exchange, tickSize and
tickValue, the dollar multiplier, and the roll cycle. These are the figures an order
ticket needs to size an order and snap a price to the tick. Two kinds of row carry more:- A product whose contract months the engine doesn’t work out from a quarterly cycle carries
months, the calendar months that list contracts, so a ticket can offer a month picker. - A product quoted in thirty-seconds, the Treasury bond and note futures
ZBandZN, carriespriceFraction: thedenominatorandsubFractionits prices are written in. Use it instead of working one out from the tick.
What symbol details carry
A spread expression, such as
HYPERLIQUID:BTC/HYPERLIQUID:ETH, resolves here too, with type set
to spread, no tick and no quotes. A string that exactly matches a catalog symbol is always that
symbol, never arithmetic, even when it contains a / or a -.
Backfill history covers spreads.
Keep your clock in step
Get server time returns the engine’s clock astime, in epoch seconds, and timeMs, in milliseconds. Read it once when your app starts, work
out the difference from your own clock, and apply that difference locally. Session countdowns and
bar boundaries then match the engine without asking again.
When a read is refused
Next steps
Backfill history
Load bars for the symbol you resolved, and scroll back through older ones.
Stream live data
Keep the chart live once the history is on screen.
Get quote snapshots
Read quotes for up to 50 symbols in one call, in the order you asked.