API reference
The trades of labelled traders on fomo.family and pump.fun as they land, their PnL, positions and trades, and the theses they post on coins. Read-only JSON over HTTPS, plus one live stream.
- Base URL
https://degentape.com/v1- Auth
Authorization: Bearer <key>- Format
- JSON; times in Unix seconds unless a field says otherwise
Quickstart
Authentication
Every call except /v1/plans takes an API key. Send it as a Bearer token; an x-api-key header or an api_key query parameter work too. Keys start with dtk_, are shown once when you create them, and can be revoked at any time in the dashboard.
Authorization: Bearer dtk_••••••••••••••••••••••••••••••••Credits and limits
Each call spends credits: a fill delivered costs 1, lookups cost what the table says. Plan credits are spent first and reset when the 30 days end; extra credits (top-ups, the trial) never expire. Top-ups add credits to a running plan.
| Request | Credits |
|---|
Your plan sets how many requests a second you can make (with two seconds of burst) and how many live streams you can hold open at once. Every answer carries x-credits-used and x-credits-remaining.
x-credits-used: 5
x-credits-remaining: 999995Errors
Errors are JSON with an error message. A refused call is never charged.
400 | A parameter is wrong; the message names it. |
|---|---|
401 | No key, or the key is not valid or was revoked. |
402 | Not enough credits for this call; credits_needed says how many. |
404 | Unknown trader, token or endpoint. |
429 | Over your plan’s requests a second or open streams. Wait for retry-after. |
502 | The fomo.family data source did not answer. Try again shortly. |
{
"error": "Not enough credits (this call costs 25). Pick a plan, or top up the one you have, at https://degentape.com/developers",
"credits_needed": 25
}Naming traders
Name a trader by handle (case doesn’t matter, a leading @ is fine) or by the ref a fill carries (w_…), which also covers the few traders without a handle. Trader endpoints and the traders filter cover the traders we track live, over 40,000 on fomo.family and pump.fun; the leaderboard ranks every fomo.family trader. When a handle exists on both apps, add platform=fomo or platform=pump.
/v1/traders/cosby
/v1/traders/@Cosby
/v1/traders/w_A9HdYqHdZg4lB7dr9VpqWBSLX7XZXzC7Cfb5rpDy1ueY
/v1/traders/cosby?platform=fomoLive feed
GET/v1/feed
Fills as they land, as Server-Sent Events. Most arrive within two seconds of their block; about one in ten Solana fills takes up to a minute. You pay per fill delivered, nothing for the connection.
Query
traders | Handles or refs, comma-separated, up to 500. All tracked traders when left out. |
|---|---|
chains | robinhood, solana, bsc, base, arc, comma-separated. |
side | buy or sell. |
min_usd | Only fills at least this size in USD. |
first_buy | 1: only a trader’s first buy of a token. |
kinds | all adds airdrops and transfers; swaps only by default. |
unverified | 1 adds cross-chain deliveries we cannot attribute to a trade. |
include | wallets adds the trader’s wallets and the transaction to each fill, at 5 credits a fill. |
since | A fill id to resume from; the Last-Event-ID header does the same. Up to the last 2,000 fills. |
Events
hello | First, once: your plan and when it ends (plan_ends, a unix time; null without one), your credits and the price of a fill. |
|---|---|
fill | One per fill, with its id as the event id. The data is a fill. |
notice | Your plan ends within three days, or has just ended: a reminder with plan_ends. The stream stays open. |
error | Out of credits, or your client fell a megabyte behind. The stream closes after it. |
: ping | A comment every 15 seconds that keeps the connection open. |
Can’t hold a stream? Poll /v1/fills?after=<last id> instead, at the same price per fill.
curl -N "https://degentape.com/v1/feed?chains=solana&min_usd=250" \
-H "Authorization: Bearer $DEGENTAPE_KEY"retry: 3000
event: hello
data: {"plan":"pro","plan_ends":1794651311,"credits":981204,"cost_per_fill":1,"traders":"all"}
id: 16776508
event: fill
data: {"id":16776508,"ts":1791822953,"chain":"solana","side":"buy","kind":"swap","usd":500,"price":0.0000295669,"mcap":29569.12,"amount":16910746.07,"first_buy":true,"verified":true,"token":{"address":"DGdmHacFYkfrazHYtFEPtAbRnSru8db5cNyQkgY6QsQV","symbol":"ZKINU","name":"ZERO KNOWLEDGE INU"},"trader":{"handle":"ErnestoCheGuevara","name":null,"followers":410,"platform":"fomo","ref":"w_jYWoDD7pYvjGh8LS-ix2E4qVcM9kL7iYom3RWuV4k_Ap"}}
: pingFills
GET/v1/fills
Recent fills, newest first, with the same filters as the feed. Page back with before, or poll for new fills with after. A call costs at least 1 credit, even when nothing new came in.
Query
after | Fills newer than this id, oldest first. Reaches back about four days. |
|---|---|
before | Fills older than this id, newest first. Not with after. |
limit | 1 to 100, default 100. |
| filters | traders, chains, side, min_usd, first_buy, kinds, unverified, include, as on the feed. |
next holds the cursor for the following call. unknown_traders lists names that matched no one; truncated says the page stopped because credits ran out.
curl "https://degentape.com/v1/fills?after=16776436&limit=50" \
-H "Authorization: Bearer $DEGENTAPE_KEY"{
"rows": [
{
"id": 16776437,
"ts": 1791823968,
"chain": "solana",
"side": "buy",
"kind": "swap",
"usd": 63.02,
"price": 0.00000884454,
"mcap": null,
"amount": 7125653.23,
"first_buy": true,
"verified": true,
"token": { "address": "CCziFRbFVuDm5DFhebBprNSFhJ83D3n53VCBCp2hWtVK", "symbol": "HI", "name": "Hire Inu" },
"trader": { "handle": "Enzo111", "name": null, "followers": 418, "platform": "fomo", "ref": "w_1DKmiujmzgzG4cwRfbc_pOVvgSq5nkD7u5J6xUCAmM34" }
}
],
"next": { "after": 16776437 }
}The fill object
id | Increasing; use it as a cursor. |
|---|---|
ts | Block time, Unix seconds. |
chain | robinhood, solana, bsc, base or arc. |
side, kind | buy or sell; swap unless you asked for kinds=all. |
usd, price, mcap | Size and token price in USD, and the market cap at the fill (null when unknown). |
amount | Tokens bought or sold. |
first_buy | The trader’s first buy of this token. |
verified | False only for cross-chain deliveries we cannot attribute (with unverified=1). |
token | address, symbol, name. |
trader | handle, name, followers, platform (fomo or pump) and ref. |
tx, trader.wallet, trader.solana | Only with include=wallets. |
Trader
GET/v1/traders/{handle}
A trader’s identity, what the tape saw them do (the last 30 days and all time, with realized PnL), and for fomo.family traders their full PnL from fomo.family’s own order flow.
Query
platform | fomo or pump, when a handle exists on both. |
|---|
curl "https://degentape.com/v1/traders/unipcs" \
-H "Authorization: Bearer $DEGENTAPE_KEY"{
"trader": { "handle": "unipcs", "name": "Unipcs", "followers": 781005, "platform": "fomo", "profile_url": "https://fomo.family/profile/unipcs", "ref": "w_LPDtnXY1yeijvdLknhkXnRLaubOFwm3WPDZpsnDl4QmI" },
"tape": {
"last_fill_ts": 1791824785,
"d30": { "fills": 8645, "buys": 7936, "sells": 709, "volume_usd": 1145268.79, "last_ts": 1791824785 },
"all_time": { "tokens": 3018, "open_positions": 2698, "realized_usd": -305719.4, "buys": 1453, "sells": 34 }
},
"fomo": {
"handle": "unipcs",
"confidence": "high",
"pnl": {
"buy_usd": 2315091.72,
"sell_usd": 2768336.25,
"realized_usd": -347009.64,
"unrealized_usd": -633073.71,
"total_pnl_usd": -915286.42,
"roi_total": -0.395,
"n_buys": 1238,
"n_sells": 819,
"n_tokens": 1115,
"first_ts": "2026-05-20T02:53:28.000Z",
"last_ts": "2026-10-12T15:51:47.000Z"
}
}
}Trader fills
GET/v1/traders/{handle}/fills
One trader’s fills on the tape, newest first. The same paging and filters as /v1/fills.
curl "https://degentape.com/v1/traders/unipcs/fills?side=buy&limit=20" \
-H "Authorization: Bearer $DEGENTAPE_KEY"Positions
GET/v1/traders/{handle}/positions
A fomo.family trader’s positions across chains, valued at current prices, with realized and unrealized PnL and the totals.
Query
status | all (default), open or closed. |
|---|---|
sort | value (default), cost, pnl, realized or recent. |
limit, offset | Up to 50 a page (default 25); next_offset gives the next page, up to an offset of 1,000. |
curl "https://degentape.com/v1/traders/unipcs/positions?status=open&limit=25" \
-H "Authorization: Bearer $DEGENTAPE_KEY"{
"trader": { "handle": "unipcs", "platform": "fomo", "ref": "w_LPDtnXY1yeijvdLknhkXnRLaubOFwm3WPDZpsnDl4QmI" },
"status": "open",
"total": 5668,
"next_offset": 25,
"totals": { "positions": 6004, "open": 5668, "closed": 336, "value_usd": 905919.01, "unrealized_usd": -633073.71, "realized_usd": -347009.64 },
"rows": [
{
"chain": "solana",
"address": "Dz9mQ9NzkBcCsuGPFJ3r1bS4wgqKMHBPiVuniW8Mbonk",
"symbol": "USELESS",
"status": "open",
"units": 3031437.95,
"cost_open_usd": 165298.24,
"value_usd": 545052.54,
"unrealized_usd": 379514.63,
"realized_usd": 0,
"n_buys": 13,
"n_sells": 0,
"first_ts": "2026-06-06T10:59:09.000Z",
"last_ts": "2026-10-09T12:40:49.000Z",
"mark": { "price_usd": 0.1798, "src": "dexscreener", "stale": false }
}
]
}Trades
GET/v1/traders/{handle}/trades
A fomo.family trader’s trades on every chain, newest first. Times here are ISO 8601.
Query
before | The next_before cursor from the previous page. |
|---|---|
limit | Up to 50 a page, default 25. |
curl "https://degentape.com/v1/traders/unipcs/trades?limit=25" \
-H "Authorization: Bearer $DEGENTAPE_KEY"{
"trader": { "handle": "unipcs", "platform": "fomo", "ref": "w_LPDtnXY1yeijvdLknhkXnRLaubOFwm3WPDZpsnDl4QmI" },
"next_before": "1791820307477405.40.409",
"rows": [
{
"ts": "2026-10-12T15:51:47.000Z",
"chain": "ethereum",
"address": "0x5bfa254a671399ff61806eb0aa1d28a474ce9248",
"side": "buy",
"venue": "relay_fill",
"gross_usd": 118.71,
"net_usd": 118.71,
"fee_usd": 0,
"price_usd": null
}
]
}Wallets
GET/v1/traders/{handle}/wallets
The wallets we know a trader by, EVM and Solana. Wallets are sold one trader at a time; everything else names traders by handle.
curl "https://degentape.com/v1/traders/cosby/wallets" \
-H "Authorization: Bearer $DEGENTAPE_KEY"{
"trader": { "handle": "cosby", "platform": "fomo", "ref": "w_A9HdYqHdZg4lB7dr9VpqWBSLX7XZXzC7Cfb5rpDy1ueY" },
"wallets": { "evm": ["0x…"], "solana": ["…"] }
}Leaderboard
GET/v1/leaderboard
Every fomo.family trader, ranked: 50 a page. Use a row’s handle or ref with the trader endpoints.
Query
period | all (default), 30d, 7d or 24h. |
|---|---|
sort | pnl (default), roi, capital, return, unrealized, best, volume, winrate, trades, followers or last. |
dir | desc (default) or asc. |
page | From 1, up to 100. |
q | Search by handle. |
curl "https://degentape.com/v1/leaderboard?period=7d&sort=pnl" \
-H "Authorization: Bearer $DEGENTAPE_KEY"{
"period": "7d",
"sort": "pnl",
"total": 80085,
"next_offset": 50,
"rows": [
{
"n": 1,
"handle": "cosby",
"ref": "w_A9HdYqHdZg4lB7dr9VpqWBSLX7XZXzC7Cfb5rpDy1ueY",
"followers": 39554,
"pnl_usd": 657154.6,
"unrealized_usd": -547888.31,
"total_pnl_usd": 782555.09,
"capital_usd": 638502.71,
"return_pct": 122.56,
"volume_usd": 908732.98,
"trades": 113,
"last_ts": "2026-10-11T21:32:17.000Z"
}
]
}Hot tokens
GET/v1/tokens/hot
The ten tokens tracked traders are buying right now, scored by buyers, size and reach. Refreshed every 15 seconds.
curl "https://degentape.com/v1/tokens/hot" \
-H "Authorization: Bearer $DEGENTAPE_KEY"{
"rows": [
{
"chain": "robinhood",
"token": "0x94641b97010608c3827fb058074889f19868ff33",
"symbol": "VRAX",
"mcap": 1778130,
"change24": 413,
"buyers": 48,
"sellers": 19,
"buy_usd": 57422.14,
"sell_usd": 15199.04,
"reach": 41195,
"top_buyer_followers": 22945,
"last_ts": 1791826076,
"score": 0.904
}
]
}Token
GET/v1/tokens/{address}
A token’s market data, what tracked traders did on it, and their latest fills. A token the tape has not seen answers 404.
curl "https://degentape.com/v1/tokens/0x94641b97010608c3827fb058074889f19868ff33" \
-H "Authorization: Bearer $DEGENTAPE_KEY"{
"token": { "chain": "robinhood", "mint": "0x94641b97010608c3827fb058074889f19868ff33", "symbol": "VRAX", "name": "Commander Vrax", "mcap": 1778130, "liquidity": 108364.75, "change24": 413 },
"tracked": { "traders": 2045, "fills": 13532, "buys": 8403, "sells": 5129, "volume": 7187086.05, "first_ts": 1790724562, "last_ts": 1791826076 },
"fills": [
{ "id": 16776476, "ts": 1791826080, "chain": "robinhood", "side": "buy", "usd": 46.48, "mcap": 1778000, "first_buy": false,
"trader": { "handle": "iCakii", "followers": 222, "platform": "pump", "ref": "w_eqSu8a3WYa79u4RR50AC2nYJRif9X4vIAQnDVDbASour" } }
]
}Theses
GET/v1/tokens/{address}/theses
The theses and callouts traders posted on a token, on fomo.family and pump.fun, each with the author’s position and how it is doing, plus a summary when there is one. Most coins have none; the list is then empty.
curl "https://degentape.com/v1/tokens/0x1bd0d654e44a78d9b20dcf09fa61100013c07777/theses" \
-H "Authorization: Bearer $DEGENTAPE_KEY"{
"token": { "chain": "bsc", "mint": "0x1bd0d654e44a78d9b20dcf09fa61100013c07777", "symbol": "尤栗", "name": "Yuri", "mcap": 61885 },
"summary": null,
"theses": [
{
"platform": "fomo",
"author": { "handle": "lats", "name": "lats", "followers": null, "ref": null },
"text": "…this is the OG that’s going to run regardless, due to the same reasoning why it initially ran to 1m in the first place…",
"created_at": 1791793127,
"mcap": 152032.47,
"likes": 6,
"replies": 0,
"position": { "usd": 1176.29, "entry_price": 0.000174, "pnl_usd": -316.91, "pnl_pct": -21.22, "closed": false, "source": "fomo" },
"updates": []
}
]
}Token scan
POST/v1/scans
The report degentape.com/scan shows: how a token launched, bundles, sniper fleets, wallet farms and clusters, with a verdict and a score. Solana, BNB Chain, Ethereum and Robinhood Chain; the chain is found from the address.
Most scans take a few seconds. The call waits up to 25 for the report (200); a longer one answers 202 with the scan’s id to fetch below. A scan that fails answers 502 and gives its credits back. One scan at a time per account.
Your account’s own report of a token from the last max_age seconds comes back again for free, marked "reused": true.
Wallets are never named after their trader in a report. The traders the scan recognised are listed apart in report.known_traders, by handle; a trader’s wallets are under Wallets.
Body
address | The token’s address. Required. |
|---|---|
chain | solana, bnb, ethereum or robinhood. Found from the address when left out. |
max_age | Seconds; default 300. 0 always runs a new scan. |
wait | Seconds to wait for the report, 0 to 25; default 25. |
The fields can also go in the query string.
GET/v1/scans/{id}
A scan you started: its status (queued, running, done or failed) and, once done, its report. wait (0 to 25 seconds) holds the answer until it is done.
curl -X POST "https://degentape.com/v1/scans" -H "Authorization: Bearer $DEGENTAPE_KEY" -H "Content-Type: application/json" -d '{"address": "FCVohFrokwz6rELLNgnQT426RbRjXQMy4RY6zrUjpump"}'{
"scan": {
"id": "5b0e7c2a-3d41-4f7e-9a1c-0e6f2b8d4a17",
"address": "FCVohFrokwz6rELLNgnQT426RbRjXQMy4RY6zrUjpump",
"chain": "solana",
"status": "done",
"created_at": 1791906180,
"completed_at": 1791906186,
"report": {
"token": { "symbol": "OSPREY", "name": "Osprey" },
"verdict": "Sniper swarm at launch, no creator bundle",
"launchVerdict": "Sniper swarm at launch, no creator bundle",
"score": 25,
"bundlePct": 46.28,
"clusterPct": 19.23,
"flags": [
{ "level": "red", "text": "cluster bought 19.2% of supply in the creation slot", "pts": 20 }
],
"known_traders": [
{ "handle": "example", "name": "example", "followers": 1200, "platform": "fomo" }
]
}
}
}Account
GET/v1/account
Your plan, credits left and limits, for the key you call with.
{
"plan": { "id": "pro", "name": "Pro", "usd": 49, "credits": 1000000, "period_start": 1791826075, "period_end": 1794418075 },
"expired_plan": null,
"credits": { "plan_left": 981204, "extra": 10000, "total": 991204 },
"limits": { "plan": "pro", "rps": 15, "streams": 5 },
"trial": { "used": true, "credits": 10000 },
"key": "3e8fe057-e986-4871-ab7f-ba85e8538ac8"
}Plans
GET/v1/plans
The price list: plans, the trial, top-ups and every endpoint’s cost. No key needed.
GET/v1/openapi.json
This API as an OpenAPI 3.1 document, for code generators and agents; /v1/schema answers the same. No key needed.
curl "https://degentape.com/v1/plans"Questions or a bigger plan? DM @0xbraindeds on X.