Skip to main content
GET
curl
The response body shown here is a static example, not live data. After you click Send, your live result appears in a separate panel headed 200 OK. The panel under the status-code tabs is a fixed sample from the spec — its field values (fees, prices, sizes, IDs, timestamps) are placeholders. Use Send, or call the endpoint, for current values.
Returns fill and trade history for the requested account address, newest-first. Optional from/to (epoch microseconds, the unit of the createdAt field in the response) bound the time window. Optional accountIndex selects a subaccount (default 0); optional market restricts results to a single market; optional role restricts results to a single liquidity side (maker or taker); optional side restricts results to a single trade direction (buy or sell). No authentication header is required.

Query Parameters

address
string
required

Master Ethereum address for this API key (must match address from POST /createApiKey for the same key). Required on REST for account-scoped reads and for place/cancel. Invalid hex → 400; mismatch with key → 403.

20-byte EVM address as hex: optional 0x or 0X prefix and exactly 40 hexadecimal digits. API responses normalize to lowercase a–f after 0x.

Pattern: ^(0x|0X)?[0-9a-fA-F]{40}$
accountIndex
integer
default:0

Subaccount index (0–9) to scope the request to. Defaults to 0 (the primary account). Values above 9 → 400.

Required range: 0 <= x <= 9
market
string

Restrict results to a single market. Accepts either the display name (e.g. BTC-USD, case-insensitive) or the numeric market id (e.g. 1). Omit to return fills across all markets. An unresolvable value → 400.

Example:

"BTC-USD"

role
enum<string>

Restrict results to a single liquidity role. Case-insensitive. Omit to return fills of both roles. An unknown value → 400.

Available options:
MAKER,
TAKER
Example:

"TAKER"

side
enum<string>

Restrict results to a single trade direction. Case-insensitive. Omit to return fills of both sides. An unknown value → 400.

Available options:
BUY,
SELL
Example:

"BUY"

limit
integer
default:1000

Maximum number of fills to return. Default and maximum are both 1000; requests above the maximum are silently clamped. Pass an explicit smaller value when you want fewer rows.

Required range: 1 <= x <= 1000
from
integer<int64>

Start of the time window, filtering on createdAt (epoch microseconds, inclusive) — the same unit and field the response reports, so a createdAt read from one page is a valid bound for the next with no conversion.

Second- and millisecond-scale values are rejected with a 400 (the server requires at least 1e14). A millisecond bound read as microseconds would land in 1970 and quietly return nothing.

When omitted, defaults to 30 days before to (or before now when to is omitted too), so an unbounded request returns at most the last month of fills.

Required range: x >= 100000000000000
Example:

1785801600123456

to
integer<int64>

End of the time window, filtering on createdAt (epoch microseconds, inclusive) — the same unit and field the response reports, so a createdAt read from one page is a valid bound for the next with no conversion.

The bound closes over the whole microsecond it names, so page boundaries overlap by design — deduplicate by id when paging.

Second- and millisecond-scale values are rejected with a 400 (the server requires at least 1e14). A millisecond bound read as microseconds would land in 1970 and quietly return nothing.

Required range: x >= 100000000000000
Example:

1785801699001200

Response

List of fills.

fills
object[]
required
total
integer

Number of items in this response (length of fills). Counts the returned page, not the full result set matching the query.