// developer reference
API Reference
The social trading data API. Resolve any trader to both on-chain wallets and pull verified PnL, holdings, and ranked leaderboards over a plain REST/JSON interface.
Introduction
Every endpoint is a plain GET that returns JSON. No SDK required. Responses are UTF-8 JSON with permissive CORS, so you can call the API from a browser, a server, or a bot.
Base URL
https://api.fomoapi.io
All endpoints are served over HTTPS with permissive CORS, so you can call the API from a browser, server, or bot.
Authentication
Pass your API key as a Bearer token. Keyless requests still work on the free anonymous tier (lower limit).
authorization: Bearer YOUR_API_KEY
| Tier | Auth | Limit |
|---|---|---|
| Anonymous | none | 60 requests / minute per IP |
| Free key | Bearer key | 10,000 requests / month |
| Custom | Bearer key | Higher limits, trade history, realtime feed — contact us |
Create a key in one step: sign in to the dashboard (magic link, no password) and your key is minted automatically. You can rotate it anytime.
Rate limits
Every API response includes rate-limit headers:
| Header | Meaning |
|---|---|
x-ratelimit-limit | Your ceiling (per minute anonymous, per month with a key) |
x-ratelimit-remaining | Requests left in the current window |
x-ratelimit-window | day for keyed requests; minute-based for anonymous |
When you exceed the limit you get 429 with a retry-after header:
{ "error": "monthly limit exceeded", "limit": 10000, "plan": "free", "message": "Upgrade for higher limits: t.me/eulatxt" }
Errors
Errors are JSON with an error field and a matching HTTP status.
| Status | Meaning |
|---|---|
200 | OK |
400 | Bad request (e.g. invalid window) |
401 | Invalid API key |
404 | Not found (unknown endpoint or handle) |
429 | Rate limit exceeded |
Quickstart
$ curl https://api.fomoapi.io/v2/leaderboard/24h \ -H "authorization: Bearer YOUR_API_KEY"
const res = await fetch( "https://api.fomoapi.io/v2/leaderboard/24h", { headers: { authorization: "Bearer YOUR_API_KEY" } } ); const data = await res.json(); console.log(data.traders);
import requests r = requests.get( "https://api.fomoapi.io/v2/leaderboard/24h", headers={"authorization": "Bearer YOUR_API_KEY"}, ) print(r.json()["traders"])
Get API info
Returns the API description, your tier, rate limit, dataset size, and the endpoint list. Handy for a health/status probe with metadata.
{ "name": "FOMO API", "version": "0.1.0", "tier": "free", "rateLimit": "60 requests / minute per IP", "dataset": { "source": "fomo", "traders": 12 }, "endpoints": { … } }
Health check
Liveness probe. Returns ok, the loaded trader count, and process uptime.
{ "ok": true, "traders": 12, "uptime": 1834.2 }
Leaderboard
Ranked traders for a time window. Each row carries both on-chain wallets, verified PnL, volume, and holdings — the exact shape your app renders.
Path parameters
| Name | Values | Description |
|---|---|---|
window | 24h · 7d · 30d · all | Ranking window |
Query parameters
| Name | Type | Description |
|---|---|---|
limit | int (1–100) | Max rows to return. Defaults to the full set. |
Example
$ curl https://api.fomoapi.io/v2/leaderboard/24h?limit=2 \ -H "authorization: Bearer YOUR_API_KEY"
Response
{ "window": "24h", "source": "fomo", "capturedAt": "2026-08-25T18:04:00Z", "count": 2, "traders": [ { "rank": 1, "handle": "CryptoKaleo", "displayName": "K A L E O", "pnl24hUsd": 151383, "volumeUsd": 119165, "trades": 73, "followers": 19967, "holdings": 4, "wallets": { "solana": "5AhfPStn66hRYoNNDfJHSDgCH7fBbwMQZUECRrhTo62F", "evm": "0x7b4d16237683fe1765e727eadf99c6f02adf0b59" }, "topTokens": [ "0x7fe995", "0x51fb76" ], "verified": true } ] }
Trader fields
| Field | Type | Description |
|---|---|---|
rank | int | Position in this window |
handle | string | Social handle (use with /v2/users) |
displayName | string | Display name |
pnl24hUsd | number | Realized 24h PnL in USD |
volumeUsd | number | Trading volume in USD |
trades | int | Trade count |
followers | int | Follower count |
holdings | int | Number of tokens currently held |
wallets.solana | string | Solana wallet address |
wallets.evm | string | EVM wallet address |
topTokens | string[] | Top held token identifiers |
verified | bool | PnL derived from on-chain trades, not self-reported |
Resolve a trader
Resolve a single handle to its both-chain wallets, PnL, and stats. The handle is case-insensitive; a leading @ is allowed.
Example
$ curl https://api.fomoapi.io/v2/users/CryptoKaleo \ -H "authorization: Bearer YOUR_API_KEY"
Response
{ "handle": "CryptoKaleo", "displayName": "K A L E O", "pnl24hUsd": 151383, "volumeUsd": 119165, "trades": 73, "followers": 19967, "holdings": 4, "wallets": { "solana": "5AhfPStn66hRYoNNDfJHSDgCH7fBbwMQZUECRrhTo62F", "evm": "0x7b4d16237683fe1765e727eadf99c6f02adf0b59" }, "verified": true }
Returns 404 {"error":"trader not found"} if the handle isn't in the dataset.
Coming soon
On the roadmap, backed by data already captured:
| Endpoint | Returns | |
|---|---|---|
GET /trades?user={handle} | Open + closed positions with entry, exit, realized PnL | soon |
GET /v2/users/{id}/balances | Live holdings: token, amount, price, 24h move | soon |
GET /token/{address}/holders | Top holders of a token and their wallets | soon |
WSS /ws | Realtime firehose of buys, sells, and theses | soon |
Want early access to any of these? Email us.