Skip to main content

Overview

grpc.raze.bot exposes a Yellowstone Geyser gRPC feed (Dragon’s Mouth) — the same geyser.Geyser/Subscribe interface used by the major Solana data providers. It is the lowest-latency way to consume raw account, slot, transaction, block metadata and entry updates from Raze, and works with the standard yellowstone-grpc client libraries unchanged.
For higher-level, pre-parsed events (trades, deploys, migrations, alerts) use the Streaming WebSocket API at wss://ws.raze.bot/ws/sol. Use gRPC when you want the raw geyser stream and minimum latency.

Authentication

Pass your API key as the x-token gRPC metadata header on the channel. This is the same key you use as X-Api-Key / ?apikey= on the REST and RPC endpoints — only the header name differs (Yellowstone clients call it x-token).
Requests without a valid token are rejected with UNAUTHENTICATED — on Subscribe and on every unary method (GetSlot, GetLatestBlockhash, GetBlockHeight, IsBlockhashValid, GetVersion, Ping, SubscribeReplayInfo), all of which this endpoint implements.

Subscribe

A single Subscribe stream carries every update type. Filter by account, transaction, transactionsStatus, slot, blockMeta or entry in the SubscribeRequest — see the support table below for the two exceptions.
The stream is bidirectional on the wire but read-once in practice: only the first SubscribeRequest is applied. Re-sending one to change filters mid-stream does nothing today — reconnect with the new filters instead.

Update types

The SubscribeRequest accepts the standard Yellowstone filter maps; set the ones you need and leave the rest empty: Two limits worth knowing before you write the request, because both are answered with an explicit error rather than partial data:
  • transactionsStatus carries no account keys (slot, signature, isVote, index, err), so accountInclude / accountExclude / accountRequired / signature cannot be honoured on that map and are rejected. Use transactions when you need account-level predicates.
  • blocks requires a full-block subscription upstream, which this endpoint does not carry. Use blocksMeta plus transactions (or entry).
fromSlot (replay) is not supported here: the subscription is declined rather than silently served live-from-now.
commitment is currently accepted and not applied: the merged feed is a deduplicated union delivered at processed speed, and every subscriber receives updates as they arrive. Do not rely on CONFIRMED / FINALIZED to delay or filter what you receive — use the slots stream to track commitment transitions yourself. Account-data predicates (memcmp, datasize, tokenAccountState, lamports) are likewise parsed but not applied today.
Transactions cost roughly 10× the bandwidth of account updates — scope your filters (accountInclude, accountRequired) as tightly as possible to keep latency low.