API & Data Access
Read-only, JSON GET endpoints over the same market data that powers the terminal — no API key required.
Response envelope
asOf— an ISO 8601 timestamp of when the payload was computed. A cached response still reports the moment it was built, not the moment it was served.dataMode—DEMO(deterministic fixture-derived data, never a real market price) orLIVE(real provider data).- Money fields are always integer minor-unit amounts (cents) paired with a
currencyfield — never a floating-point dollar amount. - A
nullfield is a genuine coverage gap (unknown, insufficient data, illiquid) — never an interpolated or fabricated value. - Errors share one envelope:
{ error: { code, message, details? } }.
Endpoints
| Endpoint | Params | Description |
|---|---|---|
| GET /api/wall | filter, era, set, ptype, ctype, rarity, q, limit, cursor | The filterable market wall grid of card/product tiles. |
| GET /api/terminal/{instrument} | instrument (path, URL-encoded) | Full terminal snapshot for one instrument: price series, indicators, order-book depth, fair value, recommendation, population, provenance. |
| GET /api/screener | preset (UNDERVALUED | ACCUMULATION | TIGHT_SUPPLY | HIGH_LIQUIDITY), limit | Cross-sectional screener rows for one preset. |
| GET /api/indices | — | The hosted POKE150 / POKE250 index snapshots. |
| GET /api/quotes | instruments (comma-separated, max 200) | Compact watchlist quote rows for a set of instruments, plus the hosted indices. |
| GET /api/search | q | Card/set/era matches for the omni-search palette. |
/api/tape is a Server-Sent Events stream (text/event-stream) of live market events, not a request/response endpoint — it isn't listed above.
Machine-readable references
- /api/openapi.json — the full OpenAPI 3.1 document for these endpoints.
- /llms.txt — a plain-language orientation for LLM crawlers and agents.