---
title: "Batch-fetch quotes for many symbols"
method: POST
path: "/v1/quotes_batch"
tags: ["Market Data"]
---

# Batch-fetch quotes for many symbols

`POST /v1/quotes_batch`

One round-trip for N symbols. Server-side tokio fan-out with bounded concurrency. Returns partials on per-symbol errors rather than failing the whole batch.

## Request body

- BatchQuotesRequest
  - `concurrency` integer — Max concurrent upstream quote-fetches inside the batch. Default 64; cap 256. Higher values fan out faster but risk rate-limiting at venue REST fallbacks (Polymarket CLOB, Kalshi public orderbook).
  - `depth` integer — Book depth per side (default 10, max 100). Applied uniformly.
  - `instrument_type` string, nullable — Optional override for `instrument_type` (applied uniformly). Leave unset to auto-detect per symbol (token_id/Kalshi-ticker → Prediction, everything else → Spot).
  - `nowait` boolean — Skip the up-to-2s dynamic-subscribe wait per symbol. Strongly recommended for bulk calls — without it, one cold symbol in the batch can still stall everything else for up to 2s.
  - `symbols` string[], required — List of symbols (tickers, token_ids, slugs, URLs). Same resolution rules as the singleton `/v1/quotes/:symbol` path — slugs resolve via the slug-resolver, token_ids route through Polymarket, etc.

## Response `200`

Batch quote data

- BatchQuotesResponse
  - `count` integer, required
  - `elapsed_ms` integer, required — Wall time from request-received to all quotes resolved. Useful for client-side pacing and backoff.
  - `quotes` BatchQuoteEntry[], required
    - union
      - QuoteResponse
        - `book` QuoteBook, required
          - `asks` QuoteBookLevel[], required
            - `price` number, double, required
            - `size` number, double, required
            - `venue` string, required
          - `bids` QuoteBookLevel[], required
            - `price` number, double, required
            - `size` number, double, required
            - `venue` string, required
        - `instrument_type` string, required — Disambiguates which book this quote came from. Spot vs perp on the same `symbol` (e.g. `BTC-USDT`) are separate NBBOs because their prices differ by basis. `"spot"` / `"perp"` / `"prediction"`.
        - `nbbo` QuoteNbbo, required
          - `age_ms` integer — Age of the NBBO in milliseconds — min `age_ms` across the venues whose bid+ask were chosen for this NBBO. Lets callers refuse trades on quotes older than their tolerance instead of having to walk the per-venue `venues.{v}.age_ms` map themselves.
          - `ask` number, double, required
          - `bid` number, double, required
          - `mid` number, double, required
          - `spread_bps` number, double, required
          - `staleness` string, required — Discrete staleness class derived from `age_ms`. Trip-wire for trading code: never act on `dead`, prefer not to act on `stale`. `fresh` — < 1 s (real-time, kernel-bus origin) `recent` — < 10 s (acceptable for non-latency-sensitive use) `stale` — < 60 s (probable edge-side feed stall, refresh first) `dead` — ≥ 60 s (do not trade — feed is presumed broken)
        - `source` string, required — Provenance of the quote data. Three values: `edge_nbbo` — in-memory NBBO from a live venue-edge WS stream (sub-millisecond update latency, every tick). `venue_public_api` — HTTP fallback against the venue's public orderbook endpoint. 2-second cache, ~100-500ms staleness. Research-grade, not trading-grade. `unavailable` — neither path produced data. Caller sees zero bid/ask and empty book; this is distinct from a true empty-book edge NBBO because the venue literally doesn't publish liquidity for this symbol (resolved market, invalid token, etc.).
        - `symbol` string, required
        - `venues` object, required
      - object — Per-symbol error — caller gets partial results instead of the whole batch failing on one bad input.
        - `error` string, required
        - `symbol` string, required

## Other responses

- `400` — Bad request (empty symbol list, depth out of range)

---

[API](https://skmtc.dev/sequencemkts/apis/sequence-markets-api.md) · [All operations](https://skmtc.dev/sequencemkts/apis/sequence-markets-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/sequencemkts/sequence-markets-api/revisions/1c826964b9f9/schema)
