> 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/transactions.md).

# Transaction updates

Stream transactions over Dragon's Mouth gRPC by adding a transactions filter to your SubscribeRequest.

## Filter

`SubscribeRequestFilterTransactions`, keyed by a filter label:

**`vote`** · optional bool: `true` delivers only vote transactions, `false` only non-vote transactions. Omit it to get both. Alpenglow blocks have none.

**`failed`** · optional bool: `true` delivers only failed transactions, `false` only successful ones. Omit it to get both.

**`signature`** · optional string: Match a single transaction signature.

**`account_include`** · repeated string: Match transactions touching any of these accounts.

**`account_exclude`** · repeated string: Exclude transactions touching any of these accounts.

**`account_required`** · repeated string: Only match transactions touching all of these accounts.

**`cuckoo_account_include`** · optional CuckooFilter: Compressed cuckoo filter for large account-include sets.

**`token_accounts`** · optional TokenAccountExpansionControlFlag: Expand account matching to token-account owners (`ALL` or `BALANCE_CHANGED`).

## 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 '{"transactions": {"client": {"account_include": ["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"], "vote": false, "failed": false}}, "commitment": "CONFIRMED"}' \
  -H "x-token: <your-token>" \
  <your-endpoint>.mainnet.rpcpool.com:443 \
  geyser.Geyser/Subscribe
```

{% endtab %}
{% endtabs %}

## Update

Each transaction arrives as a `SubscribeUpdate` with `transaction` set (`SubscribeUpdateTransaction`):

**`transaction`** · SubscribeUpdateTransactionInfo: `signature`, `is_vote`, the `transaction`, `meta` (status/balances), and `index` within the block.

**`slot`** · uint64: Slot the transaction was processed in.

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

***

<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)
