X1.NinjaX1.Ninja

Developer API

Programmatic access to every pool, trade, candle, and wallet on XDEX. Free tier available — sign up with your Solana wallet.

Plans

FreeStarterSOONProSOON
PriceFree$19/mo$99/mo
Monthly quota500,000 req1,000,000 req5,000,000 req
Rate limit60 req/min600 req/min1,500 req/min
EndpointsPools, trades, OHLCV+ search, higher quota+ live trade stream
SupportCommunityEmailEmail, priority

Free tier is open today — sign up with your wallet and start building. Paid tiers are pricing-finalized and launch shortly. Quota resets the 1st of each month UTC.

Base URL & authentication

Base URLhttps://api.x1.ninja

Every request must include your API key in the Authorization header:

curl -H "Authorization: Bearer x1_your_key_here" \
  https://api.x1.ninja/v1/pools?limit=10

Keep your key server-side only. Exposing it in a public site or repo lets anyone consume your quota.

Quick examples

Node / TypeScript
const res = await fetch('https://api.x1.ninja/v1/pools?limit=10', {
  headers: { 'Authorization': `Bearer ${process.env.X1_API_KEY}` },
});
const { pools } = await res.json();
console.log(pools[0].baseToken.symbol, '@', pools[0].priceUsd);
Python
import os, requests

r = requests.get(
    'https://api.x1.ninja/v1/pools',
    params={'limit': 10},
    headers={'Authorization': f'Bearer {os.environ["X1_API_KEY"]}'},
)
for p in r.json()['pools']:
    print(p['baseToken']['symbol'], p['priceUsd'])

Endpoints

MethodPathDescriptionMin tier
GET/v1/poolsPaginated list of all pools with prices, volume, liquidity, market capfree
GET/v1/pools/{address}Single pool — full detail including reserves, token metadata, holdersfree
GET/v1/trades/{address}Trade history for a pool (buys + sells + LP events)free
GET/v1/ohlcv/{address}OHLCV candle data (1m / 5m / 15m / 1h / 4h / 1D)free
GET/v1/searchSearch tokens and pools by symbol, name, or addressstarter
GET/v1/stream/tradesLive trade stream (Server-Sent Events) for any poolpro

All endpoints return JSON. All successful responses include X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers.

Rate limits & errors

  • Exceeding your rate limit returns HTTP 429 with a Retry-After header.
  • Invalid or disabled keys return HTTP 401.
  • Requests to an endpoint above your tier return HTTP 403.
  • Upstream (on-chain) failures return HTTP 503 with Retry-After: 60.

Fair use

Free-tier keys are for evaluation, hobby projects, and small integrations. Abusive patterns — scraping everything repeatedly, sharing a key across many clients, bypassing tier limits — will result in the key being revoked. Build something legitimate and we'll support you.