Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/0xW1re/solvedocs/llms.txt

Use this file to discover all available pages before exploring further.

All pipeline health and trading performance data is accessible through the REST API and the live SSE feed. This page covers the key endpoints and fields to watch, what healthy values look like, and how to detect degradation before it affects trade quality.

Pipeline stats

The /api/stats endpoint returns a snapshot of the current pipeline state:
const stats = await fetch('/api/stats').then(r => r.json());
{
  "ws": {
    "connected": true,
    "eventsPerSec": 42,
    "totalEvents": 4320000,
    "currentSlot": 312450000
  },
  "signals": {
    "total": 84200,
    "last24h": 1240
  },
  "wallets": {
    "tracked": 2840,
    "scored": 1920,
    "bots": 340
  },
  "regime": {
    "state": "bull_normal",
    "confidence": 0.6
  },
  "models": {
    "loaded": 4,
    "scored": 81200,
    "fallbacks": 42
  },
  "uptime": 86400,
  "memMb": 312
}

What to watch

FieldHealthyWarning
ws.connectedtruefalse — pipeline not receiving on-chain data
ws.eventsPerSec20–200+ (market dependent)Near 0 — possible WebSocket disconnect
models.fallbacks0Rising — ML inference degraded, signals using rule-based scoring
wallets.scoredGrowing over timeStagnant — feature computation may have stalled
regime.stateAny valid stateRelevant context for interpreting signal quality

Live feed as a health signal

The /api/live/feed SSE stream itself is a health indicator. A healthy pipeline emits a heartbeat event every 15 seconds. If the heartbeat stops while the connection remains open, the upstream pipeline has likely stalled at the WebSocket level.
let lastHeartbeat = Date.now();

es.addEventListener('heartbeat', () => {
  lastHeartbeat = Date.now();
});

// Check for stalled feed
setInterval(() => {
  if (Date.now() - lastHeartbeat > 30_000) {
    console.warn('Feed appears stalled — no heartbeat in 30s');
  }
}, 5000);
A stalled heartbeat with an open connection is distinct from a disconnected stream. SSE reconnects automatically on disconnect, so a missing heartbeat with a still-open connection indicates a problem upstream of the SSE layer itself.

Signal quality indicators

Several fields in the signal payload indicate the quality of an individual signal: walletStats.alphaScore (0–100) — the wallet’s historical edge score. Signals from wallets above 75 have significantly higher historical hit rates than signals from wallets below 50. tokenState.bundleConfidence (0–1) — how much evidence of coordinated buying exists on this token. Above 0.7 is a strong negative signal. Below 0.15 indicates organic-looking activity. tokenState.riskScore (0–100) — composite token risk. Above 70 indicates multiple risk factors are present simultaneously. tokenState.lifecycleState — the token’s current lifecycle stage. momentum and early_accumulation are the most actionable states. distribution is a strong warning that smart money may be exiting. buysLast60s / buysLast300s — raw velocity. Rising velocity alongside a high alpha score is the canonical high-quality signal pattern.

Market regime

The current market regime is included in /api/stats under regime.state. Four states are possible:
StateMeaning
bull_euphoriaHigh graduation rates, strong volume, elevated token creation. Signals tend to have higher hit rates.
bull_normalStandard positive market conditions.
transitionMarket dynamics shifting — creation or graduation rate diverging from recent average. Elevated uncertainty.
bearLow graduation rates, thin volume. Signal quality tends to be lower across the board.
The regime is reclassified every 10 minutes from on-chain data. It is included as a feature in the ML models, so the model’s probability outputs already account for current regime conditions.

Anti-signal rate monitoring

Anti-signals appear on the /api/live/feed stream as events where data.type === 'anti_signal'. A healthy market produces a low but non-zero rate of anti-signals — some level of adversarial activity is always present on Pump.fun. A sudden spike in anti-signal rate across many tokens simultaneously usually indicates a coordinated campaign or a broader shift toward lower-quality token creation. Anti-signals include a severity field (the count of triggers that fired, minimum 2) and a human-readable reasons array:
{
  "type": "anti_signal",
  "data": {
    "tokenMint": "...",
    "severity": 3,
    "reasons": [
      "Creator risk score 92/100 (87% rug rate across 34 tokens)",
      "71% of buyers are bots",
      "Coordinated bundle detected (89% confidence, 52% of buyers)"
    ]
  }
}
If the live trader is force-exiting positions frequently due to anti-signals, check whether the anti-signal rate has spiked broadly. A spike suggests market-wide adversarial conditions, which may warrant reducing position sizes or pausing until conditions improve.

Graduation rate as a leading indicator

Graduations appear on the live feed as graduation events. Tracking the graduation rate — graduations per hour relative to token creations per hour — gives an independent view of market quality that leads the official regime classification by a few minutes. A rising graduation rate that the regime has not yet reclassified is a useful early signal of improving conditions.
let creates = 0;
let grads = 0;

es.addEventListener('signal', (e) => {
  const d = JSON.parse(e.data);
  if (d.type === 'signal' && d.data.action === 'create') creates++;
});

es.addEventListener('graduation', () => { grads++; });

// Log every minute
setInterval(() => {
  const rate = creates > 0 ? (grads / creates * 100).toFixed(1) : '—';
  console.log(`Grad rate: ${rate}% (${grads}/${creates} last minute)`);
  creates = 0;
  grads = 0;
}, 60_000);

Build docs developers (and LLMs) love