Skip to main content
GET
cURL
Use this to build a follow list before you request full profiles for the wallets on it. A grade is a wallet’s record on settled profit and loss, ranked against every other tracked wallet; see Grades. For recent form rather than the all-time grade, use Trending wallets.

Parameters

Key response fields

When the cursor expires

A 400 with error.reason cursor_expired means the ranking was rebuilt, or the filters changed, since the cursor was issued. Discard the rows you have collected, request page 1 with no cursor, and page forward again from there. There is no wait: retrying the same cursor will not start working.

Example

What it does not return

  • A wallet graded C, D, or F. This list holds S, A, and B only.
  • A live ranking. The ranking is rebuilt every 12 hours, and meta.ranking_as_of says when the one you are reading was built.
  • A win rate scoped to the category you filtered by.
  • A result for a cursor from an older format, a malformed cursor, or one carrying a non-finite number. All of those are rejected.

Caching

Send the ETag from a response back in an If-None-Match header. If the page has not changed, you get 304 Not Modified with an empty body. The ETag covers which ranking the rows came from, so a rebuilt ranking can never answer a false 304.

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.

Query Parameters

limit
integer
default:20

Maximum number of ranked traders to return. Out-of-range values are clamped to 1..100.

Required range: 1 <= x <= 100
cursor
string

Opaque lbv1_ pagination cursor from a prior response. It binds the finite score/address boundary to the committed leaderboard generation and the effective category/strategy filters; legacy, malformed, non-finite, and unsupported-version cursors are rejected.

category
string

Filter by category. Values are matched to canonical category buckets: political variants (Elections, Global Politics, U.S. Politics, ...) fold into Politics, Geopolitics stays distinct, Culture/Entertainment map to Pop Culture, Science maps to Science & Tech, and Finance/Business map to Stocks. Mapped buckets are case-insensitive; passthrough categories (Crypto, NBA, and the sports leagues) match case-sensitively against the provider-native bucket key, so use exact casing (e.g. Crypto, NBA).

strategy
enum<string>

Filter by ML-detected strategy type. Values come from backend/crates/analytics/src/trader_analysis/classification/decision_tree.rs and are matched exactly against ml_trader_category.primary_type. Values outside the declared enum return HTTP 400.

Available options:
accumulator,
algo_trader,
arbitrageur,
directional,
event_driven,
market_maker,
momentum,
scalper,
speculator,
swing_trader

Response

Ranked trader list

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.