1
Fetch the limits once, before your first data call
Get market-data limits answers the question
the other routes cannot: which timeframes are legal, and how large an ask will be honoured.
timeframes.units is the timeframe format itself — each unit with its inclusive count ceiling,
so 1..maxCount of any listed unit parses. Validate a user’s token against units and you
reach the same verdict the engine does, with no round trip and no 400 to recover from.2
Search the catalog
Search the symbol catalog is a substring
search over the enabled asset classes.
limit is clamped to 100, never refused, and hasMore is exact — so paging with offset
terminates cleanly instead of guessing at the end. Each row names the provider that actually
publishes the data, with via naming a proxy feed where one is in play.Use the returned symbol verbatim in every other market call. It is the id the feed knows.3
Resolve one symbol's details
Get symbol details is the read a chart and an
order ticket both need. Fetch it once per instrument and cache it for the session.Resolution is metadata-only: a known symbol with no configured feed still resolves, with
provider null. An unknown symbol answers 404 — a data answer, not a failure.4
Fetch the futures catalog once and keep it
Get the futures catalog is static
reference data, one row per futures product root.These are the facts the trdrs ticket itself sizes, snaps and prices with. No per-user state, no
secrets — fetch it at boot and hold it.
Why the limits call comes first
The other market routes assume you already know three things, and only this one will tell you.nominalSeconds on each unit is exact for the fixed-duration units and a coarse nominal for t
(about a minute) and mo (about 30 days). Use it to bound ranges and order menus. It is never a
promise about bar spacing.
What symbol details carry
A spread expression resolves here too, under type
spread, with no
tick and no quote surface. A string that matches a catalog symbol exactly is always that symbol,
never arithmetic — so the slash pair BTC/USD resolves as itself.
What the futures catalog adds
One row per product root, not per contract: the listing exchange,tickSize and tickValue, the
dollar multiplier, and the roll cycle.
Two rows repay a closer look:
- A product whose roll the engine does not approximate carries
months— the calendar months that list contracts — so an order ticket can offer the month picker such an order needs. - A root the exchange quotes in thirty-seconds carries
priceFractionas well: thedenominatorandsubFractionits prices are written and traded in. Read that fact rather than deriving one from the tick.
One more read worth making once
Get server time returns the engine clock in epoch seconds. Read it once at startup, compute the offset against your own clock, and apply that offset locally — session countdowns and bar boundaries then agree with the engine without ever polling the route again.Where to go deeper
- Backfill history — windows,
countBackpaging, and spread expressions. - Stream live data — what takes over once the backfill is on screen.
- Get quote snapshots — up to 50 symbols in one call, answered in request order.
- Rate limits — the
429and itsRetry-After. - Paging — the
offsetandhasMorecontract in full.