Docs

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:

Text
POST https://api-hyperliquid-index.n.dwellir.com/YOUR_API_KEY/info

JSON-RPC:

Text
POST https://api-hyperliquid-index.n.dwellir.com/YOUR_API_KEY/jsonrpc

For /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

MethodUse case
userFillsLatest fills for one user address
userFillsByTimeUser fills inside a bounded time window
builderFillsLatest fills attributed to one builder address
builderFillsByTimeBuilder-attributed fills inside a bounded time window
allFillsLatest fills across indexed users and markets
allFillsByTimeGlobal fills inside a bounded time window
userTwapSliceFillsLatest executed TWAP slice fills for one user
userTwapSliceFillsByTimeUser TWAP slice fills inside a bounded time window
userTwapSummariesRecent execution-derived TWAP summaries for one user
userTwapSummariesByTimeWindowed execution-derived TWAP summaries for one user
liquidationFillsLatest fills with liquidation metadata
liquidationFillsByTimeLiquidation fills inside a bounded time window

Shared Fill Fields

Most methods return an array of fill objects:

FieldDescription
coinHyperliquid market symbol
pxExecution price as a decimal string
szFill size as a decimal string
sideB for bid/buy side, A for ask/sell side
timeFill timestamp in Unix milliseconds
startPositionUser position before the fill, when available
dirPosition direction, for example Open Long or Close Short
closedPnlRealized PnL from the fill as a decimal string
hashHyperliquid transaction hash
oidHyperliquid order ID
crossedWhether the order crossed the spread
feeUser fee amount
tidTrade ID, when available
feeTokenToken used for fees, usually USDC
builderBuilder address, when the fill was builder-routed
builderFeeBuilder fee amount, when available
twapIdTWAP order ID, when available
cloidClient order ID, when available
txIndexBlock-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:

FieldDescription
userUser address
twapIdTWAP order ID
coinHyperliquid market symbol
sideB for bid/buy side, A for ask/sell side
avgPxSize-weighted average execution price for indexed slice fills
szTotal executed size across indexed slice fills
feeTotal user fee across indexed slice fills
closedPnlTotal realized PnL across indexed slice fills
nSlicesNumber of slice fill rows included in the summary
firstFillTimeEarliest slice fill timestamp in Unix milliseconds
lastFillTimeLatest slice fill timestamp in Unix milliseconds
txIndexBlock-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.