# aRPC (/arpc)

> Stream pre-execution Solana transactions, entries, and slot updates over gRPC from nine metros, with named account filters.



aRPC hands you Solana transactions, entries and slot updates as we see them on the network, before they execute. It's the earliest typed stream we offer; only raw [Shredstream](/platform/shredstream) sees the wire sooner. Each of the nine Corvus metros has its own gRPC endpoint:

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

Keep the `http` scheme ([transport security](/platform/access#transport-security)). You get in on an allowlisted egress IP unless your dedicated deployment was set up with an `x-token`. If you'd rather start from something that runs, the **[quick start](/arpc/quickstart)** is a Node.js stream printing live transactions.

You have aRPC once your plan's RPS and TPS together reach **500**. Starter (200 + 50) doesn't get there; Standard (500 + 125) and Professional (1,000 + 250) both do. See [plan contents](/platform/pricing).

## Choose an API

Both are shipping. Start on v2 unless you have a legacy integration to keep alive.

| Capability                                 | Legacy (`arpc.ARPCService`)             | v2 (`arpc.v2.Service`)                                                  |
| ------------------------------------------ | --------------------------------------- | ----------------------------------------------------------------------- |
| RPCs                                       | 1 bidirectional `Subscribe`             | 4: entries, transactions, binary transactions, slots                    |
| Decoded transactions                       | Yes                                     | Yes (`SubscribeTransactions`)                                           |
| Raw transaction wire bytes                 | No                                      | Yes (`SubscribeBinaryTransactions`)                                     |
| Entry stream                               | No                                      | Yes (`SubscribeEntries`)                                                |
| Dedicated slot stream                      | No; `new_seen_slots` on the same stream | Yes (`SubscribeSlots`)                                                  |
| Named account filters                      | Yes, map key is the name                | Yes, `filter_id` per filter                                             |
| Per-filter add/remove without reconnecting | No unregister message                   | `RegisterTransactionFilters` / `UnregisterTransactionFilters`           |
| Acknowledged filter registration           | No                                      | `FilterValidationResult` per `filter_id`                                |
| Resolved address-lookup-table addresses    | Lookup metadata only                    | Metadata plus `loaded_writable_addresses` / `loaded_readonly_addresses` |
| Per-stream `sequence` counter              | No                                      | Yes                                                                     |
| Replay or resume after disconnect          | No                                      | No                                                                      |

Protos:

* [Legacy service proto](/proto/arpc/legacy/service.proto)
* [v2 service proto](/proto/arpc/v2/service.proto)
* [v2 shared types](/proto/arpc/common/types.proto)

<Cards>
  <Card title="Quick start" href="/arpc/quickstart" description="A working Node.js transaction stream" />

  <Card title="v2 API" href="/arpc/v2" description="Entries, decoded or binary transactions, slot status, and filter semantics" />

  <Card title="Legacy API" href="/arpc/v1" description="One bidirectional stream of decoded transactions" />

  <Card title="Regions & endpoints" href="/arpc/regions" description="All nine aRPC hosts and the port" />

  <Card title="Limits & operations" href="/arpc/limits" description="The PPS disconnect, the filter-update ceiling, the 10-second heartbeat, and what sequence cannot tell you" />

  <Card title="FAQ" href="/arpc/faq" description="The PPS disconnect, filter validation and sequence numbers, answered short" />
</Cards>

<Callout type="warn" title="aRPC data is pre-execution">
  Everything here is an early observation: execution results don't exist yet, and `SLOT_STATUS_COMPLETE` only means aRPC saw the slot's last entry. Confirm anything you act on through Solana RPC.
</Callout>
