Scopes
A key carries a set of scopes. Each public route belongs to exactly one scope, and a call to a route outside the key’s scopes is refused with 403 API_SCOPE_FORBIDDEN and requiredScope naming the scope you need.
New keys receive every scope except moderation.read; when creating a key you may also pick a smaller subset of that default grant. Only the pump.fun team can add moderation.read or change a key’s scopes afterwards; ask support.
Families
Section titled “Families”67 routes across six families. The API reference groups operations by the same tags, in the same order.
| Scope | Routes | What it covers | Example routes |
|---|---|---|---|
profiles.read | 13 | User profiles, lookups and search. | POST /achievements/overlaysPOST /profiles/generated-mediaGET /profiles/verified |
graph.read | 17 | Follow graph, likers, reposters and group membership. | GET /callout/{calloutId}/likersGET /callout/{calloutId}/repostersGET /callout/replies/{replyId}/likers |
content.read | 18 | Callouts, replies, posts and public feeds. | GET /callout/{calloutId}GET /callout/{calloutId}/quotesGET /callout/{calloutId}/replies |
leaderboards.read | 11 | PnL leaderboards, competitions and creator payouts. | GET /competitionsGET /competitions/{id}/entries/{entryId}GET /competitions/{id}/entries/{entryId}/highlights |
positions.read | 7 | Positions, trades and portfolios of public wallets. | GET /mint-positions/{mint}GET /portfolio-summaryPOST /portfolio-summary/balances |
moderation.read | 1 | The public ban oracle. Outside every default grant; request it explicitly. | GET /moderation/ban/address/{address} |
Routes by scope
Section titled “Routes by scope”The lists below are generated from the public OpenAPI document at build time.
profiles.read
User profiles, lookups and search. 13 routes.
| Route | Summary |
|---|---|
POST /achievements/overlays | Top badge ids for a batch of avatars |
POST /profiles/generated-media | Verified badge plus generated share media |
GET /profiles/verified | The ten top daily PnL leaders |
POST /profiles/verified | Verified status for a list of wallets or user ids |
GET /search/resolve | Classify 1-5 identifiers in one hop |
GET /users | List users |
GET /users/{address}/achievements | A user's achievement unlocks plus live progress on… |
GET /users/{address}/callout-stats | A user's callout performance stats |
GET /users/{id} | Get a user by wallet address or user id |
GET /users/{id}/overview | The profile header in one read |
POST /users/batch | Fetch users by addresses in batch |
GET /users/search-v2 | Search users |
GET /users/username-exists/{username} | Check if a username exists |
graph.read
Follow graph, likers, reposters and group membership. 17 routes.
| Route | Summary |
|---|---|
GET /callout/{calloutId}/likers | List the profiles who liked a callout |
GET /callout/{calloutId}/reposters | List the profiles who reposted a callout |
GET /callout/replies/{replyId}/likers | List the profiles who liked a callout reply |
GET /callout/replies/{replyId}/reposters | List the profiles who reposted a callout reply |
GET /following/single/{id} | Get a single follow relationship |
GET /following/v3/followers/{userId} | One page of a user's followers |
GET /following/v3/followers/count/{userId} | Get a user follower count |
GET /following/v3/followers/search/{userId} | Search within a user's followers |
GET /following/v3/following/{userId} | One page of the users a user is following |
GET /following/v3/following/count/{userId} | Get a user following count |
GET /following/v3/following/search/{userId} | Search within the users a user is following |
GET /groups/{groupId}/members | A page of a group's members, owner first |
GET /groups/{groupId}/members/pnl | The group's active members ranked by windowed PnL |
GET /pnl-leaderboard/follow-suggestions | Get follow suggestions sampled from the PNL leaderboard |
GET /pnl-leaderboard/onboarding-suggestions | Get the scored, sampled follow suggestions for the… |
GET /posts/{postId}/likers | Profiles who liked a post, newest like first… |
GET /posts/{postId}/reposters | Profiles who plain-reposted a post, newest first… |
content.read
Callouts, replies, posts and public feeds. 18 routes.
| Route | Summary |
|---|---|
GET /callout/{calloutId} | Get a callout by id with its author identity |
GET /callout/{calloutId}/quotes | List quote posts of a callout |
GET /callout/{calloutId}/replies | List replies on a callout |
GET /callout/{calloutId}/tailers | List the wallets that tailed a callout |
GET /callout/coin/{coin} | List top callouts on a coin |
GET /callout/leaderboard-stats/{userId} | Get leaderboard stats for a user |
GET /callout/list/{userId} | List callouts for a user |
GET /callout/replies/{replyId}/chain | Get a reply's ancestor chain up to its callout |
GET /callout/replies/list/{userId} | List a user's callout replies with thread context |
GET /callout/reposts/list/{userId} | List a user's reposts |
GET /callout/user/{userId}/mint/{coinMint} | Get a user callout for a coin |
GET /feed/video-feed | Get the curated video feed |
GET /home-feed | Get the paginated home feed of trending coins and… |
GET /home-feed/new | The global "New" callouts feed |
GET /posts | Posts by id |
GET /posts/{postId} | One post with its one-level embeds and viewer stamps… |
GET /posts/{postId}/quotes | Live quotes of a post, newest first, keyset-paginated |
GET /posts/{postId}/replies | Direct live replies to a post, newest first… |
leaderboards.read
PnL leaderboards, competitions and creator payouts. 11 routes.
| Route | Summary |
|---|---|
GET /competitions | Every competition in three viewer-independent buckets |
GET /competitions/{id}/entries/{entryId} | One entry with its snapshot roster and each member's… |
GET /competitions/{id}/entries/{entryId}/highlights | One entry's highlight reel |
GET /competitions/{id}/highlights | The competition's biggest winning legs across every… |
GET /competitions/{idOrSlug} | One competition by id or slug with its ranked board |
GET /mayhem/{mint}/top-traders | Get the trader leaderboard for a mayhem coin |
GET /payouts/leaderboard | The confirmed-payout leaderboard |
GET /pnl-leaderboard | Get the PNL leaderboard for a period |
GET /pnl-leaderboard/groups | Get the group PNL leaderboard for a period |
GET /pnl-leaderboard/positions | Get the PNL position leaderboard for a period |
GET /pnl-leaderboard/top-trader-trades/{mint} | A coin's trades from accounts ranked in the top 50 of… |
positions.read
Positions, trades and portfolios of public wallets. 7 routes.
| Route | Summary |
|---|---|
GET /mint-positions/{mint} | Get the users holding a position in a mint |
GET /portfolio-summary | Merged Solana+EVM portfolio PnL for a wallet… |
POST /portfolio-summary/balances | Multichain balance totals for a page of wallets in one… |
GET /portfolio-summary/chart | Portfolio value series |
GET /user-portfolio/{userId} | A user's whole-portfolio positions |
GET /user-positions/{userId} | Get a user's position |
GET /user-trades/{id} | One page of an account's trades, newest first |
moderation.read
The public ban oracle. Outside every default grant; request it explicitly. 1 routes.
| Route | Summary |
|---|---|
GET /moderation/ban/address/{address} | Check whether a wallet address is banned |
moderation.readis the public ban oracle (GET /moderation/ban/address/{address}). It answers whether a wallet address is banned on pump.fun and nothing else. It is outside every default grant because it is an oracle: request it only if your product needs it.- Scopes are read-only by construction. There is no write, trading or on-behalf-of scope and none is planned.
- Market data (coin prices, trades, candles) is not part of this API today.