Endpoint
All history GraphQL traffic goes to a single endpoint:https://api.raze.bot/api/sol/graphql. GeoDNS routes the request to the nearest history host automatically.
Authentication
Same API key as the REST endpoints. Send it in thex-api-key header (or as Authorization: Bearer sk_...):
Interactive Playground (GraphiQL)
The History API serves a GraphiQL playground onGET /api/sol/graphql — open it directly in a browser:
Open GraphiQL
When to use GraphQL vs. REST
Batch token enrichment
tokens(mints: [String!]!) returns up to 500 deduplicated mints. Each item is a Token object — request only the nested fields you need:
deploy,priceChanges,tradingVolume(hours),metadata,holders(limit, fresh),supply,sniperBundleStats,topTraders(limit),ohlcv(...)
Trending board example
Leaderboards + per-mint enrichment in one query
Available Queries
The schema mirrors the REST surface. Top-level query fields include:tradesByMint,tradesBySigner,tradesBySignerAndMint,tradingVolume— trades & volume (Trades)topTokens(hours?, limit?, sort?, platform?)— ranked tokens (VOLUMEorTXNS) (Tokens)tokens(mints)— batch per-mint enrichment (Tokens, Trending board)tokenMetadata,tokenHolders,tokenSupply,topTraders,sniperBundleStats— single-mint shortcutsrecentDeploys,deployByMint,recentMigrations,liveDeploys,liveMigrations,migratingDeploys— deploys & live boardsearchTokens,stats,ohlcv,priceChanges,signerCounts— discovery & analyticswalletSummary,walletTokens,walletPerformance— wallets (Wallets)fundingLookup,fundedBy,fundingChain,fundingCluster,holderEdges— funding graph (Funding)pnlLeaderboard,pnlSummary,platformVolume,bondingStats— platform (Platform)recentAlerts,topAlerts,alertsByMint,sentiment,latestSentiment— alerts & sentimentperpMarkets,perpCandles, … — Jupiter Perps (Perpetuals)
GET /api/sol/graphql) for the full introspected schema, autocomplete, and field docs.
See each query’s dedicated page in this section for arguments and return shapes.
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:
