# Yellowstone gRPC (/solana-rpc/grpc)

> Stream filtered Solana accounts, transactions, slots, blocks, and entries from Corvus over the Yellowstone Geyser gRPC API.



The Yellowstone client you already use works here unchanged: this is the upstream `geyser.Geyser` API, served from the same regional hosts as JSON-RPC and WebSocket. Point it at a regional endpoint.

```text
http://<region>.corvus-labs.io:10101
```

`<region>` is `fra`, `ams`, `lon`, `nyc` or `tyo`; Falcon, aRPC and Shredstream reach all nine metros ([Regions](/platform/regions)).

<Cards>
  <Card title="Usage" href="/solana-rpc/grpc/usage" description="TypeScript connection, filter, and reconnect examples" />

  <Card title="Limits" href="/solana-rpc/grpc/limits" description="Connection, stream, and filter limits and their gRPC reasons" />

  <Card title="Access" href="/platform/access" description="IP allowlist and x-token metadata" />

  <Card title="Errors" href="/solana-rpc/errors" description="gRPC statuses and structured reasons" />
</Cards>

## Authentication

Your registered public egress IP is the credential; dedicated deployments take `x-token` gRPC metadata instead. The tokenized URL path that dedicated HTTP and WebSocket resources use is **never** applied to gRPC. [Access & authentication](/platform/access) has the setup.

## Commitment

Every `SubscribeRequest` carries a single `commitment`, and it covers every filter in that request.

| Level       | What it means                                       |
| ----------- | --------------------------------------------------- |
| `PROCESSED` | Earliest visibility; can be reverted                |
| `CONFIRMED` | Supermajority-voted; the normal application default |
| `FINALIZED` | Irreversible; highest latency                       |

## Subscription model

* `Subscribe` runs both ways: you write subscription requests, the server streams updates back.
* You name your own filters, and those names come back attached to matching updates, so you can route on them.
* Each request **replaces** the active configuration rather than adding to it. Build the complete state you want and send it in one go.
* A reconnect starts a fresh subscription with no filters carried over. Pass `from_slot` on the new request to replay what the server retains from that slot on ([replay on reconnect](/solana-rpc/grpc/usage#reconnect-after-a-failure)), or backfill through [JSON-RPC](/solana-rpc/json-rpc).
* The server sends `ping` updates down the stream. Echo them back.

For exact request fields and message shapes, the upstream [Yellowstone proto](https://github.com/rpcpool/yellowstone-grpc/blob/master/yellowstone-grpc-proto/proto/geyser.proto) is the reference.

## Yellowstone gRPC or aRPC?

Watching accounts or program state? Stay here: account updates only exist after execution, and this is the earliest stream that carries them. Need transactions before they execute? Take [aRPC](/arpc).

|                | Yellowstone gRPC                                                                     | [aRPC](/arpc)                                                                             |
| -------------- | ------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------- |
| Schema         | Upstream Yellowstone `geyser.Geyser`                                                 | Corvus-native `ARPCService` (legacy) and `Service` (v2)                                   |
| Streams        | Accounts, transactions, transaction status, slots, blocks, block metadata, entries   | Entries, decoded transactions, binary transactions, slots                                 |
| Metros         | 5                                                                                    | 9                                                                                         |
| Endpoint       | `http://<region>.corvus-labs.io:10101`                                               | `http://arpc.<region>.corvus-labs.io:20202`                                               |
| Choose it when | You already consume the Yellowstone schema, or you need account and block-level data | You need pre-execution entry and transaction streams, or a metro Solana RPC doesn't serve |

If you'd rather have raw Solana shreds pushed at you over UDP than a typed stream, that's [Shredstream](/platform/shredstream).
