API Documentation

    Score Solana tokens 0–100 based on behavioral signals. Delivered in under 100ms.

    Overview

    Blindspotr scores every new Solana token launch 0–100 based on on-chain wallet behavior, funding patterns, and coordination signals. The API delivers behavioral risk scores in under 100ms, designed for integration into trading terminals, bots, and analytics dashboards.

    Scores are computed automatically as tokens launch. By the time you query a token, the score is already waiting.

    Current coverage: pump.fun graduates only. Additional launchpads coming.

    Authentication

    Bearer token authentication. Include your API key in every request:

    Authorization: Bearer YOUR_API_KEY

    Get your API key from the dashboard at blindspotr.io/dashboard.

    Endpoint Reference

    GET /v1/token/:mint/risk

    Base URL: https://api.blindspotr.io

    Endpoint: GET /v1/token/:mint/risk

    Parameters

    ParameterTypeDescription
    mintstringThe token's mint address (base58, 32–44 chars)

    Response time: ~33ms for scored tokens, ~35ms for pending.

    Response Schema

    Three possible status values: scored, pending, not_found.

    Scored

    Token has been fully analyzed. Score and all components are available.

    {
      "mint": "7GCihgDB8fe6KNjn2MYtkzZcRjQy3t9GHdC8uHYmW2hr",
      "status": "scored",
      "score": 78,
      "riskLevel": "HIGH",
      "patternSignature": "IMMINENT_RUG",
      "components": {
        "freshness": { "score": 85, "weight": 0.29 },
        "walletReputation": { "score": 72, "weight": 0.26 },
        "developerHistory": { "score": 65, "weight": 0.24 },
        "funding": { "score": 90, "weight": 0.12 },
        "behavioralSequence": { "score": 88, "weight": 0.09 }
      },
      "divergence": {
        "label": "HIGH_CONFIDENCE",
        "coefficient": 0.71
      },
      "deployer": {
        "address": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
        "tokenCount": 12,
        "rugRate": 0.83
      },
      "scanTimestamp": "2026-03-23T14:22:18.000Z",
      "modelVersion": "4.4"
    }

    Pending

    Token was discovered but the scan has not completed yet. Poll again in 30–60 seconds.

    {
      "mint": "7GCihgDB8fe6KNjn2MYtkzZcRjQy3t9GHdC8uHYmW2hr",
      "status": "pending",
      "message": "Token discovered, scan in progress",
      "discoveredAt": "2026-03-23T14:20:00.000Z"
    }

    Not Found

    Four sub-cases — all return status not_found with a reason field:

    ReasonDescription
    not_discoveredToken has never been seen by Blindspotr
    filteredToken was discovered but filtered before scanning (failed quality gates)
    scan_abortedScan started but was aborted (low liquidity at scan time, insufficient data)
    out_of_coverageToken is outside current coverage (non-pump.fun launchpad)
    {
      "mint": "7GCihgDB8fe6KNjn2MYtkzZcRjQy3t9GHdC8uHYmW2hr",
      "status": "not_found",
      "reason": "not_discovered"
    }

    Score Interpretation

    Risk Levels

    ScoreLevelMeaning
    0–29LOWNo meaningful risk signals detected
    30–49MODERATESome signals present, proceed with caution
    50–64ELEVATEDMultiple risk signals — significant caution warranted
    65–79HIGHStrong coordination or manipulation signals
    80–100CRITICALNear-certain insider operation or imminent rug

    Components

    Scores are a weighted composite of five behavioral signals:

    ComponentWeightWhat it measures
    freshness29%Wallet age and activity history. Fresh wallets (<7 days) with no prior on-chain history score higher risk.
    walletReputation26%Cross-token behavioral history from 97K+ wallet reputation cache. Wallets with prior rug appearances score higher.
    developerHistory24%Deployer's token launch history — how many tokens launched, how many rugged.
    funding12%Shared funding sources within the buyer graph. Wallets funded from common ancestors = coordination signal.
    behavioralSequence9%Jito bundle detection, buy-amount uniformity, coordinated timing patterns.

    Pattern Signatures

    Every scored token receives a behavioral fingerprint classification:

    PatternDescriptionFrequency
    IMMINENT_RUGJito bundle + coordinated insider fingerprint~46%
    UNCLASSIFIEDNo dominant pattern detected~39%
    DELAYED_COORDINATIONCoordination signals appear after initial launch~7%
    FUNDING_WEBDense shared funding graph~3%
    AGED_WALLET_COORDINATIONOlder wallets coordinating — sophisticated signal~2%
    CONCENTRATION_TRAPSupply heavily concentrated at top holders~2%
    CLEAN_PROFILENo meaningful risk signals detected~1%

    Divergence

    The divergence field measures alignment between the behavioral risk score and price microstructure.

    LabelMeaning
    MAXIMUM_DANGERHigh behavioral risk + price looking healthy — classic setup
    HIGH_CONFIDENCERisk signal and price action are aligned
    NEUTRALNo strong divergence signal
    SOPHISTICATED_OPERATIONLow risk score + unhealthy price — possible evasion
    PERFECT_EVASION_OR_CLEANEither extremely clean or extremely sophisticated

    Rate Limits & Errors

    Rate limits apply per API key.

    PlanRate limit
    Pro60 requests/minute
    Business300 requests/minute
    EnterpriseCustom

    Rate limit headers are included in every response:

    X-RateLimit-Limit: 60
    X-RateLimit-Remaining: 47
    X-RateLimit-Reset: 1711202400

    Error Codes

    StatusMeaning
    400Invalid mint address format
    401Missing or invalid API key
    429Rate limit exceeded
    500Internal server error

    Code Examples

    curl

    curl -X GET "https://api.blindspotr.io/v1/token/7GCihgDB8fe6KNjn2MYtkzZcRjQy3t9GHdC8uHYmW2hr/risk" \
      -H "Authorization: Bearer YOUR_API_KEY"

    JavaScript

    const response = await fetch(
      'https://api.blindspotr.io/v1/token/7GCihgDB8fe6KNjn2MYtkzZcRjQy3t9GHdC8uHYmW2hr/risk',
      {
        headers: {
          'Authorization': 'Bearer YOUR_API_KEY'
        }
      }
    );
    
    const data = await response.json();
    
    if (data.status === 'scored') {
      console.log(`Score: ${data.score} (${data.riskLevel})`);
      console.log(`Pattern: ${data.patternSignature}`);
    }

    Python

    import requests
    
    headers = {"Authorization": "Bearer YOUR_API_KEY"}
    mint = "7GCihgDB8fe6KNjn2MYtkzZcRjQy3t9GHdC8uHYmW2hr"
    
    response = requests.get(
        f"https://api.blindspotr.io/v1/token/{mint}/risk",
        headers=headers
    )
    
    data = response.json()
    
    if data["status"] == "scored":
        print(f"Score: {data['score']} ({data['riskLevel']})")
        print(f"Pattern: {data['patternSignature']}")