Skip to main content
POST /api/v1/wallets/summary
Read wallet identities and PnL summaries for up to 100 Solana wallets in one request. This endpoint requires a bearer API key with md.read. Each request consumes one request from the standard REST budget. It reads only data OceanX already holds: it does not start a history replay, add wallets to a watch list, renew capture or schedule RPC backfill.

Request

Send a JSON body of the form {"wallets": [...]} with 1–100 distinct Solana wallet addresses. The body may be at most 8 KiB. No query parameters are accepted.

Response

Example captured from production on 2026-10-15 from an 11-wallet batch, trimmed to two rows. The top-level summary.index repeats historyCoverage.solana.index and is abbreviated.
Rows are in the same order as the request. Each row has: A summary never claims to be complete: complete is always false. An unknown value is null, never zero.

Identity

Identity doesn’t depend on any particular token. It can include:
  • Wallet profile labels and reviewed display metadata. A wallet profile label does not imply a token-specific role such as dev, sniper or insider.
  • Platform tags such as platform:axiom, platform:bloom or platform:photon. Each comes with platformEvidence: method, evidenceTx, confidence in basis points and observedAtMs. A tag records an observed fee-account association, not wallet ownership.
  • Reviewed classifications: hacker, spam_dusting or exchange. These require current reviewed evidence with confidence of at least 9500, a method and a transaction. An exchange classification also requires a name. The absence of a label is not a safety verdict.
  • sns.domain: a verified, directly owned top-level .sol primary name. Tokenized names, subdomains and names with unsupported characters stay unknown. This endpoint reads SNS from cache only.

PnL summary

A summary prefers OceanX’s native fee-inclusive trade ledger. When a wallet has no valid ledger projection, the summary falls back to the observed-swap index, with source set to wallet-trade-index:observed-average-cost. This is observed PnL over the covered window, not lifetime accounting. The observed-swap fallback is bounded for each batch:
  • 10,000 events and 4 MiB in total, split into equal shares per wallet. An 11-wallet batch gets 909 events per wallet.
  • At most four concurrent index reads.
  • One shared price lookup covering at most 64 open tokens.
  • A 1.5-second deadline for the PnL part of the request.
A wallet that hits its share is marked "truncated": true.

Errors

Errors use {error:{code,message}}. Rate-admitted responses include the usual X-RateLimit-* headers. A wallet OceanX has not captured returns 200 with summary: null. Besides the standard REST budget, wallet batches share a native admission limit with liquidity reads: two concurrent requests and 60 starts per minute per verified caller.