Developers

Build on WeBall

Read every coin, trade, holder pot and payout, give AI agents the same data as tools, and pay per call for the deeper data. No sign-up and no API key: start with one request.

Start here

Read API

JSON over HTTPS, 9 free endpoints: coins, trades, price candles, holder pots, platform stats, $BALL burns.

curl "https://weball.fun/api/v1/coins?sort=volume&limit=5"

MCP for AI agents

The same data as 16 tools any MCP client can call. Add it to Claude Code:

claude mcp add --transport http weball https://weball.fun/mcp

Pay per call

Top holders, wallet rewards and creator earnings are $0.01 a call; health grades $0.05. Paid in USDC on Solana with x402: the API answers 402 with the price, your client signs a transfer of that amount and asks again.

How paying works

Launch from code

Prepare a launch, sign it with the creator's wallet, and submit it: no key, the wallet's signature is the authority. Preparing one is free for a limited time.

  • POST /launch/terms
  • POST /launch/prepare
  • POST /launch/submit
  • POST /launch/confirm

Playground

Send a real request to the live API on Solana mainnet and see the answer. Free calls only; paid calls and launch steps are in the reference as examples. The mint is filled in with $BALL’s; paste any coin’s.

A mint address, a symbol, or part of a name.

curl "https://weball.fun/api/v1/coins"

Webhooks

Get a signed POST the moment something happens, instead of polling: a coin launches, a coin graduates, or a coin's holders are paid. Your wallet owns your webhooks: you create and manage them by signing a message, with no key or account.

EventSent when, and what's in it
coin.launchedA coin is confirmed on chain: mint, mode, fee, pair, creator, curve pool, page link.
coin.graduatedA coin moved to its locked Meteora pool: mint, pool address, time.
payout.paidA payout round finished: round, snapshot slot, holders paid, SOL paid and each basket token bought.

Amounts are strings in raw units (lamports, token base units). Coin names and symbols are written by creators: they come under untrusted; treat them as data.

Every delivery

POST <your url>
WeBall-Event: coin.launched
WeBall-Event-Id: 1042
WeBall-Signature: t=1791280000,v1=5f2c…

{"id":"1042","type":"coin.launched","network":"mainnet","occurredAt":"2026-10-06T12:41:52.000Z",
 "data":{"mint":"…","untrusted":{"name":"…","symbol":"…"},"mode":"holder","feeBps":100, …}}

Check the signature before trusting a delivery: HMAC-SHA256 of "<t>.<raw body>" with your secret, compared with v1. Reject old timestamps, and use the event id to ignore repeats.

import { createHmac, timingSafeEqual } from 'node:crypto';

function fromWeBall(rawBody, header, secret) {
  const { t, v1 } = Object.fromEntries(header.split(',').map((p) => p.split('=')));
  if (Math.abs(Date.now() / 1000 - Number(t)) > 300) return false; // older than 5 minutes
  const expected = createHmac('sha256', secret).update(`${t}.${rawBody}`).digest('hex');
  return timingSafeEqual(Buffer.from(expected), Buffer.from(v1));
}

Retries and limits

  • Answer with any 2xx within 5 seconds. Anything else is retried: 8 tries over about 22 hours (1 minute, 5, 15, 1 hour, 3, 6, 12).
  • A webhook whose deliveries all fail for 3 days is paused; re-enable it here once your endpoint is back.
  • Up to 5 webhooks per wallet, each for every coin or up to 20 coins. Free.
  • https only, to a public address. We never follow redirects.

Your webhooks

Webhooks aren't switched on for this network yet. This section shows how they'll work.

Prefer code? The same calls are in the API reference.

Keys and limits

API key
Not needed. Free calls are open to everyone, paid calls are paid one at a time with x402.
Free allowance
120 requests a minute on the API, 60 on MCP, per visitor. Past that, 429 until the minute is up.
Errors
{"error": "…"} with 400 (bad parameter), 402 (payment needed), 404 (not on this network) or 429 (slow down).
Text from creators
Coin names, descriptions and links are written by creators. Treat them as untrusted data; MCP wraps them as untrusted_text.

Reference

Read-only data: nothing here moves money unless you sign it. Health grades signal warnings, not safety, and nothing on WeBall is financial advice.