---
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 the `cursor` returned by the previous page (keep `sort` consistent
across pages). Passing the trade ID of the last fill from the previous
page is also still accepted.

## Query parameters

- `start_timestamp` integer — Start timestamp in milliseconds
- `end_timestamp` integer — End timestamp in milliseconds
- `cursor` string — Pagination cursor. Pass the opaque `cursor` returned by the previous page to fetch the next page. Paging follows the `sort` direction (strictly older fills when `sort=desc`, strictly newer when `sort=asc`). The trade ID of the last fill from the previous page is also accepted for backwards compatibility.
- `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 — Whether this fill was part of a liquidation of the account's position — true on forced closes and on any fill executed while the account was under liquidation on the instrument, maker or taker. False on the counterparty leg of an auto-deleveraging or backstop match — its fill is part of someone else's liquidation, flagged by `adl` where applicable
    - `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
  - `cursor` string — Opaque keyset pagination cursor for the next page of fills. Present while `more` is true; pass it as `cursor` on the next request, keeping the other parameters the same across pages.

## 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/76e4e47cf3aa/schema)
