DEVELOPER DOCUMENTATION / GET STARTED

From zero to signal.

Make your first request in a few lines of code.

Base URL: https://api.fomo-api.com

01 Create an API key

Open API keys in your dashboard and create a key for your application. Copy the secret immediately — it is shown only once. Demo keys do not authenticate real requests.

02 Authenticate your requests

Send your key in the Authorization header. Keep it on your server, outside browser bundles and version control.

Authorization: Bearer <API_KEY>

03 Get the leaderboard

GET /v1/leaderboard?window=30d

Rank wallets by realized PnL. Supported windows: 24h, 7d, and 30d. Use limit (1–200, default 50) and cursor for pagination. This endpoint is public — no key required — but the row count is capped by how you call it: without an Authorization header, or with a key on the Free plan, limit is silently capped at 20 rows; a paid-plan key can request up to the full 200. A request with an invalid or expired key is rejected with 401, not served as public.

your next edge.shBASH
# Good data. One request away.
curl "https://api.fomo-api.com/v1/leaderboard?window=30d" \
 -H "Authorization: Bearer <API_KEY>"
RESPONSE● 200 OK · illustrative
{
 "window": "30d",
 "data": [
 {
 "rank": 1,
 "address": "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU",
 "realizedPnlUsd": 284392.00,
 "returnPct": 342.8,
 "coveragePct": 98.6,
 "displayName": "B The Bezel",
 "handle": "BtheBezel",
 "avatarUrl": "https://prod-fomo-profile-pics.s3.amazonaws.com/…jpg"
 }
 ]
}
Designed for your stackREST · JSON

Results contain rank, address, realizedPnlUsd, returnPct, volumeUsd, trades, coveragePct, and pnlStatus. When a wallet has a verified linked identity, the row also carries displayName, handle, avatarUrl, and identityConfidence — all four are null when no identity is linked yet. The top-level capturedAt is the snapshot update time. Metrics may be null; null does not mean zero.

The board only lists wallets whose window PnL is complete at or above the coverage floor, so a page can end with hasMore: false before you reach limit rows — that is the full ranked set for that window, not a truncated page. Each leaderboard request counts as one unit against your monthly allowance, regardless of limit.

04 Look closer at a wallet

GET /v1/wallet/:address

Pass a Solana wallet address to retrieve its performance. The initial contract uses a 30-day window.

curl "https://api.fomo-api.com/v1/wallet/7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU" \
  -H "Authorization: Bearer <API_KEY>"

05 Get a wallet's individual trades

GET /v1/wallet/:address/trades

The trade-level feed behind a wallet's aggregate stats: every individual swap, newest first. Use limit (1–200, default 50) and offset for pagination.

curl "https://api.fomo-api.com/v1/wallet/7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU/trades?limit=50" \
  -H "Authorization: Bearer <API_KEY>"

Each entry contains txHash, blockTime, tokenIn / tokenOut (each with chain, address, and raw amount), venue, and source. The top-level total is the wallet's full trade count, independent of the current page.

06 Check plans & limits

GET /v1/plans

Public and unauthenticated. Returns the current pricing plans — id, name, prices (per currency: USD and INR), calls (monthly quota), rateLimit (requests per minute), description, and features — plus the pass (the one-time 30-day Pro pass) and top-level currencies, usageUnit, and periodResets. This is the source of truth for quota and rate-limit numbers; use it instead of hardcoding plan limits.

Errors & rate limits

Handle 401 for missing or invalid keys, 403 for unavailable plan features, 404 for unknown wallets, and 429 for rate or quota limits. Respect the Retry-After header. Server failures return 5xx; use bounded exponential backoff.

Coverage indicates how much activity is represented in the calculation. Rankings are analytics, not investment advice.