Review individual Hyperliquid account executions. Returns individual fills with price, size, side, fees, identifiers and available close-PnL context. Use one Toolmu account and a shared prepaid balance across available Tools. Pay per use; no separate supplier subscription is required. The current execution ceiling for this Tool is 0.0288 Toolmu credits per call. This is a maximum, not the settled charge. Before execution, get the current Tool contract and check availability, the latest maximumCredits, your balance and budget. Supplier response credits_used, when present, describes supplier API credits and is not the Toolmu customer charge.
Up to 0.0288 credits / call
The final charge is based on confirmed usage. Unused reserved credits return to your available balance.
Surf
Get Hyperliquid Trade History by Wallet
Review individual Hyperliquid account executions. Returns individual fills with price, size, side, fees, identifiers and available close-PnL context. Use one Toolmu account and a shared prepaid balance across available Tools. Pay per use; no separate supplier subscription is required. The current execution ceiling for this Tool is 0.0288 Toolmu credits per call. This is a maximum, not the settled charge. Before execution, get the current Tool contract and check availability, the latest maximumCredits, your balance and budget. Supplier response credits_used, when present, describes supplier API credits and is not the Toolmu customer charge.
You receive
Returns individual fills with price, size, side, fees, identifiers and available close-PnL context. Fills differ from reconstructed trading episodes. Funding is not allocated to each fill; preserve both second and millisecond time fields with their documented encodings.
Start with your task
Show recent Hyperliquid trade records for [my-name.eth].
Inputs & outputs
Inspect the current inputs, availability, and maximum charge before starting.
Input schema
Input schema
Field / Path
Type
Requirement
Meaning
queryParamsqueryParams
object
Required
Required fields
address
toqueryParams.to
string
Optional
Window end (Unix seconds or a date), inclusive. Defaults to now. With order=desc, page back within the most-recent results by setting this to the oldest time you received (prefer to_ms for millisecond precision); with order=asc it bounds the walk. Example: 2026-03-01.
Minimum length
1
fromqueryParams.from
string
Optional
Window start (Unix seconds or a date). With the default order=desc, results cover the window forward from this point and are capped at ~2000 of the earliest fills in range (narrow the range to see the most-recent fills). With order=asc this is the start of a complete-history walk: follow meta.next_cursor to page through every fill in the window with no cap. Example: 2026-03-01.
Minimum length
1
limitqueryParams.limit
integer
Optional
Page size (1-100). Defaults to 20.
Default
20
Minimum
1
Maximum
100
orderqueryParams.order
string
Optional
desc (default): newest first — the recent feed, or the earliest-anchored ~2000-fill slice when from is set. asc: oldest first, a complete-history walk from from (required) up to to — each page links the next via meta.next_cursor with no result cap, the reliable mode for full trade-history or PnL reconstruction. Defaults to "desc".
Default
desc
Options
desc, asc
to_msqueryParams.to_ms
integer
Optional
Window end in Unix milliseconds, for millisecond-precise desc paging: pass the time_ms of the oldest fill you received to fetch the next page. On its own the boundary is exclusive (fills AT to_ms are dropped), so when more than limit fills share one millisecond the remainder is skipped — pair it with to_fill_id to page losslessly through a boundary millisecond. Takes precedence over to (which is ignored when to_ms is set). Like to, it pages within the recent (~2000-fill) window. desc-only: rejected with order=asc (use cursor instead).
Minimum
0
Maximum
9007199254740991
cursorqueryParams.cursor
string
Optional
Opaque continuation token from a previous response's meta.next_cursor. It encodes the paging direction, position, and window, so pass it with only symbol and limit — combining it with from, to, to_ms, or to_fill_id is rejected with 400.
Minimum length
1
symbolqueryParams.symbol
string
Optional
Filter to one market (exact match, e.g. xyz:GOLD). Applied client-side: with order=desc it filters after the recent cap (pair it with from/to so older fills are not missed); with order=asc the cursor walk scans past non-matching fills, so a page may return fewer than limit items (or none) while meta.next_cursor still advances.
Minimum length
1
addressqueryParams.address
string
Required
Wallet address: a 0x EVM address or an ENS name (e.g. vitalik.eth). Solana addresses are not supported.
Minimum length
1
to_fill_idqueryParams.to_fill_id
string
Optional
Cursor tiebreak for to_ms: pass the fill_id of the oldest fill you received alongside its time_ms as to_ms. The next page then resumes strictly after that (time_ms, fill_id) pair — fills at the boundary millisecond with a lower fill_id are included instead of skipped, so paging never loses fills that share a millisecond. Requires to_ms; desc-only. Equivalent to following meta.next_cursor, which encodes the same position. An empty page can mean the window is exhausted (set from to reach older history), not that no older fills exist.
Minimum length
1
View raw JSON
{
"type": "object",
"required": [
"queryParams"
],
"properties": {
"queryParams": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"address"
],
"~standard": {
"vendor": "zod",
"version": 1,
"jsonSchema": {}
},
"properties": {
"to": {
"type": "string",
"minLength": 1,
"description": "Window end (Unix seconds or a date), inclusive. Defaults to now. With order=desc, page back within the most-recent results by setting this to the oldest time you received (prefer to_ms for millisecond precision); with order=asc it bounds the walk. Example: 2026-03-01."
},
"from": {
"type": "string",
"minLength": 1,
"description": "Window start (Unix seconds or a date). With the default order=desc, results cover the window forward from this point and are capped at ~2000 of the earliest fills in range (narrow the range to see the most-recent fills). With order=asc this is the start of a complete-history walk: follow meta.next_cursor to page through every fill in the window with no cap. Example: 2026-03-01."
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Page size (1-100). Defaults to 20."
},
"order": {
"enum": [
"desc",
"asc"
],
"type": "string",
"default": "desc",
"description": "desc (default): newest first — the recent feed, or the earliest-anchored ~2000-fill slice when from is set. asc: oldest first, a complete-history walk from from (required) up to to — each page links the next via meta.next_cursor with no result cap, the reliable mode for full trade-history or PnL reconstruction. Defaults to \"desc\"."
},
"to_ms": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Window end in Unix milliseconds, for millisecond-precise desc paging: pass the time_ms of the oldest fill you received to fetch the next page. On its own the boundary is exclusive (fills AT to_ms are dropped), so when more than limit fills share one millisecond the remainder is skipped — pair it with to_fill_id to page losslessly through a boundary millisecond. Takes precedence over to (which is ignored when to_ms is set). Like to, it pages within the recent (~2000-fill) window. desc-only: rejected with order=asc (use cursor instead)."
},
"cursor": {
"type": "string",
"minLength": 1,
"description": "Opaque continuation token from a previous response's meta.next_cursor. It encodes the paging direction, position, and window, so pass it with only symbol and limit — combining it with from, to, to_ms, or to_fill_id is rejected with 400."
},
"symbol": {
"type": "string",
"minLength": 1,
"description": "Filter to one market (exact match, e.g. xyz:GOLD). Applied client-side: with order=desc it filters after the recent cap (pair it with from/to so older fills are not missed); with order=asc the cursor walk scans past non-matching fills, so a page may return fewer than limit items (or none) while meta.next_cursor still advances."
},
"address": {
"type": "string",
"minLength": 1,
"description": "Wallet address: a 0x EVM address or an ENS name (e.g. vitalik.eth). Solana addresses are not supported."
},
"to_fill_id": {
"type": "string",
"minLength": 1,
"description": "Cursor tiebreak for to_ms: pass the fill_id of the oldest fill you received alongside its time_ms as to_ms. The next page then resumes strictly after that (time_ms, fill_id) pair — fills at the boundary millisecond with a lower fill_id are included instead of skipped, so paging never loses fills that share a millisecond. Requires to_ms; desc-only. Equivalent to following meta.next_cursor, which encodes the same position. An empty page can mean the window is exhausted (set from to reach older history), not that no older fills exist."
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}
Result schema
Output fields have not been documented yet.
Additional notes
Review individual Hyperliquid account executions
How to use this Tool
Use the deployed input fields below. Required fields must be supplied; optional filters narrow the result.
queryParams.to (Optional): Window end (Unix seconds or a date), inclusive. Defaults to now. With order=desc, page back within the most-recent results by setting this to the oldest time you received (prefer to_ms for millisecond precision); with order=asc it bounds the walk. Example: 2026-03-01.
queryParams.from (Optional): Window start (Unix seconds or a date). With the default order=desc, results cover the window forward from this point and are capped at ~2000 of the earliest fills in range (narrow the range to see the most-recent fills). With order=asc this is the start of a complete-history walk: follow meta.next_cursor to page through every fill in the window with no cap. Example: 2026-03-01.
queryParams.limit (Optional): Page size (1-100). Defaults to 20.
queryParams.order (Optional): desc (default): newest first — the recent feed, or the earliest-anchored ~2000-fill slice when from is set. asc: oldest first, a complete-history walk from from (required) up to to — each page links the next via meta.next_cursor with no result cap, the reliable mode for full trade-history or PnL reconstruction. Defaults to "desc".
queryParams.to_ms (Optional): Window end in Unix milliseconds, for millisecond-precise desc paging: pass the time_ms of the oldest fill you received to fetch the next page. On its own the boundary is exclusive (fills AT to_ms are dropped), so when more than limit fills share one millisecond the remainder is skipped — pair it with to_fill_id to page losslessly through a boundary millisecond. Takes precedence over to (which is ignored when to_ms is set). Like to, it pages within the recent (~2000-fill) window. desc-only: rejected with order=asc (use cursor instead).
queryParams.cursor (Optional): Opaque continuation token from a previous response's meta.next_cursor. It encodes the paging direction, position, and window, so pass it with only symbol and limit — combining it with from, to, to_ms, or to_fill_id is rejected with 400.
queryParams.symbol (Optional): Filter to one market (exact match, e.g. xyz:GOLD). Applied client-side: with order=desc it filters after the recent cap (pair it with from/to so older fills are not missed); with order=asc the cursor walk scans past non-matching fills, so a page may return fewer than limit items (or none) while meta.next_cursor still advances.
queryParams.address (Required): Wallet address: a 0x EVM address or an ENS name (e.g. vitalik.eth). Solana addresses are not supported.
queryParams.to_fill_id (Optional): Cursor tiebreak for to_ms: pass the fill_id of the oldest fill you received alongside its time_ms as to_ms. The next page then resumes strictly after that (time_ms, fill_id) pair — fills at the boundary millisecond with a lower fill_id are included instead of skipped, so paging never loses fills that share a millisecond. Requires to_ms; desc-only. Equivalent to following meta.next_cursor, which encodes the same position. An empty page can mean the window is exhausted (set from to reach older history), not that no older fills exist.
What this Tool returns
Returns individual fills with price, size, side, fees, identifiers and available close-PnL context.
Response fields and how to read them
The table follows the official response contract, including nested fields and useful response metadata. [] denotes an array item. Required means required within its parent object, not that a conditional parent always exists. A nullable type permits null; an optional field can be absent. Use the documented conditions below to distinguish missing, empty and zero values. Units and reporting windows apply only where explicitly documented.
Field, type and presence
Meaning and conditions
data.[].closed_pnl
number; Required within parent; format: double
Realized profit/loss, USD. 0 on fills that only open or increase a position (see direction) — realized PnL is booked on closing or reducing fills.
data.[].crossed
boolean; Required within parent
true = taker (this fill took liquidity); false = maker (provided liquidity / rebate)
data.[].direction
string; Required within parent
e.g. Open Long, Close Short
data.[].fee
number; Required within parent; format: double
Fee paid, USD (negative = rebate)
data.[].fee_token
string; Required within parent
Fee token (e.g. USDC)
data.[].fill_id
string; Required within parent
Stable unique identifier for this fill. Pass the oldest fill's value back as to_fill_id (alongside its time_ms as to_ms) to page losslessly, and use it to de-duplicate fills across pages — time and hash are NOT unique (many fills can share a second and an on-chain hash).
data.[].hash
string; Required within parent
On-chain transaction hash (the zero hash when is_internal is true). NOT unique per fill — one transaction can settle many fills.
data.[].is_internal
boolean; Required within parent
true for fills not tied to a standard on-chain order (zero transaction hash)
data.[].price
number; Required within parent; format: double
Fill price
data.[].side
string; Required within parent
buy or sell
data.[].size
number; Required within parent; format: double
Amount filled
data.[].start_position
number; Required within parent; format: double
Position size before this fill
data.[].symbol
string; Required within parent
Market id
data.[].time
integer; Required within parent; format: int64
When it filled (Unix seconds). Second-granular; use time_ms for precise ordering and for paging via to_ms.
data.[].time_ms
integer; Required within parent; format: int64
When it filled (Unix milliseconds). Use for precise ordering/dedup; pass the oldest value back as to_ms (paired with its fill_id as to_fill_id) to page to the next page without losing fills.
data.[].tx_index
integer; Required within parent; format: int64
Position of the fill's transaction within its block. (time_ms, tx_index) is unique per fill and is the key cursor paging advances on; 0 is a valid value (first transaction in the block).
meta.cached
boolean; Required within parent
Whether this response was served from cache
meta.credits_used
integer; Required within parent; format: int64
Credits deducted for this request
meta.empty_reason
string; Optional within parent
Hint explaining why the data array is empty, when applicable
meta.has_more
boolean; Required within parent
Whether more items exist beyond the current page.
meta.limit
integer; Required within parent; format: int64
Maximum number of items returned in this response
meta.next_cursor
string; Optional within parent
Opaque cursor token for fetching the next page. Empty when no more pages exist.
meta.watermark
integer; Optional within parent; format: int64
Warehouse watermark (Unix seconds) this response was computed at, on warehouse-backed endpoints (e.g. Hyperliquid /trades) — rows up to this time come from the warehouse, newer rows from the live tail. Omitted elsewhere.
Coverage, units and freshness
Fills differ from reconstructed trading episodes. Funding is not allocated to each fill; preserve both second and millisecond time fields with their documented encodings.
Inspect any returned observation time, cache status, watermark, pagination and errors using their documented meanings. A successful request alone does not establish complete coverage. Where no freshness or completeness guarantee is documented, treat it as unknown. Saved Examples are historical and viewing them does not refresh data or execute a new call.
Data source and references
Surf supplies this endpoint through its Data API. Response contract and deployed Tool inputs reviewed on 2026-10-03 against official OpenAPI v0.2.102. This is a contract review date, not a data observation time. Coverage depends on the selected endpoint and request.
Use one Toolmu account and a shared prepaid balance across available Tools. Pay per use; no separate supplier subscription is required. The current execution ceiling for this Tool is 0.0288 Toolmu credits per call. This is a maximum, not the settled charge. Before execution, get the current Tool contract and check availability, the latest maximumCredits, your balance and budget. Supplier response credits_used, when present, describes supplier API credits and is not the Toolmu customer charge.
See recent trades
Example request: Show recent Hyperliquid trade records for [my-name.eth].
Give me a public account name ending in .eth or a public link that identifies the account, such as [my-name.eth]. If you only have the public account address, that works too. Add start or end dates if you want to narrow the time. Never share a password, recovery phrase or private key. If a link does not identify the account, I will ask.
Returns individual fills with price, size, side, fees, identifiers and available close-PnL context.
Fills differ from reconstructed trading episodes. Funding is not allocated to each fill; preserve both second and millisecond time fields with their documented encodings.
Use one Toolmu account and a shared prepaid balance across available Tools. Pay per use; no separate supplier subscription is required. The current execution ceiling for this Tool is 0.0288 Toolmu credits per call. This is a maximum, not the settled charge. Before execution, get the current Tool contract and check availability, the latest maximumCredits, your balance and budget. Supplier response credits_used, when present, describes supplier API credits and is not the Toolmu customer charge.
Ask your agent to Review individual Hyperliquid account executions. Provide the required inputs above. If Toolmu is already connected, reuse that connection; otherwise use the setup instructions on this page. Before a paid execution, the agent must read the current Tool contract and check availability, the credit ceiling, balance, budget and your authorization. It should then execute the Tool and explain the returned fields and limitations.
Inspect any returned observation time, cache status, watermark, pagination and errors using their documented meanings. A successful request alone does not establish complete coverage. Where no freshness or completeness guarantee is documented, treat it as unknown. Saved Examples are historical and viewing them does not refresh data or execute a new call.