> ## Documentation Index
> Fetch the complete documentation index at: https://docs.upsidemax.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Ticker

> Fetch 24-hour rolling statistics for a contract or the whole market — price change, high, low, volume, trade count, plus the current funding rate, mark price, and oracle price.

The `ticker` query returns **24-hour rolling statistics** for a contract: price change, high, low, volume and trade count, alongside the current funding rate, mark price, and oracle price. The window is a sliding `[now − 24h, now]` range, matching the conventional exchange definition — it is not a calendar day.

Omit `asset` to retrieve every contract in one call. For a live version of the same payload, subscribe to the [`ticker`](/websocket/ticker) WebSocket channel.

## Request

```json theme={null}
{ "type": "ticker", "asset": "1" }
```

<ParamField body="type" type="string" required>
  Must be `"ticker"`.
</ParamField>

<ParamField body="asset" type="string">
  The contract ID as a decimal string. **Omit to return every contract** that has traded. Contracts that have never traded are excluded from a market-wide response, and return all-zero values when queried individually.
</ParamField>

## Response

```json theme={null}
{
  "type": "ticker",
  "ts": 1754453600000,
  "tickers": [
    {
      "asset": "1",
      "lastPx": "1010",
      "openPx": "1000",
      "priceChange": "10",
      "priceChangePct": "1.0000",
      "highPx": "1010",
      "lowPx": "990",
      "volume": "30000",
      "count": 3,
      "windowStartMs": 1754367200000,
      "fundingRate": "125",
      "fundingTime": 1754450000000,
      "markPx": "1010",
      "oraclePx": "1012"
    }
  ]
}
```

<ResponseField name="ts" type="int64">
  Generation time of this response — the `now` end of the rolling window, in Unix milliseconds.
</ResponseField>

<ResponseField name="tickers" type="array">
  One entry per contract. Contains a single entry when `asset` was supplied.
</ResponseField>

### Ticker object fields

<ResponseField name="asset" type="string">
  The contract ID this entry describes.
</ResponseField>

<ResponseField name="lastPx" type="string">
  Most recent trade price (raw integer string, scaled by the contract's `priceScale`).
</ResponseField>

<ResponseField name="openPx" type="string">
  Baseline price 24 hours ago — the earliest trade inside the window.
</ResponseField>

<ResponseField name="priceChange" type="string">
  `lastPx − openPx`, signed (raw integer string).
</ResponseField>

<ResponseField name="priceChangePct" type="string">
  Percentage change over the window, signed and carried to four decimal places (for example `"1.0000"` or `"-0.8300"`). Returns `"0"` when `openPx` is `0`. This value is already a percentage — do not rescale it.
</ResponseField>

<ResponseField name="highPx" type="string">
  Highest trade price within the window.
</ResponseField>

<ResponseField name="lowPx" type="string">
  Lowest trade price within the window.
</ResponseField>

<ResponseField name="volume" type="string">
  Traded volume over the window, in base units (raw integer string, scaled by the contract's `qtyScale`).
</ResponseField>

<ResponseField name="count" type="int64">
  Number of trades within the window.
</ResponseField>

<ResponseField name="windowStartMs" type="int64">
  Start of the window in Unix milliseconds. For a contract listed less than 24 hours ago, this is the time of its earliest trade.
</ResponseField>

<ResponseField name="fundingRate" type="string">
  Current funding rate, signed, as a raw fixed-point integer with a scale of **1e8** — `1e8` represents `100%`. The true rate is `fundingRate / 1e8`; to display a percentage, use `fundingRate / 1e6`. It applies **per funding interval** (read `fundingInterval` from [`configs`](/info/configs)). Returns `"0"` if the rate has never been published.

  <Warning>
    The scale is `1e8` — **not** basis points (`1e4`) and not `1e6`. Example: `"125"` is `0.000125%` per interval.
  </Warning>
</ResponseField>

<ResponseField name="fundingTime" type="int64">
  Unix millisecond timestamp at which the current funding rate was set. Returns `0` if it has never been set.
</ResponseField>

<ResponseField name="markPx" type="string">
  Current mark price (raw integer string). Tracks the latest price publication regardless of trading activity, and is identical to the `markPx` returned by [`marketState`](/info/market-state). Returns `"0"` if never published.
</ResponseField>

<ResponseField name="oraclePx" type="string">
  Current oracle (index) price (raw integer string), from the same source as [`marketState`](/info/market-state). Returns `"0"` if never published.
</ResponseField>

<Note>
  Price and volume fields are raw integers — convert them with the contract's `priceScale` and `qtyScale` from [`configs`](/info/configs). Never hardcode a scale. `priceChangePct` is the one exception: it is already a decimal percentage.
</Note>

<Tip>
  `markPx` and `oraclePx` update with every price publication, while the OHLCV fields only move when trades occur. A contract can therefore report live prices with `volume` still `"0"`.
</Tip>
