Developers

Build on Chatple

A public, read-only API for trading terminals, bots, screeners and launchpad builders: every Chatple coin, its trades and candles, a live stream of launches and trades, a drop-in stream overlay, and how to recognise Chatple pools on Solana. No key needed; CORS is open.

Base URL · https://chatple.comJSON · UTF-8Fair use · cache what you can

Quick start

One import, no key, no dependencies — works in the browser and in Node 18+. Or generate a client from the OpenAPI spec.

import { Chatple } from "https://chatple.com/sdk/chatple.js";

const chatple = new Chatple();

// every new Chatple coin and every trade, live
const stop = chatple.subscribe({
  onLaunch: (coin) => console.log("launched", coin.symbol, coin.url),
  onTrade: (t) => console.log(t.side, t.symbol, Number(t.quoteAmount) / 1e9, "SOL"),
});

const { tokens } = await chatple.tokens({ limit: 20 });           // newest coins
const { candles } = await chatple.candles(tokens[0].mint, { tf: "5m" });
const overlay = chatple.overlayUrl(tokens[0].mint, { pos: "br" }); // OBS browser source

REST endpoints

GET/api/v1/tokens

Chatple coins, newest first (or recently graduated), with live bonding-curve state.

sort
new (default) | graduated
limit
1–100, default 50
before
ISO time — page with the previous response's next
{
  "tokens": [{
    "mint": "9NQV…sCHAT", "symbol": "MRCC", "name": "Mr.ChanChan",
    "image": "https://uploads.chatple.com/…", "creator": "44Ep…olzb",
    "createdAt": "2026-10-03T13:45:12.000Z", "url": "https://chatple.com/t/9NQV…sCHAT",
    "price": 2.8e-8, "marketCapSol": 28.0, "curveProgress": 0.01, "graduationSol": 85,
    "graduated": false, "pool": "…", "dammPool": null,
    "config": "4Ygeb2Bv…", "preset": "fair", "quoteMint": null
  }],
  "next": "2026-10-03T13:45:12.000Z"
}
GET/api/v1/tokens/{mint}

One coin: live curve state, 24h stats (volume, trades, price change) and who its creator fees go to.

{
  "token": { …same shape as above… },
  "stats": { "volume24h": 1.2, "trades24h": 5, "change": { "m5": 0, "h1": -0.03, "h6": -0.03, "h24": -0.03 } },
  "feeRecipients": [{ "kind": "handle", "key": "twitch:mr_chanchan", "label": "twitch/mr_chanchan", "bps": 10000 }]
}
GET/api/v1/tokens/{mint}/trades

Trades, newest first. Amounts are raw integers (lamports · 6-decimal token units).

limit
1–500, default 100
before
ISO time — paging
{
  "trades": [{ "signature": "5x…", "side": "buy", "wallet": "8P4u…uRyn",
    "quoteAmount": "500000000", "tokenAmount": "17123456789012", "price": 2.89e-8,
    "viaCaller": false, "time": "2026-10-03T13:46:01.000Z" }],
  "next": "2026-10-03T13:46:01.000Z"
}
GET/api/v1/tokens/{mint}/candles

OHLCV candles (SOL per whole token), oldest first — continuous (each opens at the previous close). Includes DAMM v2 trades after graduation.

tf
1m | 5m | 15m | 30m | 1h | 1d
limit
up to 1000, default 300
{ "candles": [{ "time": 1791020700, "open": 2.79e-8, "high": 2.89e-8, "low": 2.79e-8, "close": 2.89e-8, "volume": 0.7 }] }
GET/api/v1/launchpad

How to recognise a Chatple pool on chain, and each launch preset's curve and fee parameters.

{
  "name": "Chatple", "dbcProgram": "dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN",
  "configs": [{ "preset": "fair", "config": "4Ygeb2Bv…", "migrationQuoteThresholdSol": 85,
    "antiSniper": { "startingFeeBps": 5000, "endingFeeBps": 100, "durationSeconds": 120 }, … }],
  "identify": { "launchpadSigner": "4XD9…vDY1", "memo": "chatple:launch", "vanityMintSuffix": "CHAT" }
}

