---
title: "Per-analyst signal history (tier-gated)"
method: GET
path: "/api/analysts/{analystId}/signals"
---

# Per-analyst signal history (tier-gated)

`GET /api/analysts/{analystId}/signals`

## Request

- Base URL: `https://cryptowhaleinsights.com`
- URL: `https://cryptowhaleinsights.com/api/analysts/{analystId}/signals`
- Auth: none declared

Returns the signal history for a single analyst. Replace {analystId} with one of: chain_hawk, whale_watch, alpha_scout, defi_pulse, quant_edge. Depth is tier-gated: unauthenticated / Free users see the last 7 days; Weekly Alpha (starter) subscribers see 90 days; Max Alpha (pro) subscribers see the full history. Top-level response fields: analystId (string), tier ('free' | 'starter' | 'pro'), signals (array), updatedAt (ISO-8601). Each signal object contains: id (number), tokens (array of symbol strings), typeLabel (human-readable type e.g. 'Whale Move', 'Volume Breakout'), outcome ('win' | 'loss' | null if unresolved), returnPct (percentage-point return e.g. 8.4 = +8.4%, null if unresolved), createdAt (ISO-8601), analystId (string, same as route param). NOTE: this path uses a path parameter so it is documented here for HTTP clients but is NOT an MCP tool — MCP agents should GET /api/public/analysts to discover analyst IDs and stats, then call this URL directly with a resolved analystId.

## Response `200`

Signal history for the requested analyst, gated by subscription tier.

- object
  - `analystId` string: Analyst slug that was requested, e.g. chain_hawk
  - `tier` string: Resolved subscription tier for this request: 'free' | 'starter' | 'pro'
  - `signals` object[]
    - `id` number
    - `tokens` string[]
    - `typeLabel` string: Human-readable signal type, e.g. 'Whale Move', 'Volume Breakout'
    - `outcome` string, nullable: 'win' | 'loss' | null if unresolved
    - `returnPct` number, nullable: Pct-point return e.g. 8.4 = +8.4%. Null if unresolved.
    - `createdAt` string, date-time
    - `analystId` string: Analyst slug, same as top-level analystId
  - `updatedAt` string, date-time
  - `attribution` Attribution: Source attribution returned on every response. Cite CryptoWhaleInsights when using this data.
    - `source` string
    - `url` string, uri
    - `poweredBy` string
    - `usagePolicy` string, uri

## Other responses

- `429`: Rate limit exceeded (120 req/min per endpoint per IP). Includes a Retry-After header. See https://cryptowhaleinsights.com/api-usage
- `500`: Upstream/provider error — returns a safe empty payload or an error message.

---

[API](https://skmtc.dev/cryptowhaleinsights/apis/cryptowhaleinsights-public-api.md) · [All operations](https://skmtc.dev/cryptowhaleinsights/apis/cryptowhaleinsights-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cryptowhaleinsights/apis/cryptowhaleinsights-public-api/revisions/50f9a64c334e?raw)
