For traders, terminals & data partners

Get our runner calls — in Telegram or over the API.

Bonding Terminal flags graduating tokens on pump.fun and stonk.fun, plus Pons on Robinhood Chain — every call logged with entry, score, and peak. Solana calls share GET /v1/calls (branch on source); Pons ships on GET /v1/pons/calls. Join Telegram to trade them, or license the feed over REST + HMAC-signed webhooks.

Telegram plans in SOL (Bonding Terminal) + ETH (Pons) · API billed in SOL · Cancel anytime.

Sub-second calls

The same signal our channel + X post — graduations AND smart-money clusters, pushed the instant they fire, before they trend.

Rich, honest payloads

Entry mcap, curve %, score, tier, source (pump / stonkfun / gmgn), StonkFun pair (quote stock ticker + mint), model odds, smart-money inflow, named KOLs, risk, momentum, peak multiple + launchpad deep links.

Three products, one key

Solana firehose covers pump.fun + stonk.fun (?source=). Pons Robinhood kinds ship on /v1/pons/calls. Filter in your app — we don't hide coverage.

Pricing

Two ways in: join Telegram (pump.fun + stonk.fun, or Pons) and trade the calls yourself, or license the API (/v1/calls + /v1/pons/calls) and build on them. Terminals and high-volume integrations are set up directly with us.

Trade the calls yourself — Bonding Terminal covers pump.fun + stonk.fun (SOL), Pons covers Robinhood Chain (ETH). API partners also get GET /v1/calls + /v1/pons/calls.

Bonding Terminal — pump.fun + stonk.fun

Solana channel · pump.fun + stonk.fun · billed in SOL via OnlySubs

7 Days
0.5 SOL/ 7 days
Join on Telegram
Most popular
Monthly
1.5 SOL/ mo
Join on Telegram
3 Months
3 SOL/ 3 mo
1 SOL/mo · save vs monthly
Join on Telegram

Pons — Robinhood Chain

Pons graduation alerts · billed in ETH via OnlySubs

Most popular
Monthly
0.05 ETH/ mo
Join Pons on Telegram
3 Months
0.1 ETH/ 3 mo
≈ 0.033 ETH/mo · save vs monthly
Join Pons on Telegram
6 Months
0.15 ETH/ 6 mo
0.025 ETH/mo · best value
Join Pons on Telegram
What's included
  • AI-powered graduation signals on pump.fun + stonk.fun
  • Pons Robinhood Chain alerts on the dedicated channel
  • Bonding-curve momentum + volume/buy-pressure alerts
  • Smart-money activity + migration odds scoring
  • Sniper / bundle / insider / top-holder risk filters
  • Instant channel access on payment · cancel anytime

Bonding Terminal Telegram plans are billed in SOL; Pons plans in ETH. API plans are USD reference prices, charged in SOL at checkout; a lapsed key returns HTTP 402 until renewed. By subscribing or using the API you agree to our .

Quickstart

Authenticate with Authorization: Bearer <key> (or x-api-key). Base URL https://pumpfunbot.org/api/v1.

1 · Pull calls (REST)

Poll with since = the last next_cursor to stream new calls without gaps or duplicates.

# Solana firehose — pump.fun + stonk.fun + GMGN (branch on data.source)
curl -H "Authorization: Bearer $BT_API_KEY" \
  "https://pumpfunbot.org/api/v1/calls?limit=25"

# stonk.fun only
curl -H "Authorization: Bearer $BT_API_KEY" \
  "https://pumpfunbot.org/api/v1/calls?source=stonkfun&limit=25"

# pump.fun only
curl -H "Authorization: Bearer $BT_API_KEY" \
  "https://pumpfunbot.org/api/v1/calls?source=pump&limit=25"

# Incremental sync — poll with the cursor from the previous response
curl -H "Authorization: Bearer $BT_API_KEY" \
  "https://pumpfunbot.org/api/v1/calls?since=84213&limit=100"

# Smart-money clusters only (early = 4+ wallets, full = 8+ wallets)
curl -H "Authorization: Bearer $BT_API_KEY" \
  "https://pumpfunbot.org/api/v1/calls?kind=cluster_early&limit=25"

# Pons / Robinhood Chain feed (products∋pons)
curl -H "Authorization: Bearer $BT_API_KEY" \
  "https://pumpfunbot.org/api/v1/pons/calls?limit=25"

# Pons power-plays only
curl -H "Authorization: Bearer $BT_API_KEY" \
  "https://pumpfunbot.org/api/v1/pons/calls?kind=fast_fill&limit=25"

# Live "running now" Solana ATH leaderboard
curl -H "Authorization: Bearer $BT_API_KEY" \
  "https://pumpfunbot.org/api/v1/runners?min_peak_mult=2&verified=1"

# Trending · still printing X (new rungs in last 6h — banners / trending tabs)
curl -H "Authorization: Bearer $BT_API_KEY" \
  "https://pumpfunbot.org/api/v1/trending?limit=12&window_hours=6"

