REST API

Six chains, one API.

Token discovery, safety analysis, wallet intelligence, trading, automated orders, copy trading and multi-launchpad launching — over plain HTTP, from any language. All 86 of them take a free API key, which an agent can issue itself in a single call.

86 endpointsFree during early accessOpenAPI 3.1
MCP
Claude, ChatGPT, Cursor
SDK
TypeScript
CLI
Terminal & CI
REST API
Any language
Start

Try it right now

curl 'https://foxd.xyz/api/v1/tokens/trending?chain=base&limit=5' \
  -H 'Authorization: Bearer fxk_live_…'

The base URL is https://foxd.xyz/api/v1, and every endpoint takes a key. Getting one is not a barrier — see below; an agent can sign itself up and be calling this within one round trip.

Discovery

The API describes itself

All three of these are generated from the same declaration the endpoints are built from, on every request — so they cannot drift from what the server actually does.

  • /api/v1 — every endpoint with its route, scopes and cost, as JSON.
  • /api/v1/openapi.json — OpenAPI 3.1. Point any generator at it.
  • /llms-full.txt — the same surface as plain text, for agents and crawlers.
Auth

Getting a key — including headlessly

Create one in Profile → Settings, or let an agent sign itself up with nothing but a keypair:

# 1. ask for a challenge
curl -X POST https://foxd.xyz/api/v1/auth/challenge \
  -H 'content-type: application/json' \
  -d '{"address":"0xYourAddress"}'

# 2. sign the returned message EXACTLY as given, then:
curl -X POST https://foxd.xyz/api/v1/auth/wallet \
  -H 'content-type: application/json' \
  -d '{"message":"<the exact message>","signature":"0x…","address":"0xYourAddress"}'

# → { "apiKey": "fxk_live_…", "wallets": [ … ] }

That one exchange creates the account, provisions an EVM and a Solana wallet, and returns a key — no browser, no human. Sign in with an existing Google, X, Telegram or email account from a headless client via the device flow instead (/api/v1/auth/device), which is the same pattern gh auth login uses.

Those 5 sign-in endpoints are the only ones that answer without a credential, and they sit on their own hard per-IP limit. Everything else is attributable to an account on purpose: an anonymous call cannot be measured, throttled fairly, or cut off if it turns abusive.

Coverage

What is exposed

Everything the web terminal can do, grouped into 13 modules:

auth5
market13
analytics5
sniper4
copyIntel5
copyExec4
trade6
wallet13
launch8
automation11
alerts3
account5
keys4

The per-endpoint reference, with every request and response field, is in the documentation.

Conventions

Four things that will bite you otherwise

  • Price changes are ratios, not percents. 0.05 means +5%.
  • Amounts are base-unit strings. 0.01 ETH is "10000000000000000" — an 18-decimal integer does not survive a JavaScript float, so numbers are refused where precision matters.
  • 503 means retry, 500 means stop. A backing service being briefly unavailable returns 503 with a Retry-After header; a 500 is a real fault and retrying it will not help.
  • simulated: false is not a safety pass. It means no conclusion was reached — treat it as unknown, not as safe.
Errors

Every failure is structured

{
  "error": {
    "code": "spend_cap_exceeded",
    "message": "this trade ($185.48) would exceed the key's 24h spend cap ($0.00 of $100.00 used)"
  }
}

code is stable and safe to branch on; message is written for a human — or for a model deciding what to do next. Validation failures additionally name the offending fields, so a wrong argument tells you which one and what it wanted.

Get an API key

Public market data needs no key. Everything account-, wallet- or trade-related does. Keys are free, scoped, and revocable in one click.

Create an API keyFull documentation
SniperTradeLaunchAI
REST API — Multi-chain trading, discovery and launching | FoxD