Wallet

Wallet stats + flags + enrichments

Aggregate counters for any Solana wallet over the last 90 days plus cross-product flags joining kol_wallets, mv_alpha_wallets (incl. bot_confidence), deployers, and the reputation caches (is_sniper, is_bundler, is_dumper + dump-cluster cohort counts). Backed by idx_token_trades_wallet_cover — sub-100ms even on heavy wallets. Returns 404 if the wallet has no trades AND no flag-table presence.

v1.8.1 enrichments (additive, non-breaking): also returns top_tokens (top-traded tokens with realized PnL + peak MC), trading_style (avg trade size, sniper-rate, round-trip rate, median hold), deployer_breakdown (tier-distribution of deployers bought from), and recent_trades (last 10 trades with symbols). PRO+.

get/wallet/{address}

Request

  • Base URL: https://madeonsol.com/api/v1
  • URL: https://madeonsol.com/api/v1/wallet/{address}
  • Auth: HTTP bearer

Path parameters

addressstring required

Base58 wallet address

Example:2FxiPRPLYX3H84FZkdRiUHDgDm4U5u98etbL4yvZ3qRq

Response

OK

addressstring required
completeness'complete' | 'incomplete'

Realized-PnL completeness. incomplete when at least one sell in the response has proceeds that went to another wallet (price_status proceeds_unattributed, migration 508): realized PnL and ROI then cover the known basis only, and the basis those sells consumed is reported as unknown_realized_cost_basis_sol, never as 0 proceeds or a loss. This is realized-PnL completeness. It is NOT coverage.completeness (source-coverage verification: verified / not_verified / ...), which says whether the trade capture for this subject is proven complete.

incomplete_reasonsstring[]

Empty when complete. /wallet/{address} and /tokens/{mint}/top-traders emit only proceeds_unattributed; unknown_consideration is shared with the FIFO routes (/pnl, /positions).

pnl_basis_notestring

Fixed sentence: realized_pnl_sol and ROI cover the known basis only; unattributed sells are excluded and the basis they consumed is unknown_realized_cost_basis_sol.

derivedobject

Derived wallet stats computed from the enrichments above (src/lib/wallet-enrichments.ts DerivedStats: standout trades, biggest miss, realized/unrealized PnL rollups).

stats_unavailableboolean

Present (true) only when the 90-day trade aggregation failed. stats null is then UNPROVEN, not an inactive wallet.

enrichment_unavailableboolean

Present (true) only when one or more enrichment queries failed; degraded_fields names them. Absent on a fully measured response.

degraded_fieldsstring[]

Enrichment blocks whose query failed (e.g. a database timeout under load). Their null / [] value is UNKNOWN, not 'no data'; retry later. biggest_miss refers to derived.biggest_miss. Present only together with enrichment_unavailable: true.

Example response

{
  "coverage": {
    "history_start": 1775984757,
    "scope": "pump.fun pipeline (pump.fun, LaunchLab/bonk, bags)",
    "size_floor": {
      "min_sol": 0.05,
      "min_stable_usd": 3.5,
      "applies_to": "buys and SOL-spending legs; SOL-receiving sells of any size are kept"
    }
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.