Skip to main content
GET
cURL
Use this when a leaderboard row, a flow, or a whale trade gives you a wallet and you want its record. To read up to 25 wallets in one request, use Batch traders.

Parameters

Key response fields

Data age

Different parts of a trader body are written by different jobs, on different schedules. data_quality reports each one separately, so you can decide whether a body is current enough for what you are doing. data_quality.status is fresh only when every group is, unavailable only when every group is, and partial otherwise. data_quality.as_of is the oldest clock the body rests on. Each entry in data_quality.field_groups carries group, owner (the table and column that writes it), status, an as_of where one exists, and a reason where the status is not fresh. A group status of unknown means the value was served and nothing here can date it. It never means the value is missing, and you must not read another group’s as_of as its age. untracked means 0xinsider does not track that group for this wallet: only S, A and B wallets get a leaderboard rank, for example. Every time in data_quality comes from a stored timestamp, so a cached response reports the same ages a freshly computed one does. meta.cached and meta.cache_age_s are the only fields that describe the response itself. For the per-field version of the same question, including where each number comes from and how it was reconciled, request expand=trust.

Example

What it does not return

  • A 404 for a wallet 0xinsider does not track yet. You get a 200 with sync_status set to unknown. Request it again later.
  • strategy before 0xinsider has classified the wallet. The field is left out until then.
  • P&L for the last week or month. pnl.last_7d and pnl.last_30d are deprecated and never sent.
  • Open positions. Use Trader context.

Caching

Send the ETag from a response back in an If-None-Match header. If the profile 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

address
string
required

Ethereum wallet address (0x...), known trader username, or trd_-prefixed trader ID emitted by this API.

Query Parameters

expand[]
enum<string>[]

Backward-compatible alias for expand. Repeatable: strategy, categories, quant_metrics, trust.

Available options:
strategy,
categories,
quant_metrics,
trust
expand
enum<string>[]

Include heavy fields and trust metadata. Repeatable: strategy, categories, quant_metrics, trust.

Available options:
strategy,
categories,
quant_metrics,
trust
max_age_s
integer<int64>

Opt into a whole-response freshness ceiling in seconds. The server returns 200 only when data_quality.status is fresh and data_quality.as_of is no older than this value; otherwise it returns 409 with error.reason=freshness_ceiling_unsatisfied. No refresh or alternate read is attempted.

Required range: x >= 0

Response

Trader profile

object
string
required
Allowed value: "trader"
data
object
required
meta
object
required