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 ms) bound the time window. Optional accountIndex selects a subaccount (default 0); optional market restricts results to a single market. 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 af 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 (display name, e.g. BTC-USD). Omit to return fills across all markets. An unknown market → 400.

Example:

"BTC-USD"

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.

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