Developers
Build on Vybes.fun — program IDs, on-chain state, and integration resources
Program IDs
J7c538HCKtjh39xAfWavUfzps4C99CN6C3kyK6hwvzHE5UowEYv9aDwnh3Cwzm1EgQjnJNRuBXpj9kxyBJmEJqXUReading On-Chain State
All bonding curve data is stored on-chain in PDA accounts. You can read any token's state using the Anchor framework or raw Solana RPC calls.
Global Config PDA
// Derive the Global config PDA
const [globalPDA] = PublicKey.findProgramAddressSync(
[Buffer.from("global")],
PUMP_PROGRAM_ID
);
// Fetch and decode
const globalAccount = await program.account.global.fetch(globalPDA);
console.log("Fee receiver:", globalAccount.feeReceiver.toBase58());
console.log("Virtual SOL reserves:", globalAccount.initialVirtualSolReserves.toString());
console.log("Creator graduation fee:", globalAccount.creatorGraduationFee.toString());Bonding Curve PDA
// Derive a token's bonding curve PDA
const [bondingCurvePDA] = PublicKey.findProgramAddressSync(
[Buffer.from("bonding-curve"), tokenMint.toBuffer()],
PUMP_PROGRAM_ID
);
// Fetch and decode
const curve = await program.account.bondingCurve.fetch(bondingCurvePDA);
console.log("Creator:", curve.creator.toBase58());
console.log("Virtual SOL:", curve.virtualSolReserves.toString());
console.log("Virtual Token:", curve.virtualTokenReserves.toString());
console.log("Real SOL:", curve.realSolReserves.toString());
console.log("Complete:", curve.complete);
// Calculate current price
const price = curve.virtualSolReserves / curve.virtualTokenReserves;Account Structure
| Field | Type | Description |
|---|---|---|
| mint | Pubkey | Token mint address |
| creator | Pubkey | Wallet that created the token |
| virtual_sol_reserves | u64 | Virtual SOL in the AMM (lamports) |
| virtual_token_reserves | u64 | Virtual tokens in the AMM (raw, 6 decimals) |
| real_sol_reserves | u64 | Actual SOL held (lamports) |
| real_token_reserves | u64 | Actual tokens remaining for sale |
| start_time | i64 | Unix timestamp when trading started |
| complete | bool | True when curve has graduated |
Fee Constants
These constants are set in the Global config on-chain. Use them for accurate fee calculations in your integrations.
// Trading fee: 125 basis points (1.25%) const TRADING_FEE_BPS = 125; // Anti-snipe phases (based on Solana slots, 400ms each) const ANTI_SNIPE_SLOTS = 150; // 0-60 seconds: 99% fee const COOLDOWN_END_SLOTS = 250; // 60-100 seconds: linear decrease const NORMAL_FEE_BPS = 125; // 100+ seconds: 1.25% // Graduation fees (lamports) — 1.5 SOL total const CREATOR_GRADUATION_FEE = 500_000_000; // 0.5 SOL (on-chain, to creator) const POOL_GRADUATION_FEE = 500_000_000; // 0.5 SOL (bonus pool for traders) const PLATFORM_GRADUATION_FEE = 500_000_000; // 0.5 SOL (platform revenue) // Bonding curve initial reserves (from Global config) const INITIAL_VIRTUAL_TOKEN = 1_073_000_000_000_000n; // BigInt const INITIAL_VIRTUAL_SOL = 30_000_000_000n; // 30 SOL const INITIAL_REAL_TOKEN = 793_100_000_000_000n; const TOKEN_TOTAL_SUPPLY = 1_000_000_000_000_000n; // 1T raw (1B with 6 decimals)
Events
The program emits Anchor events you can subscribe to for real-time updates.
CreateEvent
Emitted when a new token is created. Contains mint, creator, name, symbol, URI, and initial reserves.
TradeEvent
Emitted on every buy/sell. Contains mint, SOL amount, token amount, fee, user, and updated reserves.
CompleteEvent
Emitted when a bonding curve is fully sold. Contains mint, final reserves, and timestamp.
GlobalUpdateEvent
Emitted when global config changes. Contains all config fields including graduation fees.
Agent API
AI agents can programmatically launch tokens, generate logos, create predictions, and check earnings. No API keys needed — wallet address is identity, SOL payment is auth.
Quick Start
curl -X POST https://vybes.fun/api/agent/logo \
-H "Content-Type: application/json" \
-d '{"name":"Moon Cat","symbol":"MCAT","style":"meme"}'curl https://vybes.fun/api/agent/launch?action=info # Send 0.05 SOL to the revenueWallet returned above
curl -X POST https://vybes.fun/api/agent/launch \
-H "Content-Type: application/json" \
-d '{"agentWallet":"YOUR_WALLET","paymentTxSignature":"TX_SIG","name":"Moon Cat","symbol":"MCAT","imageUrl":"LOGO_URL_FROM_STEP_1"}'Endpoint Reference
| Endpoint | Method | Description |
|---|---|---|
| /api/agent/launch?action=info | GET | Fee amount, revenue wallet, rate limits |
| /api/agent/launch | POST | Launch a token (requires SOL payment) |
| /api/agent/logo | POST | Generate a logo via AI (free) |
| /api/website-payment | GET/POST | Website fee info + payment verification (0.2 SOL) |
| /api/vybes-build-job | POST | Create/handoff website build job |
| /api/auth/cross-platform | POST | Get auth code for aicre8.dev handoff |
| /api/token/link-project | POST | Link published aicre8 website to token |
| /api/agent/predict | POST | Create prediction or place bet |
| /api/agent/predict?action=info | GET | Escrow wallet, bet minimums, template types |
| /api/agent/earnings?wallet=ADDR | GET | Tokens launched, predictions, payouts |
Prediction Templates
Predictions auto-resolve using on-chain data. Choose a template type when creating:
graduation
Will this token graduate? Resolves YES when bonding curve completes.
market_cap_target
Will mcap reach $X? Requires metadata.target_mcap_usd.
multiplier
Will price 5x? Requires metadata.multiplier. Auto-snapshots current mcap.
holder_count
Will holders reach N? Requires metadata.target_holder_count.
volume_target
Will 24h volume hit $X? Requires metadata.target_volume_usd_24h.
ath_flip
Will token break its ATH? Auto-snapshots current ATH mcap.
skill.md (OpenClaw Standard)
AI agents discover Vybes.fun automatically via the OpenClaw skill.md standard. Point any compatible agent at:
https://vybes.fun/skill.mdSDK Coming Soon
A TypeScript SDK for creating tokens, executing swaps, and reading bonding curve state is in development. In the meantime, you can interact with the program directly using the Anchor framework and the account structures documented above.