# Pons trending board
curl -H "Authorization: Bearer $BT_API_KEY" \
  "https://pumpfunbot.org/api/v1/pons/trending?limit=12"

2 · Receive pushes (Webhook)

We POST each call to your URL and sign the body. Verify the signature, then ack with any 2xx. Non-2xx (or a timeout) triggers automatic retries.

// Verify the HMAC signature on every webhook POST (Node.js)
import crypto from "node:crypto";

app.post("/bonding-terminal/webhook", (req, res) => {
  const sig = req.header("X-PFB-Signature");            // "sha256=<hex>"
  const body = req.rawBody;                              // the EXACT bytes received
  const expected =
    "sha256=" +
    crypto.createHmac("sha256", process.env.BT_WEBHOOK_SECRET)
          .update(body)
          .digest("hex");

  if (!sig || !crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected))) {
    return res.status(401).end();                        // reject forgeries
  }

  // Solana: call.new | call.graduated | call.milestone | call.peak
  // Pons:   pons.call.new | pons.call.milestone | …
  // data.kind + data.source (pump | gmgn | stonkfun) for Solana routing
  const { event, data } = JSON.parse(body);
  if (String(event).startsWith("pons.")) {
    handlePonsCall(event, data);
  } else if (event === "call.new" && data.kind.startsWith("cluster")) {
    handleSmartMoneyCluster(data);
  } else {
    handleCall(event, data);                             // branch on data.source too
  }
  res.status(200).end();                                 // 2xx = delivered (no retry)
});

Response shape (v1)

Stable, versioned payload — we add fields, never rename or remove them without a version bump. Every Solana call carries kind and source (pump / stonkfun / gmgn) so you can route each product.

{
  "tier": "realtime",
  "delay_seconds": 0,
  "count": 1,
  "next_cursor": 84213,
  "data": [
    {
      "id": 84213,
      "kind": "graduation",
      "source": "pump",
      "mint": "6MPYewsYPK3L1ak68Gpc9ajuRjRRsGpnVd4mPTzWpump",
      "symbol": "ANSEM",
      "name": "ansem",
      "called_at": "2026-07-14T18:22:41.918Z",
      "entry_mcap_usd": 12174,
      "curve_pct": 71.4,
      "score": 92,
      "tier": "ELITE",
      "high_conviction": true,
      "model": { "p_graduate": 0.81, "run_5x": 0.34, "expected_time_min": 26, "risk": "low" },
      "smart_money": {
        "buys": 5,
        "sol_inflow": 41.2,
        "kols": [
          { "name": "Ansem", "twitter": "blknoiz06" },
          { "name": "Cupsey", "twitter": null }
        ]
      },
      "risk": { "top10_pct": 18.2, "dev_hold_pct": 0, "sniper_pct": 4.1, "bundle_pct": 2.3, "st_score": 2 },
      "momentum": { "makers": 61, "vol_5m_usd": 38400, "buy_sell_ratio": 2.41 },
      "peak_mult": 35.0,
      "peak_mcap_usd": 426192,
      "graduated": true,
      "seconds_to_grad": 1580,
      "chart_url": "https://dexscreener.com/solana/6MPYewsYPK3L1ak68Gpc9ajuRjRRsGpnVd4mPTzWpump",
      "links": {
        "chart": "https://dexscreener.com/solana/6MPYewsYPK3L1ak68Gpc9ajuRjRRsGpnVd4mPTzWpump",
        "pump": "https://pump.fun/coin/6MPYewsYPK3L1ak68Gpc9ajuRjRRsGpnVd4mPTzWpump",
        "launchpad": "https://pump.fun/coin/6MPYewsYPK3L1ak68Gpc9ajuRjRRsGpnVd4mPTzWpump",
        "solscan": "https://solscan.io/token/6MPYewsYPK3L1ak68Gpc9ajuRjRRsGpnVd4mPTzWpump"
      },
      "attribution": "Called by @PumpbondingBot"
    }
  ]
}

stonk.fun call (webhook snippet)

Same Solana envelope as pump — source: "stonkfun", links.launchpad points at stonk.fun, and pair carries the underlying stock (e.g. AAPL).

{
  "event": "call.new",
  "data": {
    "id": 91002,
    "kind": "graduation",
    "source": "stonkfun",
    "mint": "…",
    "symbol": "GPRO",
    "pair": {
      "quote_symbol": "AAPL",
      "quote_mint": "…",
      "quote_name": "Apple Inc.",
      "quote_category": "stock",
      "quote_category_label": "Stock",
      "quote_logo_url": "https://www.stonkfun.xyz/…"
    },
    "links": {
      "chart": "https://dexscreener.com/solana/…",
      "launchpad": "https://www.stonkfun.xyz/token/…",
      "pump": "https://www.stonkfun.xyz/token/…",
      "solscan": "https://solscan.io/token/…"
    }
  }
}

