> For the complete documentation index, see [llms.txt](https://docs.triton.one/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.triton.one/solana/rpc-methods/real-time-streaming/yellowstone-grpc/accounts.md).

# Account updates

Stream account writes over Dragon's Mouth gRPC by adding an accounts filter to your SubscribeRequest.

## Filter

`SubscribeRequestFilterAccounts`, keyed by a filter label:

**`account`** · repeated string: Account pubkeys to match, base-58 encoded.

**`owner`** · repeated string: Match accounts owned by these program pubkeys.

**`filters`** · repeated SubscribeRequestFilterAccountsFilter: Extra filters: `memcmp`, `datasize`, `token_account_state`, or `lamports`.

**`nonempty_txn_signature`** · optional bool: `true` delivers only writes that carry a transaction signature, `false` only writes without one.

**`cuckoo_accounts_filter`** · optional CuckooFilter: Compressed cuckoo filter for very large account sets.

## Subscribe request

{% tabs %}
{% tab title="grpcurl" %}

```bash
# <proto-dir>: a folder holding geyser.proto and solana-storage.proto (the server has no gRPC reflection)
grpcurl \
  -proto geyser.proto -import-path <proto-dir> \
  -d '{"accounts": {"usdc": {"account": ["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"]}}, "commitment": "CONFIRMED"}' \
  -H "x-token: <your-token>" \
  <your-endpoint>.mainnet.rpcpool.com:443 \
  geyser.Geyser/Subscribe
```

{% endtab %}
{% endtabs %}

## Update

Each write arrives as a `SubscribeUpdate` with `account` set (`SubscribeUpdateAccount`):

**`account`** · SubscribeUpdateAccountInfo: The account: `pubkey`, `lamports`, `owner`, `executable`, `rent_epoch`, `data`, `write_version`, `txn_signature`.

**`slot`** · uint64: Slot at which the write occurred.

**`is_startup`** · bool: True if the update is part of the initial startup snapshot.

**`bank_id`** · optional uint64: Bank instance that produced the update. A slot can have more than one bank, so use (`slot`, `bank_id`) to tell them apart. Not set when `is_startup` is true.

***

<i class="fa-life-ring">:life-ring:</i> Contact support by clicking the chat icon in your [customer dashboard](https://customers.triton.one)\ <i class="fa-briefcase">:briefcase:</i> Sales questions? [Contact us](https://triton.one/contact)\ <i class="fa-sparkles">:sparkles:</i> AI agent? Read [llms.txt](https://docs.triton.one/llms.txt)\ <i class="fa-rss">:rss:</i> Follow updates: [Blog](https://blog.triton.one) · [X](https://x.com/triton_one) · [YouTube](https://www.youtube.com/@triton_one_ltd) · [Telegram](https://t.me/tritonone) · [GitHub](https://github.com/rpcpool)
