Market data API.Base Sepolia testnet.
Every graduated Crux launch's market, its trades and its candles, read live from the chain. The same numbers the Crux terminal shows: its chart and tape decode trades with the same code.
1. Overview
Base URL https://cruxprotocol.xyz. Every endpoint is a plain GET returning JSON, open to any origin and cached at the edge for a few seconds. Errors return { "error": "…" } with status 400 (bad parameter), 404 (unknown pair) or 503 (the chain couldn't be read; retry).
A market is identified by its pair: the launch token's Uniswap V2 pair with test USDC, whose LP tokens are burned. Every response carries chainId 84532, network "base-sepolia" and testnet true.
2. Pairs
GET/api/pairs· cached 30 s
Every graduated launch's market, newest launch first. Add ?pair=0x… for one.
- venue
- Where the liquidity trades now: "uniswap-v2", or "crux-batch-pool" during a launch's anti-sniper window (one 60-second batch at one price; the pair is empty and locked until the liquidity migrates).
- batchOnlyUntil
- Unix seconds the anti-sniper window ends, while it's on; otherwise null.
- priceUsd
- Mid price from the live reserves, in test USDC per whole token.
- reserves
- base (tokens) and quote (test USDC), as decimal strings.
- liquidityUsd · marketCapUsd
- 2 × quote reserve; price × total supply.
- antiSniperSeconds
- The launch's batch-only window after graduation: 0 when the creator turned anti-sniper off (and for launches before V5).
- creatorVestingDays
- 30, or 0 for an instant unlock.
- urls
- Terminal page, Basescan pair and token, and this pair's trades and candles.
curl https://cruxprotocol.xyz/api/pairs?pair=0xB345b312298ab90bf4b854982D20636EfDfe092D
{ "chainId": 84532, "network": "base-sepolia", "testnet": true,
"pair": {
"id": "0xB345b312298ab90bf4b854982D20636EfDfe092D", "dex": "uniswap-v2",
"baseToken": { "address": "0x5182…B106", "symbol": "V6C", "decimals": 18 },
"quoteToken": { "address": "0x036C…CF7e", "symbol": "USDC", "decimals": 6 },
"venue": "uniswap-v2", "batchOnlyUntil": null,
"priceUsd": 2.56e-9, "liquidityUsd": 1.24, "antiSniperSeconds": 60,
"creatorVestingDays": 30, "lpBurned": true, … } }3. Trades
GET/api/trades?pair=0x…· cached 10 s
A market's trades, newest first: Uniswap V2 swaps, and fills from the anti-sniper batch pool at their batch's uniform price.
- pair
- Required. The market's pair address.
- limit
- Trades per page: default 100, at most 500.
- before
- A block number: only trades in earlier blocks. Each response's next link pages back with it.
- side
- "buy" (USDC in, tokens out of the pool) or "sell".
- priceUsd
- This fill's price in test USDC per token, the 0.3% pool fee included.
- baseAmount · quoteAmount
- Tokens and test USDC traded, as decimal strings.
- venue · batch
- "uniswap-v2", or "batch-pool" with the batch it cleared in.
- viaCruxSolver
- True when the Crux solver traded it to fill a user's intent (the solver then delivers to the user).
- time
- Unix seconds of the trade's block.
curl "https://cruxprotocol.xyz/api/trades?pair=0xB345b312298ab90bf4b854982D20636EfDfe092D&limit=2"
{ "truncated": false, "next": null,
"trades": [
{ "time": 1792833535, "side": "buy", "priceUsd": 2.49e-9,
"baseAmount": "8020987.94…", "quoteAmount": "0.019939",
"venue": "uniswap-v2", "viaCruxSolver": true, "txHash": "0x819b…", … },
{ "time": 1792826788, "side": "buy", "priceUsd": 2.01e-9,
"baseAmount": "49874937.46…", "quoteAmount": "0.1",
"venue": "batch-pool", "batch": 0, "viaCruxSolver": false, … } ] }4. Candles
GET/api/candles?pair=0x…&interval=5m· cached 15 s
OHLCV candles, oldest first, built from the trades as the terminal's chart builds them: each candle opens at the previous close, and the first at the launch's auction clearing price. Quiet intervals have no candle.
- pair
- Required.
- interval
- 1m, 5m (default), 15m, 1h, 4h or 1d.
- limit
- The most recent N candles: default 300, at most 1000.
curl "https://cruxprotocol.xyz/api/candles?pair=0xB345b312298ab90bf4b854982D20636EfDfe092D&interval=1h"
{ "interval": "1h", "intervalSeconds": 3600, "truncated": false,
"candles": [ { "time": 1792825200, "open": 1.67e-9, "high": 2.01e-9,
"low": 1.67e-9, "close": 2.01e-9, "volumeUsd": 0.1, "trades": 1 }, … ] }5. Launches & token list
GET/api/launches· cached 60 s
Every launch, including ones still in their auction, with its phase (?phase=graduated, open, scheduled, closed or cancelled), raise, clearing price, creator vesting and anti-sniper window.
GET/tokenlist.json· cached 60 s
Graduated launch tokens in the standard Uniswap token-list format, for wallets and swap interfaces.
6. Data notes
- Everything is on Base Sepolia testnet: test tokens with no value, priced in test USDC.
- Trades and candles cover at most the last three days of a market;
truncatedis true when older trades exist but aren't included. - Pairs report a mid price from reserves; trades report execution prices (fee included), so the two differ slightly.
- Responses are cached at the edge for the times shown; poll no faster than that.