raptor.trade

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_TOKEN

Authentication

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.

client → server
[
  { "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

HTTP cannot stream. To receive live inserts, updates, and deletes, open a WebSocket connection or use Yellowstone gRPC- both take the same method and params.

SDK

The @raptortrade/client SDK wraps the request, batching, and decoding behind a typed client - see the HTTP SDK.