docs

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.

01/coinsGET /api/gp/coins

live 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 }
    }
  ]
}
02/coinGET /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"
  }
}
03/payoutsGET /api/gp/payouts

payout 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
}
04/resolve an x handleGET /api/gp/recipients/resolve

the 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" }
05/statsGET /api/gp/stats

site 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
}
06/on-chain

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.