Endpoint
All history GraphQL traffic goes to a single endpoint:ca.raze.sh, ny.raze.sh, de.raze.sh, nl.raze.sh, sg.raze.sh. Regional haproxy routes the request to the nearest ClickHouse mirror.
Authentication
Same API key as the REST endpoints. Send it in thex-api-key header (or as Authorization: Bearer sk_...):
Interactive Playground (GraphiQL)
Each regional host serves a GraphiQL playground onGET /api/sol/graphql — open it directly in a browser:
Open GraphiQL
When to use GraphQL vs. REST
| You want… | Use |
|---|---|
| A single wallet’s trades, token OHLCV, or simple lookups | REST — lower overhead, cached per-URL |
| Many inputs merged into one response (e.g. trades across 500 signers) | GraphQL — one round trip, one merged result |
| To fetch multiple resources in one request | GraphQL — multi-root queries |
| Only a subset of fields | GraphQL — pick exactly what you need |
Available Queries
The schema mirrors the REST surface. Top-level query fields include:tradesByMint(mint, limit?, sort?, cursor?)— trades for one token minttradesBySigner(signer?, signers?, limit?, sort?, cursor?)— trades for one or many signerstradesBySignerAndMint(signer, mint, limit?, sort?, cursor?)— trades for a wallet on a specific tokensolPrice— current SOL/USD pricesignerCounts(signer)— trade-count aggregates per wallet- …and every other field visible in the GraphiQL schema explorer.
Pagination
All...Connection return types use opaque cursor pagination identical to the REST endpoints. A response with hasMore: true includes a nextCursor string — pass it back as the cursor argument on the next call. Cursors encode (timestamp, signature) so pages are stable even when new rows arrive.
Errors
GraphQL always returns HTTP 200 when the request parses. Application errors appear under anerrors array:
