the public
api.
read-only, json, no key, cors open. amounts in lamports are strings; sol and usd are numbers computed with the sol price at response time. the same routes feed every page on this site.
GET /api/gp/coinslive coins with the x account each one pays, sorted by sol paid, then newest.
- handle
- only coins paying this x account (case-insensitive, with or without the @)
- status
- comma-separated statuses; defaults to live and finishing
- limit
- up to 200
curl https://greenpill.fun/api/gp/coins?limit=5
{
"coins": [
{
"id": "clx…", "mint": "…", "name": "…", "symbol": "ELON",
"imageUri": "ipfs://…", "status": "live", "phase": "curve",
"venue": "…", "sharingConfig": "…",
"priceSol": 0.0000000281, "creatorFeeBps": 95, "recipientBps": 10000,
"marketCapUsd": 12345.6,
"paidLamports": "1234567890", "paidSol": 1.23456789, "paidUsd": 210.4,
"solUsd": 170.5, "createdAt": "…", "updatedAt": "…",
"recipient": { "id": "…", "handle": "elonmusk", "name": "…", "avatarUrl": "…", "wallet": "…", "claimed": false }
}
]
}GET /api/gp/coin/{id}one coin by id or by mint: everything above plus the description, the launcher, the launch transaction, the last 50 payouts and the top 50 holders read live from the token accounts (empty when the rpc is slow).
- holders
- 0 to skip the holder read
curl https://greenpill.fun/api/gp/coin/<id-or-mint>
{
"coin": {
…, "description": "…", "launcherWallet": "…", "launchTx": "…", "devBuyLamports": "0",
"payouts": [ { "id": "…", "coinId": "…", "mint": "…", "symbol": "ELON", "handle": "elonmusk",
"avatarUrl": "…", "wallet": "…", "lamports": "…", "sol": 0.42, "usd": 71.6,
"signature": "…", "at": "…" } ],
"holders": [ { "address": "…", "balance": "123456000000", "pct": 12.34 } ],
"totalSupply": "1000000000000000"
}
}GET /api/gp/payoutspayout receipts, newest first. each row is one distribute that paid an x account, with the transaction signature.
- handle
- only payouts to this x account
- mint
- only payouts from this coin
- limit
- up to 500, default 50
curl "https://greenpill.fun/api/gp/payouts?handle=elonmusk&limit=20"
{
"payouts": [ { "coinId": "…", "mint": "…", "symbol": "ELON", "handle": "elonmusk", "avatarUrl": "…",
"wallet": "…", "lamports": "420000000", "usd": 71.6, "signature": "…", "at": "…" } ],
"totalLamports": "…", "totalUsd": 0
}GET /api/gp/recipients/resolvethe public profile behind a handle, as the launch form shows it. does not create a wallet; the wallet is created at launch.
- handle
- required. with or without the @
curl "https://greenpill.fun/api/gp/recipients/resolve?handle=elonmusk"
{ "id": "44196397", "handle": "elonmusk", "name": "Elon Musk", "avatarUrl": "…", "followers": 200000000 }
// 404 { "error": "x account not found" }GET /api/gp/statssite totals: sol and usd paid to x accounts across live coins, live coins, distinct accounts paid, time of the last payout.
curl https://greenpill.fun/api/gp/stats
{
"paidLamports": "…", "paidSol": 12.3, "paidUsd": 2097.2,
"liveCoins": 7, "recipients": 5, "lastPayoutAt": "…",
"solUsd": 170.5, "recipientBps": 10000
}nothing above is needed to verify a coin. the fee sharing config address on each coin page is a pump.fun program account: read it on solscan and you see the two shareholders and their bps. the recipient wallet's balance and transaction history are public on solana. the keeper's distributes are ordinary transactions signed by the operator wallet.
authenticated routes (launch/prepare, launch/confirm, trade/prepare, me) take a privy bearer token and are used by the site itself; they are not a stable api.