---
title: "Get Fills"
method: GET
path: "/v1/account/fills"
---

# Get Fills

`GET /v1/account/fills`

Get fill history for the authenticated account.
If no end time is provided, the current time will be used.
Maximum of 100 entries returned per request.
Results are ordered by time; use `sort` to choose newest-first (`desc`,
default) or oldest-first (`asc`). To page through more than 100 fills, pass
`cursor` set to the trade ID of the last fill from the previous page (keep
`sort` consistent across pages).

## Query parameters

- `start_timestamp` integer — Start timestamp in milliseconds
- `end_timestamp` integer — End timestamp in milliseconds
- `cursor` integer — Pagination cursor. Pass the trade ID of the last fill from the previous page to fetch the next page. Paging follows the `sort` direction (strictly older fills when `sort=desc`, strictly newer when `sort=asc`).
- `sort` 'desc' | 'asc' — Time sort direction. `desc` (default) returns newest fills first; `asc` returns oldest first.

## Response `200`

Fills response.

- AccountTrades
  - `data` AccountTradeData[], required — Account's trade history
    - `trade_id` integer, required — Trade ID
    - `order_id` integer, required — Order ID
    - `instrument_id` integer, required — Instrument ID
    - `side` 'long' | 'short', required — Side
    - `price` string, required — Price
    - `quantity` string, required — Quantity in no. of contracts
    - `taker` boolean, required — Whether this side was the taker
    - `fee` string, required — Fee amount for this trade side
    - `fee_asset` string, required — Fee asset name
    - `previous_size` string, required — Position size before the fill
    - `previous_entry_price` string, required — Position entry price before the fill
    - `pnl` string, required — PnL in USD
    - `liquidation` boolean, required — Liquidation flag for this leg of the fill. False on the counterparty leg of an auto-deleveraging match — that leg is flagged by `adl` instead
    - `adl` boolean, required — Whether the fill came from auto-deleveraging
    - `timestamp` integer, required — Request timestamp. Unix milliseconds for most operations; Unix seconds for withdrawals (must match the on-chain EIP-712 struct verified against block.timestamp).
    - `hash` string, required — On-chain transaction hash, "0x" if not yet mined
  - `more` boolean, required — More data available

## Other responses

- `400` — Bad request — the request was malformed or failed validation (bad query parameters, unparseable body, invalid signature, or a domain pre-check). The `error` field is a human-readable validation detail.
- `401` — Unauthorized — missing or invalid `POLYMARKET-PROXY` / `POLYMARKET-SECRET` credentials. `error` is `unauthorized`.
- `429` — Too Many Requests. `error` distinguishes the limit that was hit: `ip_rate_limited` (per-IP token bucket), `action_rate_limited` (per-account action rate), or `open_orders_limit` (resting open-order cap).
- `500` — Internal server error. `error` is `internal_error`.

---

[API](https://skmtc.net/polymarket/apis/polymarket-perps-http-api.md) · [All operations](https://skmtc.net/polymarket/apis/polymarket-perps-http-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/polymarket/polymarket-perps-http-api/revisions/734bf911b1be/schema)
