HTTP (Query)
A JSON-RPC 2.0 transport over plain HTTPS POST for the shared market-data catalog. It takes the same method and params as WebSocket and Yellowstone and returns the same data. HTTP is query only - to stream live changes, use WebSocket or Yellowstone.
Endpoint
POST every request to the single HTTP endpoint. There is one URL for the whole catalog; the method selects what you query.
https://rpc.raptor.trade
# JSON-RPC 2.0 over a single HTTPS POST
# auth header: Authorization: Bearer $RAPTOR_TOKENAuthentication
Send your token in an Authorization: Bearer header on every request. Unlike WebSocket (a token query parameter) and Yellowstone (an x-token gRPC metadata header), HTTP carries it as a request header - see HTTP Authentication.
The contract
A request is a JSON-RPC 2.0 object with a method path string identical to WebSocket and Yellowstone (e.g. solana::market::ohlcv) and a params object holding the selectors. Responses are always a JSON array - one entry per request - and each entry's result holds the array of data. The shape is identical over HTTP and WebSocket.
Rows render exactly as they do over WebSocket and Yellowstone: numbers are strings, DateTime and Duration are ISO strings, blobs are 0x hex, a missing value (none) is JSON null, and only booleans stay native. Each data point carries an id alongside its columns.
Query
A POST returns the matching data. The same call from cURL and the TypeScript SDK:
curl -X POST https://rpc.raptor.trade \
-H "Authorization: Bearer $RAPTOR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "solana::market::ohlcv",
"params": {
"base": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263",
"window": "1m",
"limit": 10
}
}'The response envelope - the array, with data under result:
[
{
"jsonrpc": "2.0",
"id": 1,
"result": [
{
"id": 1024,
"base": "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263",
"quote": "So11111111111111111111111111111111111111112",
"timestamp": "2026-06-01T02:16:22.000000000Z",
"window_duration": "PT1M",
"open": "0.00001901",
"high": "0.00001955",
"low": "0.00001888",
"close": "0.00001942",
"base_volume": "48210.7531",
"quote_volume": "48210.7531",
"open_usd": "0.000019",
"high_usd": "0.000019",
"low_usd": "0.000019",
"close_usd": "0.000019",
"volume_usd": "48210.7531",
"data_points": "37",
"window_start": "2026-06-01T02:16:22.000000000Z",
"window_end": "2026-06-01T02:16:22.000000000Z"
}
]
}
]Batching
Send up to 64 queries as a JSON array in one POST to cut round-trips; the response is an array of results in the same order. In the SDK, query_batch tags each result with ok so a single failure does not compromise the rest.
[
{ "jsonrpc": "2.0", "id": 0, "method": "solana::market::ohlcv", "params": { "base": "Dez...", "window": "1m" } },
{ "jsonrpc": "2.0", "id": 1, "method": "solana::market::token", "params": { "mint": "Dez..." } }
]Subscribe
Query only
SDK
The @raptortrade/client SDK wraps the request, batching, and decoding behind a typed client - see the HTTP SDK.