Live data stream

GET /api/v1/stream is a Server-Sent Events feed of new launches and trades across Chatple (or one coin with ?mint=). Events carry an id, so a reconnecting client resumes where it left off.

events
launch,trade (default both)
mint
only this coin's trades
since
ISO time to replay from (or the Last-Event-ID header)
const es = new EventSource("https://chatple.com/api/v1/stream?events=launch,trade");
es.addEventListener("launch", (e) => {
  const coin = JSON.parse(e.data);           // same shape as /api/v1/tokens
  console.log("new coin", coin.symbol, coin.url);
});
es.addEventListener("trade", (e) => {
  const t = JSON.parse(e.data);              // { mint, symbol, side, wallet, quoteAmount, price, signature, time }
  console.log(t.side, t.symbol, Number(t.quoteAmount) / 1e9, "SOL");
});

Stream overlay widget

A transparent, embeddable card for OBS / Streamlabs (browser source, 1920×1080) or any page: live price and market cap in USD, the fees the coin has earned for its creator, a scan-to-buy QR, and an alert with a chime on every buy.

https://chatple.com/overlay/{mint}?pos=bl&scale=1&sound=1&sells=0

pos    bl | br | tl | tr   corner of the 1920×1080 canvas
scale  0.5 – 2
sound  0 to mute the buy chime
sells  1 to alert on sells too

<iframe src="https://chatple.com/overlay/{mint}?pos=bl" width="1920" height="1080"
        style="border:0;background:transparent" allowtransparency></iframe>

Use our curve & fee presets in your launchpad

Building your own launchpad on Meteora DBC? GET /api/v1/presets returns Chatple's tuned configurations as complete Meteora ConfigParameters — fair launch, stream mode (10-minute anti-sniper) and fast graduation (30 SOL). The anti-sniper scheduler is solved to land on exactly 1.00%, not the SDK's 1.0093%. Spread one into createConfig with your own keys:

import BN from "bn.js";
import { DynamicBondingCurveClient } from "@meteora-ag/dynamic-bonding-curve-sdk";

const { presets } = await (await fetch("https://chatple.com/api/v1/presets")).json();
const stream = presets.find((p) => p.name === "stream").configParameters;
// numeric fields arrive as strings: revive them as BN where the SDK expects BN
const params = JSON.parse(JSON.stringify(stream), (k, v) => (typeof v === "string" && /^\d+$/.test(v) ? new BN(v) : v));

const client = new DynamicBondingCurveClient(connection, "confirmed");
const tx = await client.partner.createConfig({
  ...params,
  config: configKeypair.publicKey,
  feeClaimer: yourTreasury,
  leftoverReceiver: yourTreasury,
  quoteMint: NATIVE_MINT,
  payer: wallet.publicKey,
});

Recognising Chatple pools on chain

Chatple coins are Meteora Dynamic Bonding Curve pools created with one of our config keys, then migrated to Meteora DAMM v2 with the LP permanently locked. Every launch transaction is co-signed by the Chatple launchpad signer and carries the memo chatple:launch; mints usually end in …CHAT.

PresetDBC configCurve & fees
fair4Ygeb2BvXpKmqLHrR873YCpLuR624BmcKSFvK5ps8iHYanti-sniper 49.5% → 1% over 2 min · graduates at 85 SOL
stream5ohmoN58xk1RNnCJrYG3x5v1aCRv6LpS9a5D4dkvD6FEanti-sniper 49.5% → 1% over 10 min · 85 SOL
fastDtd4A59XWPsCPtrxrCBwZ5HzB6jHe6W9xhVGu35ZZGyzanti-sniper over 2 min · graduates at 30 SOL
programdbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqNMeteora DBC · 62% of trading fees to the creator side · 1% after the anti-sniper window

Machine-readable: GET /api/v1/launchpad.

Building something with Chatple data?

Tell us at x.com/Chatple_com or t.me/chatple_com — we'll list integrations here.

Not investment advice · Terms · Privacy
Developers — Chatple API · Chatple