---
title: "Exchange Perpetual Contract Snapshot"
method: GET
path: "/gateway/v1/exchange/perp"
tags: ["Exchange"]
---

# Exchange Perpetual Contract Snapshot

`GET /gateway/v1/exchange/perp`

Returns a perpetual futures snapshot for a trading pair: funding rate, open interest, mark/index price.

**Available fields** (via `fields`):
- `funding` — current funding rate, next settlement, mark/index price
- `oi` — open interest in contracts and USD

Just pass the base pair (e.g. `pair=BTC/USDT`). The swap settle suffix is added automatically from the quote currency, e.g. `BTC/USDT:USDT` or `BTC/USDC:USDC`.

## Query parameters

- `pair` string, required — Trading pair (e.g. BTC/USDT). The swap settle suffix is added automatically from the quote currency, e.g. BTC/USDT:USDT or BTC/USDC:USDC.
- `fields` string — Comma-separated fields to include: 'funding' (current funding rate), 'oi' (open interest). Defaults to all fields.
- `exchange` 'binance' | 'okx' | 'bybit' | 'bitget' | 'htx' | 'bitfinex' | 'bitmex' | 'hyperliquid' — Exchange identifier. Hyperliquid uses USDC-settled perps (e.g. BTC/USDC:USDC).

## Response `200`

OK

- DataObjectResponseExchangePerpResponse
  - `$schema` string, uri — A URL to the JSON Schema for this object.
  - `data` ExchangePerpResponse, required
    - `exchange` string, required — Exchange identifier
    - `funding` ExchangeFundingItem, required
      - `exchange` string, required — Exchange identifier
      - `funding_interval_hours` integer, nullable, required — Funding interval in hours when known
      - `funding_rate` number, double, nullable, required — Current raw funding rate for the exchange settlement interval (0.0001 = 0.01%). Use funding_rate_8h for cross-exchange comparison.
      - `funding_rate_1h` number, double — Funding rate normalized to a 1-hour interval
      - `funding_rate_8h` number, double — Funding rate normalized to an 8-hour interval for cross-exchange comparison
      - `funding_rate_annualized` number, double — Simple annualized funding rate derived from the 1-hour normalized rate
      - `funding_rate_raw` number, double — Alias of funding_rate: raw funding rate for the exchange settlement interval
      - `index_price` number, double, nullable, required — Index price derived from the weighted average of spot prices across multiple exchanges
      - `interval` string, nullable, required — Funding interval like 8h
      - `mark_price` number, double, nullable, required — Mark price calculated by the exchange from the index price and funding rate, used as the reference for liquidations
      - `next_funding` string, nullable, required — Next settlement time ISO8601
      - `pair` string, required — Perpetual contract pair like BTC/USDT
    - `open_interest` ExchangeOpenInterestItem, required
      - `exchange` string, required — Exchange identifier
      - `open_interest_amount` number, double, nullable, required — Open interest in contracts
      - `open_interest_usd` number, double, nullable, required — Open interest in USD
      - `pair` string, required — Trading pair like BTC/USDT
      - `timestamp` integer, nullable, required — Unix timestamp in seconds
    - `pair` string, required — Perpetual contract pair like BTC/USDT
  - `meta` ObjectResponseMeta, required
    - `cached` boolean, required — Whether this response was served from cache
    - `credits_used` integer, required — Credits deducted for this request
    - `empty_reason` string — Hint explaining why the data array is empty, when applicable

## Other responses

- `default` — Error

---

[API](https://skmtc.dev/asksurf/apis/asksurf-public-rest-api.md) · [All operations](https://skmtc.dev/asksurf/apis/asksurf-public-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/asksurf/asksurf-public-rest-api/revisions/4153a9cb5145/schema)
