# List Hyperliquid fills

> Page saved execution receipts with an owner session or destination proof

`GET /v2/swaps/{id}/fills`

Page saved execution receipts with an owner session or destination proof.

**Authentication:** Required: the order’s owner session in `X-Session-ID`, or the destination proof `?verify=<destination-address>` (read-only).

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `before` | query | string (pattern `^[1-9]\d{0,18}$`) | No | Cursor returned as nextCursor by the previous page. |
| `limit` | query | integer (1–200) | No (default `200`) | Maximum fills per page, from 1 to 200. |
| `id` | path | string (pattern `^[A-Za-z0-9:_-]{1,128}$`) | Yes | Public order identifier. Not a credential: every read still requires the owner session or the destination proof. |

## Response

`200` returns an object with:

- `fills` · array of object · **required**
  - `tradeId` · string (pattern `^\d+$`)
  - `coin` · string (pattern `^@\d+$`)
  - `txHash` · string (max 66, pattern `^0x(?!0{64}$)[0-9a-fA-F]{64}$`)
  - `time` · integer · **required**
  - `side` · `"Buy"` · `"Sell"` · **required**
  - `price` · number · **required**
  - `size` · number · **required**
  - `value` · number · **required**
  - `fee` · number · **required**
  - `feeToken` · string · **required**
  - `twapId` · integer
- `status` · `"pending"` · `"complete"` · `"incomplete"` · **required**
- `nextCursor` · string (pattern `^[1-9]\d{0,18}$`) or null · **required**

Errors use the [standard error envelope](https://docs.wagyu.xyz/actions-and-retries.md#the-error-envelope): branch on `code`, never on the message.

## Example

<!-- curl -->
```bash
curl 'https://api-beta.wagyu.xyz/v2/swaps/<orderId>/fills?limit=50' \
  -H 'x-session-id: <sessionId>'
```

<!-- JavaScript -->
```javascript
const res = await fetch('https://api-beta.wagyu.xyz/v2/swaps/<orderId>/fills?limit=50', {
  headers: {"x-session-id":"<sessionId>"},
});
const data = await res.json();
```

<!-- Python -->
```python
import requests

res = requests.get('https://api-beta.wagyu.xyz/v2/swaps/<orderId>/fills?limit=50', headers={"x-session-id":"<sessionId>"}, timeout=30)
data = res.json()
```

_No response is captured for this route: it needs a real order. The response fields above come from the live contract._

---
Source: https://docs.wagyu.xyz/api-reference/get-swap-fills · Built from the live Wagyu API on 2026-11-04.
