On this page
- Venues live
- pump.fun bonding curve, PumpSwap pools
- Trading fee
- 2% a trade, 1.6% with an invite
- Keys
- Yours. Blix builds, you sign, Blix sends
- Sends
- Helius Sender staked path + RPCs, re-sent every second until it lands
- Stream
- WebSocket, PumpPortal-compatible methods
- Data
- The 61-endpoint API and MCP connector, same key
- Price
- No plan, no monthly bill: the 1% is the price
- Community
- The BLIX Discord, with your account
Your key comes with your account. Sign in to BLIX with Google and open this page again: your API keys are at the top, made and revoked in one click (a key is shown once). Every call below sends it as authorization: Bearer $BLIX_KEY; the examples read it from BLIX_KEY. Already registered? Log in. Questions: the BLIX Discord.
The four calls
| Call | What it does | Reads |
|---|---|---|
POST /api/v1/quote | What a buy or sell fills at right now on pump.fun's curve or in its PumpSwap pool: tokens out or SOL out, the minimum at your slippage, Blix's fee, the priority fee and tip, the market cap | The coin's accounts, once |
POST /api/v1/trade/build | The same, plus the unsigned transaction (base64): compute budget, priority fee, the swap, Blix's fee transfer, the Sender tip. Valid for about 90 seconds | The coin's accounts and a fresh blockhash |
POST /api/v1/trade/send | Your signed transaction goes out over Helius Sender's staked connections and the RPCs at once, is re-sent every second until a block holds it, and the answer says where it landed | Signature status until it lands or expires |
GET /api/v1/stream | A WebSocket with PumpPortal's message names: new coins, a coin's trades, a wallet's trades, migrations. A bot written against PumpPortal's stream points here and keeps working | The same trade feed the terminal shows |
Two more: GET /api/v1/trade/<signature> says where a sent trade stands, and GET /api/v1/me returns the key's account, fee rate and limits. Keys are made on this page when you are signed in (/api/v1/keys); GET /api/v1/usage is your ledger. Every endpoint is also listed on the API page.
The flow, in curl
export BLIX_KEY="blx_live_…" # from https://blixvip.com/trade-api, signed in
export WALLET="<your wallet address>"
MINT="<the coin's mint>"
# 1. a quote: what 0.1 SOL buys right now, every fee shown
curl -s https://blixvip.com/api/v1/quote -H "authorization: Bearer $BLIX_KEY" -H "content-type: application/json" \
-d "{\"wallet\":\"$WALLET\",\"mint\":\"$MINT\",\"side\":\"buy\",\"sol\":0.1,\"slippageBps\":300}"
# 2. the unsigned transaction (base64 in .transaction), valid ~90 s
curl -s https://blixvip.com/api/v1/trade/build -H "authorization: Bearer $BLIX_KEY" -H "content-type: application/json" \
-d "{\"wallet\":\"$WALLET\",\"mint\":\"$MINT\",\"side\":\"buy\",\"sol\":0.1}" > build.json
# 3. sign it with your own key (any Solana library), then send the signed bytes back
curl -s https://blixvip.com/api/v1/trade/send -H "authorization: Bearer $BLIX_KEY" -H "content-type: application/json" \
-d "{\"transaction\":\"<signed, base64>\"}"
# → { "signature": "…", "status": "confirmed", "slot": 3…, "landedMs": 1180, "feeSol": 0.001, "explorer": "https://solscan.io/tx/…" }The request body
| Field | Meaning |
|---|---|
wallet | Your wallet's address: the signer and fee payer. Blix reads its SOL and token balances to size and check the trade |
mint | The coin. pump.fun curve coins and PumpSwap pools today; other pools answer 409 until Jupiter routing ships |
side | buy or sell |
sol | Buy: SOL to spend, fees included (Blix's fee comes out of it). At most 2 |
pct · tokens | Sell: percent of what the wallet holds (default 100), or a raw token amount as an integer string |
slippageBps | Default 300 (3%). The build carries the minimum you accept; the chain refuses a worse fill and nothing is spent |
priorityFeeSol · tipSol | Optional. Per-trade priority fee (default: what the coin's busiest recent trades paid, 0.0001 to 0.001 SOL) and Helius Sender tip (default 0.00001 SOL; 0.001 or more opens every path Helius has, Jito's included) |
Node
// Node 20+. npm i @solana/web3.js bs58
import { Keypair, Transaction } from "@solana/web3.js";
import bs58 from "bs58";
const H = { authorization: `Bearer ${process.env.BLIX_KEY}`, "content-type": "application/json" };
const kp = Keypair.fromSecretKey(bs58.decode(process.env.WALLET_SECRET)); // your key stays in this process
const api = (p, body) => fetch(`https://blixvip.com/api/v1/${p}`, { method: "POST", headers: H, body: JSON.stringify(body) }).then((r) => r.json());
const built = await api("trade/build", { wallet: kp.publicKey.toBase58(), mint: MINT, side: "buy", sol: 0.1, slippageBps: 300 });
if (!built.transaction) throw new Error(built.error);
console.log("buys", built.quote.tokensOutUi, "tokens, fee", built.quote.feeSol, "SOL");
const tx = Transaction.from(Buffer.from(built.transaction, "base64"));
tx.sign(kp);
const sent = await api("trade/send", { transaction: tx.serialize().toString("base64") });
console.log(sent.status, sent.signature, sent.landedMs, "ms", sent.explorer);
// later: sell everything
const sell = await api("trade/build", { wallet: kp.publicKey.toBase58(), mint: MINT, side: "sell", pct: 100 });Python
# pip install solders requests
import base64, os, requests
from solders.keypair import Keypair
from solders.transaction import Transaction
H = {"authorization": f"Bearer {os.environ['BLIX_KEY']}"}
kp = Keypair.from_base58_string(os.environ["WALLET_SECRET"]) # your key stays in this process
api = lambda p, body: requests.post(f"https://blixvip.com/api/v1/{p}", json=body, headers=H, timeout=120).json()
built = api("trade/build", {"wallet": str(kp.pubkey()), "mint": MINT, "side": "buy", "sol": 0.1, "slippageBps": 300})
tx = Transaction.from_bytes(base64.b64decode(built["transaction"]))
tx.sign([kp], tx.message.recent_blockhash)
sent = api("trade/send", {"transaction": base64.b64encode(bytes(tx)).decode()})
print(sent["status"], sent["signature"], sent.get("landedMs"), "ms")The live stream
wss://blixvip.com/api/v1/stream, with your key as Authorization: Bearer or ?key= from a browser. Messages in and out are JSON. The method names and event fields are PumpPortal's, so a bot already written against its data stream points at Blix by changing one URL.
// Node 22+ (global WebSocket) or any browser. PumpPortal's method names, so an existing bot just changes the URL.
const ws = new WebSocket("wss://blixvip.com/api/v1/stream?key=" + process.env.BLIX_KEY);
ws.onopen = () => {
ws.send(JSON.stringify({ method: "subscribeNewToken" })); // every pump.fun launch
ws.send(JSON.stringify({ method: "subscribeTokenTrade", keys: [MINT] })); // every trade of these coins
ws.send(JSON.stringify({ method: "subscribeAccountTrade", keys: [WALLET] })); // every trade by these wallets
ws.send(JSON.stringify({ method: "subscribeMigration" })); // curve → PumpSwap pool
};
ws.onmessage = (e) => {
const m = JSON.parse(e.data);
if (m.txType === "buy" || m.txType === "sell") console.log(m.mint, m.txType, m.solAmount, "SOL", m.marketCapSol, "mcap SOL", m.pool);
};| Method | Event fields |
|---|---|
subscribeNewToken | txType: "create", mint, name, symbol, traderPublicKey (the dev), marketCapSol, solAmount (the dev's first buy), pool: "pump" |
subscribeTokenTrade { keys } | signature, mint, traderPublicKey, txType: "buy"|"sell", tokenAmount, solAmount, vTokensInBondingCurve, vSolInBondingCurve, marketCapSol, bondingCurveProgress, pool: "pump"|"pump-amm", slot |
subscribeAccountTrade { keys } | The same trade event, for every trade signed by those wallets |
subscribeMigration | txType: "migrate", mint, poolAddress, pool: "pump-amm" |
What a trade costs, exactly
| Who pays | How much | |
|---|---|---|
| Blix's fee | You, inside the transaction, to Blix's fee wallet | 2% of the SOL side; 1.6% if you joined through an invite. Your inviter earns 40% of it |
| pump.fun's fee | You, to pump.fun, inside the swap | About 1% on the curve (protocol + creator share), the pool's own tier after bonding; shown in every quote as what the swap fills at |
| Priority fee | You, to the block's validator | Default: what the coin's busiest recent trades paid, 0.0001 to 0.001 SOL; set priorityFeeSol to choose |
| Sender tip | You, to Helius Sender's tip account | Default 0.00001 SOL for the staked path; 0.001 or more opens every path (Jito's too) |
| Network fee | You | 0.000005 SOL |
| Subscription | Nobody | None. There is no plan to pick and no monthly bill |
A quote shows every one of these before you build. The fee wallet, the referral share and the per-trade ledger are the same ones the terminal's one-click trades use; the API is another door to the same rail.
The rules, written into the product
- Your key never leaves your machine. Blix builds the transaction; you sign it. There is no custodial "lightning" wallet and no endpoint that takes a private key.
- The fee rides inside the transaction. Every build carries Blix's fee transfer and
sendonly accepts transactions Blix built, so there is no path around it and nothing to settle later. Blix's fee: 2% of the SOL side of the trade, 1.6% when you joined through an invite; your inviter earns 40% of it. - Sane defaults. Slippage defaults to 3% (
slippageBps: 300), capped at 50%. The priority fee follows what the coin's busiest recent trades paid, between 0.0001 and 0.001 SOL. One buy spends at most 2 SOL. - Honest landing reports.
sendanswers with the signature, the slot and whether the transaction landed, failed (with pump.fun's reason in words) or expired, never a bare "success". - No launch bundles. There is no multi-wallet create and no bundle endpoint. Buy, sell and (later) create, one wallet at a time.
Limits
| Limit | Per key |
|---|---|
| Quotes and builds | 120 a minute |
| Sends | 60 a minute |
| Live connections | 3; up to 200 coins and 200 wallets per connection |
| Keys | 5 per account |
| Buy size | 2 SOL per transaction |
Errors are JSON { "error": "a sentence" } with a 4xx status; a 409 explains why the trade cannot happen (not enough SOL, nothing to sell, the coin just bonded and trades in its pool now, the price moved past your slippage). Nothing is spent on a refused or failed transaction.
What is live, and what is next
| State | |
|---|---|
| pump.fun bonding curve and PumpSwap pools, built by hand | Live: quote, build, send, stream |
| Raydium LaunchLab (Bonk, letsbonk) built by hand | Next: the feed decoder exists, the buy and sell instructions follow |
| Every other launchpad and pool (Meteora DBC and DAMM v2, Moonshot, Boop, Bags, Raydium, Orca) through Jupiter's router with Blix's fee | Next: one integration covers the long tail |
| MCP tools for build and send, so an agent reads Blix's Pulse and holders and acts with one key | After that |
| Token creation (pump.fun create, LaunchLab create), one wallet at a time | Only if customers ask. No launch bundles, ever |
A coin the hand-built path does not recognise answers 409 with "route": "unsupported" rather than a wrong transaction.
Data, AI and trading under one key
This is the part nobody else bundles. The key that signs for your bot also reads /api/pulse (every new pair, final stretch and migrated coin with holder stats and the AI's call), /api/holders/<mint> (dev, snipers, bundles, top-10 share), /api/candles/<mint> (candles from real trades) and /api/research/<mint> (the deep read with a grade and a plan). A bot that filters on the holder ledger and the AI's grade before it builds a buy is a few lines, and the MCP connector gives an agent the same data as tools. See the trading-bot guide.
The BLIX community
Every account comes with the BLIX Discord: the people trading on the terminal, the narratives as they form, feature drops before they are announced, and the team answering questions. Join the Discord once you have signed up.
More on the trade API
Memecoins are extremely risky and most go to zero. Nothing on this page is financial advice.
Frequently asked questions
Does Blix hold my private key?
No. build returns an unsigned transaction; you sign it with your own key and post the signed bytes to send. There is no custodial wallet in the API.
What does the trade API cost?
2% of the SOL side of each trade, 1.6% if you joined BLIX through an invite, paid inside the transaction to Blix's fee wallet. No subscription, no per-call price, no key fee. Priority fees and Sender tips are yours and shown in every quote.
Can I just use send as a free relay?
No. send only accepts transactions build made, which carry the fee. Build your own transaction and you send it yourself, as you can today.
Which coins can it trade?
Today: any coin on pump.fun's bonding curve or in its PumpSwap pool, which is nearly every memecoin in its first hours and days. Other launchpads and pools come through Jupiter routing next; until then they answer 409 with route: "unsupported".
How fast does a trade land?
The build reads the coin's accounts once and needs no router round trip; the send goes to Helius Sender's staked connections and the RPCs at the same time and is re-sent every second until a block holds it. The answer carries landedMs, measured from the send, and the slot. Speed also depends on your priority fee and tip, both yours to set per trade.
Is the stream compatible with PumpPortal's?
The method names (subscribeNewToken, subscribeTokenTrade, subscribeAccountTrade, subscribeMigration) and the trade event's fields follow PumpPortal's, so an existing client changes one URL. The source is Blix's own decoding of pump.fun and PumpSwap, the same feed the terminal shows.
How do I get a key?
Create a BLIX account (sign in with Google) and open this page again: your keys are at the top. Make one, copy it once, keep it private. Revoke it there too.

