Skip to main content
GET
cURL
Per-market fill history for one trader, newest first. Each fill carries a server-computed running_amount and running_avg_price. You can see how a position was built or unwound without recomputing it client-side. Polymarket fills only. {trader} accepts all four identity shapes, resolved by a single shared trader-identity resolver:
  • a 0x... wallet address
  • a username
  • a trd_-prefixed trader id
  • a bare integer traders.id (use this when you are paging other API responses and already hold the numeric id)
condition_id is required: one timeline per (trader, market).
Only HOT and WARM tier traders are tracked; other traders return 404. The body is byte-identical to the wallet-keyed Get Position Timeline for the same (trader, market). Cursor-paginated: pass next_cursor as cursor. Send If-None-Match with a prior ETag to get 304 Not Modified when nothing changed.

Authorizations

Authorization
string
header
required

API key authentication. Send your key in the Authorization header as Bearer oxi_sk_live_.... Live keys require an active Pro subscription and return live data.

Headers

If-None-Match
string

Conditional GET validator from a previous ETag. Matching values return 304 Not Modified with an empty body.

Path Parameters

trader
string
required

Trader identity: 0x... wallet address, username, trd_-prefixed trader id, or bare integer traders.id. Resolved with precedence wallet -> trd_ -> integer -> username. Unknown identities return 404.

Query Parameters

condition_id
string
required

Market condition_id. One timeline per (trader, market).

limit
integer
default:20
Required range: 1 <= x <= 100
cursor
string

Pagination cursor from previous response's next_cursor.

Response

Position timeline page

object
string
required
Allowed value: "list"
data
object[]
required
has_more
boolean
required
meta
object
required
next_cursor
string | null
total
integer | null

Total matching rows when the read model exposes a count; absent (or null) when it does not.