---
title: "Get an instrument's quotes"
method: GET
path: "/instruments/{ref}/quotes"
tags: ["Markets"]
---

# Get an instrument's quotes

`GET /instruments/{ref}/quotes`

## Request

- Base URL: `https://arena-predictions.com/api/v1`
- URL: `https://arena-predictions.com/api/v1/instruments/{ref}/quotes`
- Auth: HTTP bearer

One instrument's venue quotes, the same answer as the public /api/quotes in the v1 shape (cents and contracts in the names). Served only while the venue-data switch is on; until then 403 venue_data_off.

## Path parameters

- `ref` string, required

## Response `200`

The quotes.

- InstrumentQuotes
  - `instrumentId` string, required
  - `label` string, required
  - `oppositeLabel` string, nullable
  - `league` string, nullable
  - `marketType` string, nullable
  - `matchup` string, nullable
  - `gameStatus` string, nullable
  - `queryMeans` string, required
  - `startsAt` string, date-time, required
  - `crossVenue` boolean, required
  - `venues` VenueQuote[], required
    - `venue` 'kalshi' | 'novig' | 'polymarket'
    - `venueMarketId` string
    - `venueSideRef` string
    - `sideLabel` string
    - `yesBidCents` number, nullable
    - `yesAskCents` number, nullable
    - `yesMidCents` number, nullable
    - `lastTradeCents` number, nullable: The last trade of the instrument's YES, in cents. It can be much older than asOf.
    - `lastTradeAt` string, date-time, nullable: When lastTradeCents traded; null when the venue gives no time (Kalshi) or there is none.
    - `outcomeLastTrades` object, nullable: Polymarket only: each outcome's own last trade in its own terms, price and time only. Null elsewhere.
      - `yes` LastPrint, nullable: One outcome's last trade: price in cents and the time it traded. Null until that outcome trades while Arena watches it.
        - `priceCents` number
        - `at` string, date-time, nullable
      - `no` LastPrint, nullable: One outcome's last trade: price in cents and the time it traded. Null until that outcome trades while Arena watches it.
        - `priceCents` number
        - `at` string, date-time, nullable
    - `yesBidContracts` number, nullable
    - `yesAskContracts` number, nullable
    - `complementTradable` boolean
    - `minOrderContracts` number, nullable
    - `asOf` string, date-time
    - `fungibility` 'exact' | 'condition_scope'
    - `note` string, nullable
    - `reviewed` boolean
  - `omitted` object[], required: Venues with a listing that could not be priced this time, and why.
    - `venue` string
    - `note` string
  - `asOf` string, date-time, required
  - `disclaimer` string, required

## Other responses

- `401`: Missing, malformed, unknown, revoked or expired key. Carries a WWW-Authenticate: Bearer challenge.
- `403`: insufficient_scope (no markets:read), or venue_data_off: venue prices are not served on the keyed API yet (the public /api/quotes shows them).
- `404`: instrument_not_found.
- `429`: rate_limited (over the plan's minute limit) or quota_exceeded (over the month). Only while the limits are enforced; until then requests are counted and the headers set, and nothing is refused. error.retryAfterSeconds equals Retry-After.
- `503`: The key could not be verified, or the data could not be read, right now. Retry after the Retry-After seconds.

---

[API](https://skmtc.dev/arena-predictions/apis/arena-api.md) · [All operations](https://skmtc.dev/arena-predictions/apis/arena-api/llms.txt) · [OpenAPI document](https://skmtc.dev/arena-predictions/apis/arena-api/revisions/9d89d166dae6?raw)