Smart-money cluster (webhook example)

Clusters fire as call.new with a cluster_early (4+ distinct smart wallets) or cluster_full (8+) kind. Same envelope as a graduation call — branch on data.kind.

{
  "event": "call.new",
  "data": {
    "id": 84980,
    "kind": "cluster_early",          // 4+ distinct smart wallets (cluster_full = 8+)
    "source": "gmgn",
    "mint": "9nbZeozHVfdmrqJJ3DEqiPsXhVvmyaq2gpDp4MqFpump",
    "symbol": "BULLMAN",
    "called_at": "2026-07-15T17:03:11.402Z",
    "entry_mcap_usd": 28900,
    "curve_pct": 63.2,
    "score": 71,
    "tier": "WATCH",
    "high_conviction": false,
    "smart_money": {
      "buys": 4,
      "sol_inflow": 22.8,
      "kols": [ { "name": "Cupsey", "twitter": null } ]
    },
    "risk": { "top10_pct": 21.5, "dev_hold_pct": 0, "sniper_pct": 6.0, "bundle_pct": 3.1, "st_score": 3 },
    "momentum": { "makers": 44, "vol_5m_usd": 19700, "buy_sell_ratio": 1.86 },
    "links": { "chart": "…", "pump": "…", "launchpad": "…", "solscan": "…" },
    "attribution": "Called by @PumpbondingBot"
  }
}

Pons / Robinhood Chain (REST)

Requires products∋pons. Kinds: launch, mid_band, near_grad, fast_fill, graduated, smart_buy, smart_cluster.

{
  "product": "pons",
  "chain": "robinhood",
  "count": 1,
  "next_cursor": 1204,
  "data": [
    {
      "id": 1204,
      "chain": "robinhood",
      "kind": "near_grad",
      "token": "0x…",
      "symbol": "EXAMPLE",
      "called_at": "2026-09-08T13:00:00.000Z",
      "progress": 0.82,
      "entry_mcap_usd": 18400,
      "links": {
        "chart": "https://dexscreener.com/robinhood/…",
        "launchpad": "https://www.ponsfamily.com/launchpad/0x…",
        "explorer": "https://robinhoodchain.blockscout.com/token/0x…"
      }
    }
  ]
}

Filtering & recommended presets

Your key ships the full firehose — every graduation and every smart-money cluster, at min_score = 0. That's deliberate: you get maximum coverage and decide what to surface, instead of us hiding calls you might have wanted. Filter with query params (REST) or branch on the fields (webhook).

Firehose

default · recommended
(no filter)

Everything we fire across pump.fun + stonk.fun + clusters. Best for indexers and terminals that curate on their own UI. Use source, score, tier, and high_conviction in your app.

stonk.fun only

product split
?source=stonkfun

Solana stock-paired calls only. Each row includes pair.quote_symbol (AAPL, etc.). Combine with ?source=pump for a dual board, or pull both and split in your UI. For a live "still printing X" banner use GET /v1/trending?source=stonkfun.

Conservative

highest conviction
?high_conviction=true

Only the back-tested combo (low entry cap + 70-85% curve + uncrowded smart money) that out-performs the average call. Lowest volume, highest hit-rate.

Why we default to min_score = 0

  • Coverage beats curation for data. A suppressed call is optionality we took from you. Some of the biggest runners start as lower-scored early clusters — you can always filter up, but you can't recover a call we never sent.
  • The score is a field, not a verdict. We attach score, tier, high_conviction, smart-money, KOL, risk, and momentum — so your model can weight them however you want.
  • Clusters score differently than graduations. Early smart-money clusters intentionally fire below the graduation bar; a hard score gate would hide exactly the signal most terminals license us for.
  • You can always tighten. Set source, min_score, high_conviction, min_peak_mult, kind, or the mcap/curve bands per request — no key change needed.

Filter reference

ParamWhat it does
sourcepump | gmgn | stonkfun — Solana launchpad provenance (omit = all).
kindgraduation | cluster_early | cluster_full — restrict to one Solana call type.
min_score0-100 quality floor (default 0 = everything you fire).
high_convictiontrue = only the back-tested combo profile.
min_peak_multProven-runner floor for /runners + post-entry events.
min_entry_mcap / max_entry_mcapEntry market-cap band (USD).
max_curve_pctSkip late entries past a curve %.
min_smart / max_smartSmart-money wallet-count band.
graduatedtrue = only tokens that actually bonded.
window_hoursRolling lookback window.
since / limitCursor sync + page size (1-200).
verifiedon /runners: attach realized trader outcomes (still-holding vs sold).
/v1/pons/calls?kind=launch | mid_band | near_grad | fast_fill | graduated | smart_buy | smart_cluster.

Ready to wire it up?

Tell us your terminal, expected volume, and latency needs. We'll issue a key, set your webhook, and get you live the same day.

Request API access