Endpoint
x-api-key header on every request.
Key Advantages
- Low latency — direct Geyser plugin access, data arrives before RPC processing
- Rich filtering — filter by account, owner, program, transaction participants, and more
- Bidirectional streaming — update subscription filters without reconnecting
- Typed data — Protocol Buffers provide strict typing and efficient serialization
Service Definition
The Geyser service exposes two bidirectional streaming RPCs and several unary methods:Commitment Levels
| Level | Value | Description |
|---|---|---|
PROCESSED | 0 | Processed by the connected node (fastest, may be reverted) |
CONFIRMED | 1 | Confirmed by supermajority vote |
FINALIZED | 2 | Finalized by supermajority (most reliable) |
Connection Keep-Alive
Some load balancers terminate gRPC connections if the client is idle. The server sends
Ping messages every 15 seconds — reply with a SubscribeRequest containing a ping message with an id field (any int32 value) to keep the connection alive.Subscribe
TheSubscribe RPC is a bidirectional stream. The client sends SubscribeRequest messages to set or update filters, and the server responds with a continuous stream of SubscribeUpdate messages.
SubscribeRequest
Named account subscription filters. See Account Filters.
Named slot subscription filters. See Slot Filters.
Named transaction subscription filters. See Transaction Filters.
Same filters as
transactions, but only returns status (no full transaction data).Named block subscription filters. See Block Filters.
Block metadata filters (no transactions/accounts). See Block Filters.
Entry subscription filters. See Entry Filters.
Commitment level:
PROCESSED (0), CONFIRMED (1), FINALIZED (2).Array of
{ offset: uint64, length: uint64 } objects to receive only specific slices of account data.Send a ping to keep the connection alive. Contains a single field:
id (int32) — set to any integer value. The server responds with a Pong echoing the same id.Start streaming from this slot (replay support).
SubscribeUpdate
Each update contains the matched filter names and exactly one update type:Names of the filters that matched this update.
Server-side timestamp when the update was created.
Example: Subscribe to All Slots
Updating Filters
SinceSubscribe is bidirectional, you can send a new SubscribeRequest at any time to update your filters without reconnecting:
