> For the complete documentation index, see [llms.txt](https://docs.hyperlink.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.hyperlink.xyz/api/exchange-methods/userfillsbytime.md).

# userFillsByTime

## POST /exchange

> userFillsByTime

```json
{"openapi":"3.1.0","info":{"title":"Hyperlink Exchange - userFillsByTime","version":"1.0.0"},"tags":[{"name":"userFillsByTime"}],"servers":[{"url":"https://api.hyperlink.xyz","description":"Mainnet"}],"paths":{"/exchange":{"post":{"tags":["userFillsByTime"],"summary":"userFillsByTime","operationId":"exchange_userFillsByTime","requestBody":{"description":"Signed `userFillsByTime` exchange request.","required":true,"content":{"application/json":{"schema":{"type":"object","description":"Request envelope for the `/exchange` endpoint.\n\nAll exchange requests must include:\n- `action`: The action to perform\n- `signature`: EIP-712 signature authorizing the action\n- `nonce`: Unix timestamp in milliseconds (must be within validity window)","required":["action","signature","nonce"],"properties":{"action":{"allOf":[{"$ref":"#/components/schemas/UserFillsByTimeRequest","description":"Query durable fill history for the authenticated user"},{"type":"object","required":["type"],"properties":{"type":{"type":"string","enum":["userFillsByTime"]}}}],"description":"Query durable fill history for the authenticated user"},"expiresAfter":{"type":["integer","null"],"format":"int64","description":"Optional expiry for L1-signed actions.","minimum":0},"nonce":{"type":"integer","format":"int64","description":"Request nonce (Unix timestamp in milliseconds)","minimum":0},"signature":{"$ref":"#/components/schemas/Signature","description":"EIP-712 signature authorizing this action"},"vaultAddress":{"type":["string","null"],"description":"Optional vault address for vault operations"}}}}}},"responses":{"200":{"description":"Request successful. Response format depends on the requested action.","content":{"application/json":{"schema":{"oneOf":[{"type":"array","items":{"$ref":"#/components/schemas/UserFill"},"maxItems":2000},{"type":"object","required":["status","response"],"properties":{"response":{"$ref":"#/components/schemas/ExchangeResponseData"},"status":{"type":"string","enum":["error"]}}}]}}}},"400":{"description":"Request body was not valid JSON","content":{"text/plain":{"schema":{"type":"string"}}}},"422":{"description":"JSON body did not match a supported exchange schema","content":{"text/plain":{"schema":{"type":"string"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExchangeResponse"}}}}}}}},"components":{"schemas":{"UserFillsByTimeRequest":{"type":"object","description":"Durable fill history request payload with `type: \"userFillsByTime\"`.","required":["startTime"],"properties":{"aggregateByTime":{"type":["boolean","null"],"description":"Accepted for Hyperliquid compatibility; ignored in v1."},"endTime":{"type":["integer","null"],"format":"int64","description":"Inclusive end time in milliseconds. Defaults to the current time.","minimum":0},"startTime":{"type":"integer","format":"int64","description":"Inclusive start time in milliseconds.","minimum":0}},"additionalProperties":false},"Signature":{"type":"object","description":"EIP-712 signature components.","required":["r","s","v"],"properties":{"r":{"type":"string","description":"r component (hex string with 0x prefix)"},"s":{"type":"string","description":"s component (hex string with 0x prefix)"},"v":{"type":"integer","format":"int32","description":"v component (27 or 28)","minimum":0}}},"UserFill":{"type":"object","description":"Trade fill in Hyperliquid's shape, returned by `userFills`. For perpetuals, `startPosition`,\n`dir`, and `closedPnl` describe the user's own position, not the relay account's aggregate\nposition.","required":["coin","px","sz","side","time","startPosition","dir","closedPnl","hash","oid","crossed","fee","tid","feeToken"],"properties":{"builderFee":{"type":["string","null"],"description":"HyperLink and downstream builder fees, already part of `fee`."},"cloid":{"type":["string","null"],"description":"Client order ID as 0x-prefixed 128-bit hex, when the order had one."},"closedPnl":{"type":"string","description":"Realized trading PnL, before fees and funding."},"coin":{"type":"string","description":"Asset symbol; HIP-3 symbols include a DEX prefix and spot markets may use `@index`."},"crossed":{"type":"boolean","description":"True when the fill crossed the spread (taker); always true for local backstop and\nsettlement fills."},"dir":{"type":"string","description":"Direction, such as `Open Long`, `Close Short`, `Buy`, or `Sell`."},"fee":{"type":"string","description":"Total fee in `feeToken` units, including `builderFee`; negative is a rebate."},"feeToken":{"type":"string","description":"Token in which `fee` and `builderFee` are denominated."},"hash":{"type":"string","description":"Hyperliquid transaction hash, or the zero hash for a local backstop or settlement fill."},"liquidation":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/FillLiquidation","description":"Liquidation details, when the fill was a liquidation."}]},"oid":{"type":"integer","format":"int64","description":"Hyperliquid order ID, zero for a local backstop fill, or synthetic for a settlement fill\nwithout one.","minimum":0},"px":{"type":"string","description":"Execution price."},"side":{"type":"string","description":"`A` for sell (ask) or `B` for buy (bid)."},"startPosition":{"type":"string","description":"Signed position size before the fill."},"sz":{"type":"string","description":"Executed size in asset units."},"tid":{"type":"integer","format":"int64","description":"Hyperliquid trade ID, or a synthetic ID for a local backstop fill or a settlement fill\nwithout one. `time`, `coin`, and `tid` together identify a fill within a user's history.","minimum":0},"time":{"type":"integer","format":"int64","description":"Fill timestamp in milliseconds.","minimum":0}}},"FillLiquidation":{"type":"object","description":"Liquidation details attached to a fill.","properties":{"liquidatedUser":{"type":["string","null"],"description":"Address of the liquidated user."},"markPx":{"type":["string","null"],"description":"Mark price at liquidation."},"method":{"type":["string","null"],"description":"Liquidation method, such as `market`, `backstop`, or `adl`."}}},"ExchangeResponseData":{"type":"object","description":"Inner response object for exchange operations.","required":["type"],"properties":{"data":{"description":"Response data payload (omitted when null, e.g. for \"default\" responses)"},"type":{"type":"string","description":"Response type (e.g., \"order\", \"cancel\", \"default\", \"error\")"}}},"ExchangeResponse":{"type":"object","description":"Exchange response envelope matching Hyperliquid's format exactly.\nUsed for order placement, cancellation, and other exchange actions.","required":["status","response"],"properties":{"response":{"$ref":"#/components/schemas/ExchangeResponseData","description":"Response payload"},"status":{"type":"string","description":"Status: \"ok\" or \"error\""}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.hyperlink.xyz/api/exchange-methods/userfillsbytime.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
