> **For coding agents and LLMs:** This is one Social Fetch marketing page (markdown export). For API orientation start with [`/llms.txt`](https://www.socialfetch.dev/llms.txt); for auth and crawl rules use [`/agents.txt`](https://www.socialfetch.dev/agents.txt); for every operation use [`/llms-endpoints.txt`](https://www.socialfetch.dev/llms-endpoints.txt).

## This page

- **On-site (HTML):** <https://www.socialfetch.dev/platforms/polymarket/perps-instruments-instrumentid-klines>
- **Markdown (.mdx) URL:** <https://www.socialfetch.dev/platforms/polymarket/perps-instruments-instrumentid-klines.mdx>

---

# Polymarket Perps Klines API

OHLC candles for one Perps instrument, oldest first.

`GET /v1/polymarket/perps/instruments/{instrumentId}/klines` returns `data.candles`, oldest first. Each candle has `at`, `open`, `high`, `low`, `close`, `volume` (contracts) and `trades`. `data.instrumentId` and `data.interval` echo the request, and `data.page` continues a long series.

`interval` is `1m`, `5m`, `15m`, `30m`, `1h`, `4h`, `6h`, `12h`, `1d` or `1w` and defaults to `1h`. `from` and `to` are unix seconds; by default the range is 48 hours before `to`, which defaults to now. An id that matches no instrument returns a found answer with an empty list.

## Request

- **Endpoint:** `GET /v1/polymarket/perps/instruments/{instrumentId}/klines`
- **Credits:** 1 credit
Failed requests are free
- **Input:** by instrument id
- **Full reference:** [docs](https://www.socialfetch.dev/docs/api/v1/polymarket/perps/instruments/instrumentid/klines/get)
- **Platform page:** [/platforms/polymarket](https://www.socialfetch.dev/platforms/polymarket)

## FAQ

### What is the default range?

With no from or to, the route returns the 48 hours before now. Pass from and to in unix seconds for another window. The interval sets the candle length, not the range.

### Why are there no candles?

An instrument id that matches nothing returns an empty list on a found lookup. A valid instrument with no trades in the requested window also returns an empty list. Check the instrument list first.

### Are volume and trades per candle?

Yes. volume is contracts traded in that candle and trades is the number of trades in it. They reset on each candle rather than accumulating.

### What does lookupStatus mean on this route?

found means the object or list was returned. not_found means no matching object exists. HTTP 200 only means the request finished, so branch on data.lookupStatus before storing a row.

### How much does this route cost?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged: that field is the billing source of truth.
