---
title: "Single alpha-wallet drilldown"
method: GET
path: "/alpha/{wallet}"
tags: ["Alpha"]
---

# Single alpha-wallet drilldown

`GET /alpha/{wallet}`

## Request

- Base URL: `https://madeonsol.com/api/v1`
- URL: `https://madeonsol.com/api/v1/alpha/{wallet}`
- Auth: HTTP bearer

Detailed stats for one alpha wallet — recent winners/losers, bot-confidence score, trading style classification, full trade history (capped).

## Path parameters

- `wallet` string, required

## Response `200`

OK

- object
  - `coverage` LaunchCoverage: Dataset-scope disclosure injected on every 200 from the launch-pipeline feeds (`/deployer-hunter/*`, `/sniper/*`, `/alpha/*`, `/tokens/almost-bonded`, `/tokens/batch/risk`, `/wallet/batch/classify`) unless the route already carries a more precise per-subject `coverage`. Static: these datasets are built from launchpad ingest (in practice ~99% pump.fun), so an absent wallet/token, an empty profile or a `false` reputation flag means 'not observed by this pipeline', never 'clean' or 'no activity'.
    - `scope` string
    - `note` string: How to read absences and zeros in this response.
  - `summary` object
    - `wallet` string
    - `tokens_traded` integer
    - `wins` integer
    - `losses` integer
    - `win_rate` number, nullable: Wins / pairs with at least one sell AND a known realization. Migration 511: an early-buyer pair whose realization is unknown (a sell whose proceeds provably went to another wallet, price_status proceeds_unattributed) is neither a win nor a loss and is not in the denominator; see unknown_realizations.
    - `net_pnl_sol` number: SOL sold minus SOL bought over pairs with a KNOWN realization only (migration 511): an unknown-realization pair is never booked as 0 proceeds; its bought SOL is in unknown_cost_basis_sol.
    - `total_sol_bought` number
    - `total_sol_sold` number
    - `roi` number, nullable: sum(sold) / sum(bought) - 1 over pairs with a known realization only (migration 511).
    - `unknown_realizations` integer, nullable: Migration 511: early-buyer pairs whose realization is unknown (proceeds_unattributed sell), excluded from win_rate, net_pnl_sol and roi. null before migration 511 is applied.
    - `unknown_cost_basis_sol` number, nullable: Migration 511: SOL bought on those unknown-realization pairs, left out of net_pnl_sol and roi (neither a loss nor a gain). 0 when every realization is known; null before migration 511 is applied.
    - `avg_rank` number, nullable
    - `best_rank` integer, nullable
    - `total_buys` integer
    - `total_sells` integer
    - `bundle_rate` number
    - `active_hours` integer
    - `last_seen` string, date-time
    - `bot_confidence` string
    - `bot_signals` string[]: Heuristic bot-behavior flags derived on the fly
  - `tokens` object[]: Up to 50 most recent tokens traded, newest first
    - `token_mint` string
    - `rank` integer: Entry rank among early buyers of this token
    - `first_buy_sol` number
    - `first_buy_at` string, date-time
    - `total_sol_bought` number
    - `total_sol_sold` number
    - `realized_pnl_sol` number, nullable: null when the realization is unknown: at least one sell's proceeds went to another wallet or reached nobody we can prove (price_status proceeds_unattributed, migration 508). Never reported as 0.
    - `buy_count` integer
    - `sell_count` integer
    - `result` 'open' | 'win' | 'loss' | 'unknown': unknown = realized_pnl_sol is null (realization unknown): neither a win nor a loss

## Other responses

- `401`: Missing or invalid API key, or an expired free-tier key. Authentication-stage error: no `X-RateLimit-*` headers, no `_rid`.
- `403`: Forbidden. One of: the key's tier is below this endpoint's or parameter's gate (`tier_required` with an `upgrade` block); the public demo key used outside its allow-list (`demo_key_endpoint_not_allowed`); an invalid or revoked key; an origin-restricted key called from a disallowed origin (`code` `origin_not_allowed` / `origin_required`). `X-RateLimit-*` headers are present only on `tier_required`.
- `404`: Wallet not in alpha set
- `429`: Too many requests. Every 429 carries `Retry-After`. A quota 429 (`rate_limit_exceeded`, with `X-RateLimit-*`), a heavy-query concurrency 429 (`error_kind` `concurrency`/`capacity`), or the per-IP authentication-failure block (30 failed auths/min; plain `error` + `retry_after_seconds`, no `X-RateLimit-*`).
- `500`: Unexpected server error from the route (`Internal server error`, with `_rid`). Safe to retry with backoff. A failed API-key lookup is a 503 `auth_backend_unavailable`, never a 500.
- `503`: The API-key or subscription lookup could not be answered (authentication stage). Retryable and not your fault: it is never counted as a failed authentication. Honour `Retry-After`; no `X-RateLimit-*`, no `_rid`.

---

[API](https://skmtc.dev/madeonsol/apis/madeonsol-api.md) · [All operations](https://skmtc.dev/madeonsol/apis/madeonsol-api/llms.txt) · [OpenAPI document](https://skmtc.dev/madeonsol/apis/madeonsol-api/revisions/96ce84657f55?raw)
