Solana token intelligence, one API call away
The DeFade API gives developers programmatic access to the same on-chain risk analysis that powers defade.org. Analyze any Solana token for rug pull risk, insider networks, bundle manipulation, smart money activity, and more — all via a fast REST API.
What can you build?
Trading bots that check rug risk before buying. Portfolio dashboards with real-time risk scoring. Telegram/Discord bots for community token screening. Browser extensions that warn users on DEX pages. Analytics platforms tracking insider activity across Solana.
Quick Start
Make your first API call in under 60 seconds.
1. Get your API key
Generate a free key instantly — no signup required. Send a POST request to the key generation endpoint:
curl -X POST https://api.defade.org/api/generate-key \ -H "Content-Type: application/json" \ -d '{"label": "my-app"}'
You'll receive a response with your key:
"key": "df_a1b2c3d4e5f6...", // save this — it won't be shown again "tier": "free", "limits": { "perMinute": 10, "perDay": 100 }
2. Analyze a token
Use your key to run a full analysis on any Solana token mint address:
curl https://api.defade.org/v1/analyze/YOUR_TOKEN_MINT \ -H "x-api-key: df_your_api_key"
const res = await fetch('https://api.defade.org/v1/analyze/YOUR_TOKEN_MINT', { headers: { 'x-api-key': 'df_your_api_key' } }); const data = await res.json(); console.log(data.rugScore, data.riskLevel);
import requests res = requests.get( 'https://api.defade.org/v1/analyze/YOUR_TOKEN_MINT', headers={'x-api-key': 'df_your_api_key'} ) data = res.json() print(data['rugScore'], data['riskLevel'])
3. Interpret the results
Every analysis returns a rugScore from 0–100 and a riskLevel classification. Lower scores indicate safer tokens.
| Score Range | Risk Level | Interpretation |
|---|---|---|
| 0–25 | LOW | Minimal risk indicators detected. Liquidity looks healthy, no insider clusters found. |
| 26–50 | MEDIUM | Some risk factors present. Review the detailed analysis before investing. |
| 51–75 | HIGH | Significant risk signals. Possible bundled wallets, concentrated holdings, or suspicious dev activity. |
| 76–100 | CRITICAL | Strong rug pull indicators. Exercise extreme caution. |
Authentication
All API requests require authentication via an API key.
Include your key using either the x-api-key request header (recommended) or the api_key query parameter. The header method is preferred as it keeps your key out of server logs and browser history.
curl https://api.defade.org/v1/rug-score/TOKEN_MINT \ -H "x-api-key: df_your_api_key_here"
curl "https://api.defade.org/v1/rug-score/TOKEN_MINT?api_key=df_your_api_key_here"
Generate API Key
Self-serve key generation — no account required.
Generate a free-tier API key instantly. Limited to 1 key per IP address per day. The generated key is active immediately with free-tier limits (10 req/min, 100 req/day).
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| label | string | Optional | A label for your key (max 50 chars), e.g. "my-trading-bot" |
Response Fields
| Field | Type | Description |
|---|---|---|
| key | string | Your API key. Starts with df_. Save it securely — it cannot be retrieved again. |
| tier | string | Always "free" for self-serve keys. |
| limits.perMinute | number | Requests allowed per minute (10 for free tier). |
| limits.perDay | number | Requests allowed per day (100 for free tier). |
| endpoints | array | List of endpoint slugs available on the free tier. |
API Endpoints
14 analytical modules covering every angle of on-chain risk. Click any endpoint to expand full details, parameters, and response schema.
Pricing & Plans
Start free. Scale as you grow. All paid plans unlock every endpoint.
- 200 requests / min
- 50,000 requests / day
- All 14 endpoints
- Dedicated support & SLA
Free Tier Endpoint Access
The free plan includes access to: analyze, rug-score, token-price, trending, and holders. Attempting to call paid-only endpoints with a free key returns a 403 error with upgrade instructions.
Rate Limits
Rate limits are enforced per API key at both per-minute and daily granularity.
When you exceed your rate limit, the API returns 429 Too Many Requests with a retryAfter field (in seconds). Rate limit status is included in every response via headers:
Limits by Plan
| Plan | Per Minute | Per Day | Daily Reset |
|---|---|---|---|
| Free | 10 | 100 | Midnight UTC |
| Starter | 30 | 1,000 | Midnight UTC |
| Pro | 60 | 5,000 | Midnight UTC |
| Enterprise | 200 | 50,000 | Midnight UTC |
Error Handling
All errors return a consistent JSON structure with an error field and optionally a message with more detail.
Error Response Format
{
"error": "Rate limit exceeded",
"limit": "10/min",
"retryAfter": 23
}
HTTP Status Codes
| Status | Meaning | Common Cause |
|---|---|---|
| 200 | Success | Request completed. Response body contains the data. |
| 400 | Bad Request | Invalid mint address format or malformed request body. |
| 401 | Unauthorized | Missing or invalid API key. Check the x-api-key header. |
| 403 | Forbidden | Endpoint not available on your plan. Upgrade to access. |
| 404 | Not Found | Token mint address not found on Solana or not yet indexed. |
| 429 | Too Many Requests | Rate limit exceeded. Check retryAfter and back off. |
| 500 | Internal Error | Server error. Retry after a moment. If persistent, contact support. |
| 503 | Service Unavailable | Upstream RPC provider temporarily down. Automatic recovery. |
SDKs & Integration
The DeFade API is a standard REST API — it works with any HTTP client in any language.
JavaScript / Node.js
// Simple wrapper function const DEFADE_KEY = process.env.DEFADE_API_KEY; async function defade(endpoint, mint = '') { const url = `https://api.defade.org/v1/${endpoint}${mint ? `/${mint}` : ''}`; const res = await fetch(url, { headers: { 'x-api-key': DEFADE_KEY } }); if (!res.ok) throw new Error(`DeFade API ${res.status}: ${(await res.json()).error}`); return res.json(); } // Usage const analysis = await defade('analyze', 'TOKEN_MINT'); const trending = await defade('trending');
Python
import os, requests DEFADE_KEY = os.environ['DEFADE_API_KEY'] BASE = 'https://api.defade.org/v1' def defade(endpoint, mint=''): url = f'{BASE}/{endpoint}' + (f'/{mint}' if mint else '') r = requests.get(url, headers={'x-api-key': DEFADE_KEY}) r.raise_for_status() return r.json() # Usage analysis = defade('analyze', 'TOKEN_MINT') trending = defade('trending')
Other Integrations
DeFade also offers a Telegram bot (@DeFadeAnalyzerBot) for instant token checks, a Chrome extension that auto-detects tokens on DEX pages, and a community channel at t.me/DeFadeOrg.