Home Docs $ORLIX B20 Base City Changelog Launch App →
API Live

API Reference

Public REST API for live Base token data. No API key required. Free to use.

No authentication required. All endpoints are open and CORS-enabled — call directly from the browser or any backend.

Base URL

BASE URL
https://orlixai.xyz

All endpoints are served over HTTPS. HTTP requests are redirected to HTTPS automatically.

Rate Limits

30s
Cache TTL
No rate limit
Free
No API key

Responses are cached for 30 seconds server-side. Calling more frequently than that returns the same cached response — there's no benefit to polling faster.

Fair use applies. If you're building something with high traffic, consider caching responses on your end.

POST /api/b20-skill · Agent Deploy

Deploy a B20 token on Base by submitting a deploy intent — a name, a symbol, nothing more. Orlix builds the transaction, signs it, and broadcasts it for you. Your agent never handles a private key.

🔐 The signing key lives inside a Turnkey secure enclave — it is never in Orlix memory, disk, or logs. The deploy allowlist is enforced in this proxy before the key is ever reached, so a prompt-injected or compromised agent cannot bypass it.
🔑 This endpoint requires authentication. Send your agent key in the X-Orlix-Key header. Keys not on the server allowlist get 403. (This is the one authenticated endpoint — all others are open.)
POST https://orlixai.xyz/api/b20-skill

Headers

HeaderRequiredDescription
X-Orlix-KeyYesYour agent key. Must be on the server deploy allowlist.
Content-TypeYesapplication/json

Body parameters

ParameterTypeRequiredDescription
actionstringYesMust be "agent_deploy"
namestringYesToken name, ≤ 64 chars (e.g. Orlix Agent Token)
symbolstringYesTicker, ≤ 11 chars, letters/numbers (e.g. OAT)
variantstringNo"asset" (default) or "stablecoin"
decimalsnumberNo6–18 for asset (default 18); forced to 6 for stablecoin
adminstringNoAdmin/mint-role address. Defaults to the server signer wallet.
saltstringNo32-byte hex CREATE2 salt. Random if omitted.

Response structure

JSON
{
  "ok":               true,
  "status":           "broadcast",
  "txHash":            "0x…",        // broadcast to Base mainnet
  "predictedAddress":  "0x…",        // deterministic token address
  "explorerUrl":       "https://basescan.org/tx/0x…",
  "token": { "name": "…", "symbol": "…", "variant": "asset", "decimals": 18 },
  "signer":            "0x…",        // Turnkey-managed wallet that paid gas
  "chainId":           8453
}

Then poll for the deployed token address with { "action": "receipt", "tx_hash": "0x…" } once the tx is mined.

200 ok:true — signed & broadcast (or ok:false with an error field)
403 Agent key missing or not on the deploy allowlist
200 ok:falseDeploy would revert (simulated first, no gas spent) · Daily deploy limit reached · Invalid intent (details[]) · Signer not configured

cURL

BASH
curl -s https://orlixai.xyz/api/b20-skill \
  -H 'Content-Type: application/json' \
  -H 'X-Orlix-Key: YOUR_AGENT_KEY' \
  -d '{"action":"agent_deploy","name":"Orlix Agent Token","symbol":"OAT"}'
Gas is paid by the server signer wallet, so it must hold ETH on Base. Every deploy is simulated first — a tx that would revert is rejected before it is ever signed, so gas is never wasted. A rolling daily deploy cap protects the wallet, and deploys are serialized to keep nonces safe. B20 is Base-only.

Token object

Every token in liveActivity and trending follows this schema:

FieldTypeDescription
ranknumberPosition 1–100, sorted by 24h volume
addressstringToken contract address (lowercase)
namestringFull token name
symbolstringTicker symbol (e.g. BNKR)
priceUsdstring | nullCurrent price in USD as string
priceChange5mnumber | nullPrice change % over last 5 minutes
priceChange1hnumber | nullPrice change % over last 1 hour
priceChange6hnumber | nullPrice change % over last 6 hours
priceChange24hnumber | nullPrice change % over last 24 hours
volume1hnumberTrading volume (USD) in last 1 hour
volume6hnumberTrading volume (USD) in last 6 hours
volume24hnumberTrading volume (USD) in last 24 hours
liquiditynumberPool liquidity in USD
marketCapnumberMarket cap in USD (falls back to FDV)
fdvnumberFully diluted valuation in USD
buys1hnumberNumber of buy transactions in last 1h
sells1hnumberNumber of sell transactions in last 1h
buys24hnumberNumber of buy transactions in last 24h
sells24hnumberNumber of sell transactions in last 24h
pairAddressstring | nullDEX pair contract address
pairCreatedAtnumber | nullPair creation timestamp (Unix ms)
pairUrlstringDexScreener URL for this pair
dexIdstringDEX identifier (e.g. uniswap, aerodrome)
pairNamestringPair label e.g. BNKR/WETH

Stats object

FieldTypeDescription
totalnumberTotal tokens returned (max 100)
safeCountnumberTokens with liquidity ≥ $50k
totalVol1hnumberSum of 1h volume across all tokens (USD)
tsnumberUnix timestamp (ms) when data was fetched

Examples

JavaScript / TypeScript

JS
const res = await fetch('https://orlixai.xyz/api/token-search?q=BNKR');
const { tokens, total } = await res.json();

tokens.forEach(t => {
  console.log(`${t.symbol} — $${t.priceUsd} (${t.priceChange24h}% 24h)`);
});

Python

PYTHON
import requests

data = requests.get('https://orlixai.xyz/api/token-search?q=BNKR').json()

for token in data['tokens']:
    print(f"{token['symbol']} — ${token['priceUsd']} ({token['priceChange24h']}% 24h)")

cURL

BASH
curl 'https://orlixai.xyz/api/token-search?q=BNKR' | jq '.tokens[] | {symbol, priceUsd, priceChange24h}'
💡 Building something with Orlix data? Tag @orlixai — we'd love to see it.