Skip to docs content

Callout events

Follow pump.fun callouts, author updates, replies, and reposts on your WebSocket. Render initial content, then merge optional enrichment.

Open AsyncAPI spec
Open in chat
Reviewed against product code on September 24, 2026

Select callout accounts

In the Callouts tab, add a pump.fun username, Solana wallet, or profile URL. Labels are optional.

  • Use a Solana wallet for the account, regardless of the token's chain.
  • Minimum: 10 accounts. Pro, Scale, and Ultra Speed: 100. Pending additions count toward the limit.

account/callout

Show content immediately. d.platform is pump_fun; caller username and token address are required.

Optional d.token.chainId uses CAIP-2: solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp for Solana mainnet; eip155:56, eip155:999, eip155:4663, or eip155:8453 for EVM chains. When absent, the chain is unspecified.

Text, media, positions, and token/price details are optional. Optional images: d.caller.image (avatar), d.token.image (token artwork).

  • Optional d.kind: callout, author_update, reply, or repost. Author updates are new posts, not enrichment.
  • d.caller is the tracked actor. d.reference holds the original author, text, and media; d.reference.reply holds a reposted reply and its author, not the reposter.
  • replyId identifies a reply or author update. Optional parentReplyId and rootReplyId link the thread; calloutId identifies the original callout.
  • Exact decimal prices: calloutPrice / maxPriceSol (SOL), calloutPriceUsd / maxPriceUsd (USD). Keep strings or use a decimal library. USD prices do not imply SOL prices.
  • marketCapUsd and multiple are optional numbers. Position values are exact decimal strings: amountHeld is a token amount, pnlPercentage a percentage, and *Usd fields USD amounts.

Callout event type

typescript
type CalloutCaller = {
  username: string;
  image?: string;
};
 
type CalloutReply = {
  caller: CalloutCaller;
  replyId: string;
  parentReplyId?: string;
  rootReplyId?: string;
  text?: string;
  mediaUrl?: string;
};
 
type CalloutEvent = {
  platform: 'pump_fun';
  caller: CalloutCaller;
  kind?: 'callout' | 'author_update' | 'reply' | 'repost';
  text?: string;
  mediaUrl?: string;
  // Required for replies and author updates.
  replyId?: string;
  parentReplyId?: string;
  rootReplyId?: string;
  reference?: {
    caller: CalloutCaller;
    text?: string;
    mediaUrl?: string;
    reply?: CalloutReply;
  };
  position?: {
    amountHeld?: string;
    valueUsd?: string;
    costBasisUsd?: string;
    pnlUsd?: string;
    pnlPercentage?: string;
    realizedPnlUsd?: string;
  };
  token: {
    address: string;
    chainId?: string;
    symbol?: string;
    name?: string;
    image?: string;
  };
  url?: string;
  marketCapUsd?: number;
  // SOL, exact decimal.
  calloutPrice?: string;
  // USD, exact decimal.
  calloutPriceUsd?: string;
  multiple?: number;
  // SOL peak, exact decimal.
  maxPriceSol?: string;
  // USD peak, exact decimal.
  maxPriceUsd?: string;
  calloutId: string;
  createdAt: number;
  receivedAt?: number;
};
 
type CalloutUpdateEvent = CalloutEvent & {
  // Original envelope id, not calloutId.
  updateOf: string;
};
{
  "v": 1,
  "t": "account",
  "op": "callout",
  "id": "callout.0123456789abcdef0123",
  "ts": 1772000001060,
  "d": {
    "platform": "pump_fun",
    "caller": {
      "username": "CryptoCalls",
      "image": "https://cdn.example/avatar.png"
    },
    "kind": "callout",
    "text": "Watching this token.",
    "mediaUrl": "https://cdn.example/chart.png",
    "token": {
      "address": "So11111111111111111111111111111111111111112",
      "chainId": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"
    },
    "url": "https://pump.fun/callouts/So11111111111111111111111111111111111111112/9ab3177c-7b35-4d99-9cca-8b426f74a270",
    "marketCapUsd": 156230.75,
    "calloutPriceUsd": "0.00018750",
    "multiple": 2.5,
    "calloutId": "9ab3177c-7b35-4d99-9cca-8b426f74a270",
    "createdAt": 1772000001000,
    "receivedAt": 1772000001050
  }
}
{
  "v": 1,
  "t": "account",
  "op": "callout",
  "id": "callout.repost-example",
  "ts": 1772000003060,
  "d": {
    "platform": "pump_fun",
    "kind": "repost",
    "caller": { "username": "MarketReader" },
    "token": { "address": "So11111111111111111111111111111111111111112" },
    "calloutId": "9ab3177c-7b35-4d99-9cca-8b426f74a270",
    "createdAt": 1772000003000,
    "reference": {
      "caller": { "username": "CryptoCalls" },
      "text": "Watching this token.",
      "reply": {
        "caller": { "username": "ReplyAuthor" },
        "replyId": "reply-example",
        "text": "Watching the volume too."
      }
    }
  }
}

account/callout_update

Merge optional details into the original event. Do not send another alert.

  • Deduplicate by this envelope's id. d.updateOf points to the original envelope id, not calloutId.
  • Merge supplied fields, including nested caller, token, position, and reference fields. Omitted fields do not erase earlier values.
  • If the original is missing, store or ignore the update; do not treat it as a new callout.
  • Updates are optional. Show initial content even if no update arrives.
{
  "v": 1,
  "t": "account",
  "op": "callout_update",
  "id": "callout_update.556abf0021a7ff937a1a804ec0a0c245d497bcc6090af66179e74ce03c0970e0",
  "ts": 1772000002060,
  "d": {
    "platform": "pump_fun",
    "updateOf": "callout.0123456789abcdef0123",
    "caller": { "username": "CryptoCalls" },
    "kind": "callout",
    "token": {
      "address": "So11111111111111111111111111111111111111112",
      "symbol": "ABC",
      "name": "Alpha Beta",
      "image": "https://cdn.example/token.png"
    },
    "calloutPriceUsd": "0.00018750",
    "calloutPrice": "0.00000125",
    "maxPriceSol": "0.00000450",
    "maxPriceUsd": "0.00067500",
    "calloutId": "9ab3177c-7b35-4d99-9cca-8b426f74a270",
    "createdAt": 1772000001000
  }
}

Use identifiers and timestamps

Deduplicate by envelope id. Replies and reposts share the original calloutId, not the envelope ID.

  • d.createdAt: occurrence creation time.
  • d.receivedAt: optional TweetStream receipt time.
  • Envelope ts: preparation time.