Overview
OrbitFlare Jetstream v2 is a high-performance gRPC service for real-time streaming of Solana transactions. It delivers the same minimal-latency feed as v1 over a richer, more flexible protocol — letting you adjust your subscription on the fly and receive pre-computed transaction metadata so your client does less work. v2 is served on the same endpoints as v1 (theJetstreamV2 service is routed by gRPC method path
over the same connection), so nothing about your network setup changes — only the protocol you generate
a client from.
Highlights
- Dynamic filters — add and remove filters while the stream is open, each with a client-chosen
filter_idthat is echoed on every matching transaction. No reconnect required, and each change is acknowledged with aFilterResult. - Opt-in enrichment — request
fee_payer,writable_accounts,program_ids,priority_fee,compute_limit,tx_size, and resolved address-lookup-table addresses directly on each transaction, instead of re-deriving them client-side. - Slot lifecycle streaming — a dedicated
SubscribeSlotsstream emitsALIVE/COMPLETE/DEADevents per slot, with the current leader and parent slot. - Built-in liveness — every message carries a monotonic
sequencenumber for gap detection, and the server emits aHeartbeaton an idle stream. - Enrichment on demand — a v2 transaction is one flat message with the core fields by default; switch on enrichment per subscription to add the extra fields whenever you want them.
Authentication
Authentication is the same as v1: supply your API key in thex-token gRPC metadata header, or use
IP-whitelist authentication. See Authentication for setup details.
Connecting
- Pick the region endpoint closest to your infrastructure (same hosts as v1).
- Generate a client from the
jetstream.v2protobuf definition — see Code Generation in the reference. - Authenticate with your
x-tokenAPI key (or from a whitelisted IP) and open a stream.
How streaming works
SubscribeTransactions is a bidirectional stream — you manage your subscription with the same
connection you receive data on:
- Open the stream and send an
AddFiltersrequest containing one or more filters. Each filter needs at least one ofaccount_include/account_exclude/account_required. (Empty match-everything filters are rejected.) - The server replies with a
FilterResultper filter (accepted, or arejection_reason). - Matching transactions arrive as
FilteredTransactionmessages, each listing thefilter_idvalues it matched. - Send
AddFilters/RemoveFiltersat any time to change what you receive — no reconnect. - On an idle stream the server sends
Heartbeatmessages; use them (andPing/Pong) to confirm liveness. - Track the
sequencenumber to detect any gap, and reconnect (re-sending your filters) if the stream closes.
include_enrichment: true on a filter.
Enrichment is subscription-wide: if any one of your active filters sets
include_enrichment,
every transaction the session receives is enriched. Turn it on per subscription whenever you want
the extra fields.Slot events
OpenSubscribeSlots (a separate, server-streaming RPC, no parameters) to receive a SlotEvent for
each slot transition:
ALIVE— the first shred of the slot was received.COMPLETE— the slot’s last shred was received.DEAD— the slot was skipped, or did not complete before timeout.
current_leader (32-byte pubkey, when the leader schedule is available) and
the parent_slot.
Choosing v1 or v2
v2 is the recommended protocol for new integrations — it’s where enrichment, slot events, and dynamic filtering live. v1 remains available and supported; if you have an existing v1 client there’s no forced migration. The two services run side by side on the same endpoints.Best Practices
- Filtering — always set at least one account constraint, and use a stable unique
filter_idper filter so you can correlate matches and remove filters later. - Enrichment — keep it off unless you need the extra fields; it applies to the whole subscription.
- Reconnection — track
sequencefor gaps and reconnect automatically, re-sending your filters. - Liveness — rely on
Heartbeat/Pingto detect a stalled connection.
See Also
What's New in v2
The full v1-vs-v2 comparison and what each capability saves you.
v2 Protocol Reference
Full v2 Protocol Buffer specification, endpoints, and code generation.
Jetstream (v1)
The v1 overview, client examples, and filtering guide.
Yellowstone gRPC
Full-fidelity Geyser-based streaming with inner instructions and complete metadata.