---
title: "StreamPrice"
method: POST
path: "/price_service.v1.PriceService/StreamPrice"
tags: ["Prices"]
---

# StreamPrice

`POST /price_service.v1.PriceService/StreamPrice`

Server-streaming endpoint. Opens a long-lived Connect/gRPC-Web stream
 and, on a fixed interval, sends one `GetPriceResponse` message per
 market in `market` (not one combined message) — requesting 3
 markets means 3 messages per tick.

 If any single market in the list fails to resolve, the
 entire stream terminates rather than skipping that market.

 `update_interval_ms` defaults to 250ms when omitted, and is clamped
 to the 100–60000ms range rather than rejected.

 NOTE: Mintlify's request-based API explorer cannot exercise a real
 streaming response.

## Headers

- `Connect-Protocol-Version` 1, required — Define the version of the Connect protocol. If omitted, use 1.
- `Connect-Timeout-Ms` number — Define the timeout, in ms

## Request body

- PriceServiceV1StreamPriceRequest
  - `market` union[], required — Markets to stream prices for. Must be non-empty — one streamed message is sent per market, per tick.
    - union
      - object
        - `marketId` string, int64, required
      - object
        - `marketSymbol` BaseObjectsV1MarketSymbol, required
          - `assetSymbol` string — Underlying asset symbol, e.g. `"BTC"`. Matched case-insensitively and trimmed.
          - `quoteSymbol` string — Quote symbol, e.g. `"PERP"`. Technically optional, but omitting it looks up a market named exactly by `assetSymbol` alone (e.g. `"BTC"`) rather than `"BTC-PERP"`, which will not resolve to any real market. In practice, always set this.
  - `updateIntervalMs` integer, nullable — Interval between stream ticks, in milliseconds. Defaults to 250 when omitted or zero, and is clamped to the 100–60000 range.

## Response `200`

One streamed message, for one market (the server sends a sequence of these, not a single response).

- PriceServiceV1GetPriceResponse
  - `price` BaseObjectsV1Price
    - `marketId` string, int64 — On-chain market identifier.
    - `marketName` string — Same value as `symbol` on this object (both are set from whichever selector form the request used — see `symbol`).
    - `symbol` string — Echoes back however the market was identified in the request: the bare asset symbol (e.g. `"BTC"`) if the request used `market_symbol`, or the full market name (e.g. `"BTC-PERP"`) if the request used `market_id`. `marketName` always mirrors this same value.
    - `price` number, float — Current price in USD.
    - `volume24h` number, float — 24-hour trading volume in the market's quote units.
    - `priceChange24h` number, float — 24-hour price change, as a percentage.
    - `timestamp` string, date-time
    - `source` string — Price feed source
  - `signedPricePayload` string, nullable — Signed price attestation from the upstream pricing oracle, suitable for on-chain submission (e.g. to settle trades or trigger liquidations). Opaque/encoded; format is defined by the pricing oracle, not by this API.

---

[API](https://skmtc.dev/fairground/apis/fairground-fi-api.md) · [All operations](https://skmtc.dev/fairground/apis/fairground-fi-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/fairground/fairground-fi-api/revisions/be66e6dc0ac0/schema)
