Skip to main content
GET
cURL
This route and Position timeline return the same rows for the same wallet and market. Only meta.request_id differs, because that is per request. Call whichever path your client already uses; there is no reason to switch.

Parameters

Put an @ in front of a username to force a username lookup. That is how you reach a username made only of digits, which the rules above would otherwise read as an id.

Key response fields

Every field means what it means on Position timeline. These two are the ones worth reading twice.

The two 404s

A 404 here has the same two causes as on the singular route, and both carry error.code not_found. Branch on error.reason. trader_not_tracked comes from these two routes and from nowhere else on the API.

Example

What it does not return

  • Anything the singular route does not. The field meanings are on Position timeline.
  • Splits, merges, redemptions, or neg-risk activity. Because those are missing, running_amount is not the wallet’s full holding, and running_avg_price is not the average entry price Polymarket shows on the position.
  • Final totals. A fill ingested late, after the ones around it, revises the running figures on every row after it.

Caching

Send the ETag from a response back in an If-None-Match header. If the timeline has not changed, you get 304 Not Modified with an empty body.

Authorizations

Authorization
string
header
required

Legacy default or named integration API key, or OAuth 2.1 access token, in the Authorization header as Bearer oxi_sk_live_... or Bearer oxi_at_.... Default keys retain full access; integration keys are limited to their approved read, webhooks, export and usage scopes and expire within 90 days. All credentials share the owner's account limits. Data calls require an active Pro subscription and return live data. A 401 carries WWW-Authenticate: Bearer resource_metadata="https://api.0xinsider.com/.well-known/oauth-protected-resource" (RFC 6750 section 3, RFC 9728).

Headers

X-Query-Validation
enum<string>

Opt into strict query-name validation. The default is compatible: unknown names are ignored and reported in X-Query-Ignored. With strict, an unknown name returns 400 bad_request with error.reason unknown_query_parameter before the handler runs, including when its percent escape is incomplete.

Available options:
strict
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, bare integer traders.id, or @username. Resolved with precedence @username -> wallet -> trd_ -> integer -> username (a leading @ forces a username lookup, for all-digit usernames). Unknown identities return 404.

Query Parameters

condition_id
string
required

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

limit
integer
default:20

Maximum number of timeline events to return. Out-of-range values are clamped to 1..100.

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
total
integer

Total matching rows when the read model exposes a count; the key is absent when it does not.