Hyperliquid Historical Fills
Retrieve indexed Hyperliquid fills by user, builder, globally, or by liquidation metadata over REST-style /info requests and JSON-RPC.
Historical fills expose indexed Hyperliquid executions from Dwellir's Hyperliquid Index. Use these endpoints for wallet execution history, builder attribution, global fill sampling, liquidation analysis, and TWAP slice execution history.
Endpoints
REST-style Info API:
POST https://api-hyperliquid-index.n.dwellir.com/YOUR_API_KEY/infoJSON-RPC:
POST https://api-hyperliquid-index.n.dwellir.com/YOUR_API_KEY/jsonrpcFor /info, set type to the method name. For JSON-RPC, set method to the same value and pass the request fields under params.
Billing
Billed by returned fill objects
Fill history responses are billed by the number of fill objects returned, not as one response per HTTP request.
A response with 2,000 fills counts as 2,000 responses/API credits.
Requests that return an empty array are billed as 0 responses/API credits and do not count against usage. Error responses are not charged.
Methods
| Method | Use case |
|---|---|
userFills | Latest fills for one user address |
userFillsByTime | User fills inside a bounded time window |
builderFills | Latest fills attributed to one builder address |
builderFillsByTime | Builder-attributed fills inside a bounded time window |
allFills | Latest fills across indexed users and markets |
allFillsByTime | Global fills inside a bounded time window |
userTwapSliceFills | Latest executed TWAP slice fills for one user |
userTwapSliceFillsByTime | User TWAP slice fills inside a bounded time window |
userTwapSummaries | Recent execution-derived TWAP summaries for one user |
userTwapSummariesByTime | Windowed execution-derived TWAP summaries for one user |
liquidationFills | Latest fills with liquidation metadata |
liquidationFillsByTime | Liquidation fills inside a bounded time window |
Shared Fill Fields
Most methods return an array of fill objects:
| Field | Description |
|---|---|
coin | Hyperliquid market symbol |
px | Execution price as a decimal string |
sz | Fill size as a decimal string |
side | B for bid/buy side, A for ask/sell side |
time | Fill timestamp in Unix milliseconds |
startPosition | User position before the fill, when available |
dir | Position direction, for example Open Long or Close Short |
closedPnl | Realized PnL from the fill as a decimal string |
hash | Hyperliquid transaction hash |
oid | Hyperliquid order ID |
crossed | Whether the order crossed the spread |
fee | User fee amount |
tid | Trade ID, when available |
feeToken | Token used for fees, usually USDC |
builder | Builder address, when the fill was builder-routed |
builderFee | Builder fee amount, when available |
twapId | TWAP order ID, when available |
cloid | Client order ID, when available |
txIndex | Block-local fill event index from node_fills_by_block; use with time for stable by-time pagination |
Global, builder, and liquidation responses also include user so you can attribute each fill to the account that produced it.
TWAP Summary Fields
userTwapSummaries and userTwapSummariesByTime return execution-derived TWAP summaries instead of raw fill rows:
| Field | Description |
|---|---|
user | User address |
twapId | TWAP order ID |
coin | Hyperliquid market symbol |
side | B for bid/buy side, A for ask/sell side |
avgPx | Size-weighted average execution price for indexed slice fills |
sz | Total executed size across indexed slice fills |
fee | Total user fee across indexed slice fills |
closedPnl | Total realized PnL across indexed slice fills |
nSlices | Number of slice fill rows included in the summary |
firstFillTime | Earliest slice fill timestamp in Unix milliseconds |
lastFillTime | Latest slice fill timestamp in Unix milliseconds |
txIndex | Block-local fill event index for the latest slice in the summary, when available |
TWAP summaries are derived from observed executions in the index. They do not expose the full parent TWAP order intent or configuration.
Pagination and Limits
limit defaults to the service default and is capped at 2000 for fill-row methods. TWAP summary methods are capped at 500.
By-time methods accept cursor in time_txIndex format. When cursor is supplied, startTime is skipped and the next page resumes after that (time, txIndex) pair. txIndex is the fill's block-local position in the node_fills_by_block event array, not a replica_cmds-compatible action index.
For userTwapSummariesByTime, the cursor uses the grouped summary's lastFillTime_txIndex. Keep the same startTime and endTime across cursor pages so the summary window stays stable.