> For the complete documentation index, see [llms.txt](https://docs.rpcfast.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rpcfast.com/rpc-fast-saas-solana/solana-rpc-methods.md).

# Solana RPC

Supported Solana HTTP and WebSocket RPC methods, plan availability, and the RPC Fast getProgramAccountsPaginated extension.

RPC Fast exposes the current Solana JSON-RPC 2.0 method set over HTTP, Solana PubSub over WebSocket, and selected RPC Fast extensions.

Each RPC request consumes **1 Compute Unit (CU)** by default. The exception is [`getProgramAccounts`](https://solana.com/docs/rpc/http/getprogramaccounts), which consumes **10 CU**. Each page fetched with `getProgramAccountsPaginated` is a separate request and consumes **1 CU**. See Compute Units for billing details.

For standard request parameters and response schemas, refer to the official [Solana HTTP RPC documentation](https://solana.com/docs/rpc/http) and [Solana WebSocket RPC documentation](https://solana.com/docs/rpc/websocket).

## Supported HTTP methods

| Category                                  | Methods                                                                                                                                                                                                                                                                                                                   | What they do                                                                                                                        |
| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| Account and token state                   | `getAccountInfo`, `getBalance`, `getLargestAccounts`, `getMultipleAccounts`, `getProgramAccounts`, `getSupply`, `getTokenAccountBalance`, `getTokenAccountsByDelegate`, `getTokenAccountsByOwner`, `getTokenLargestAccounts`, `getTokenSupply`                                                                            | Read SOL balances, account data, program-owned accounts, token accounts, mint supply, and network supply.                           |
| Blocks, slots, and ledger                 | `getBlock`, `getBlockCommitment`, `getBlockHeight`, `getBlockProduction`, `getBlocks`, `getBlocksWithLimit`, `getBlockTime`, `getFirstAvailableBlock`, `getHighestSnapshotSlot`, `getLatestBlockhash`, `getMaxRetransmitSlot`, `getMaxShredInsertSlot`, `getSlot`, `getSlotLeader`, `getSlotLeaders`, `minimumLedgerSlot` | Read blocks, slot progress, leaders, block production, and the node's available ledger range.                                       |
| Transactions, signatures, and fees        | `getFeeForMessage`, `getRecentPerformanceSamples`, `getRecentPrioritizationFees`, `getSignaturesForAddress`, `getSignatureStatuses`, `getTransaction`, `getTransactionCount`, `isBlockhashValid`, `sendTransaction`, `simulateTransaction`                                                                                | Estimate fees, inspect transaction history and status, validate blockhashes, simulate transactions, and submit signed transactions. |
| Network, epoch, and validator information | `getClusterNodes`, `getEpochInfo`, `getEpochSchedule`, `getGenesisHash`, `getHealth`, `getIdentity`, `getInflationGovernor`, `getInflationRate`, `getInflationReward`, `getLeaderSchedule`, `getMinimumBalanceForRentExemption`, `getStakeMinimumDelegation`, `getVersion`, `getVoteAccounts`                             | Inspect cluster identity and health, epoch configuration, inflation, rent, leaders, and validator vote accounts.                    |
| Network utility                           | `requestAirdrop`                                                                                                                                                                                                                                                                                                          | Request test SOL where the selected network provides a faucet. Airdrops are not available on mainnet.                               |
| RPC Fast extensions                       | `getProgramAccountsPaginated`, `simulateBundle`                                                                                                                                                                                                                                                                           | Traverse large program-account result sets in bounded pages or simulate a transaction bundle.                                       |

Method availability can still depend on the selected network, retained ledger history, request parameters, and plan limits.

## Supported WebSocket methods

| Category                       | Methods                                                                                                                                                        |
| ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Accounts and programs          | `accountSubscribe`, `accountUnsubscribe`, `programSubscribe`, `programUnsubscribe`                                                                             |
| Blocks, transactions, and logs | `blockSubscribe`, `blockUnsubscribe`, `logsSubscribe`, `logsUnsubscribe`, `signatureSubscribe`, `signatureUnsubscribe`                                         |
| Chain progress and votes       | `rootSubscribe`, `rootUnsubscribe`, `slotSubscribe`, `slotUnsubscribe`, `slotsUpdatesSubscribe`, `slotsUpdatesUnsubscribe`, `voteSubscribe`, `voteUnsubscribe` |

Multiple subscriptions can be active on one connection. Methods that accept `commitment` default to `finalized` when it is omitted.

## Plan availability

On the Start plan, the following high-cost account-query methods are limited to supported query shapes:

* `getProgramAccounts`
* `getTokenAccountsByOwner`
* `getTokenAccountsByDelegate`
* `getTokenLargestAccounts`

Additionally, `getProgramAccounts` is limited to **1 request per second (1 RPS)** on the Start plan.

When a restricted request cannot be served, RPC Fast returns:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": -32099,
    "message": "Method not available"
  }
}
```

Paid plans enable the general route for these methods, subject to request validation and plan limits.

## `getProgramAccountsPaginated`

`getProgramAccountsPaginated` is an RPC Fast extension for program-account result sets that are too large or expensive to return safely in one `getProgramAccounts` response. It preserves the standard Solana account encoding and filter shapes while returning a bounded page plus an opaque continuation key.

### Parameters

The first parameter is the program ID. The second parameter is a configuration object with:

| Field           | Type                                                              | Required | Description                                                                                                                     |
| --------------- | ----------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `commitment`    | `processed` \| `confirmed` \| `finalized`                         | No       | Defaults to `finalized`. Keep it unchanged while following a cursor.                                                            |
| `encoding`      | `binary` \| `base58` \| `base64` \| `base64+zstd` \| `jsonParsed` | No       | Account data encoding. Base58 retains Solana's 128-byte encoded-data limit.                                                     |
| `filters`       | array                                                             | No       | Standard `dataSize` and `memcmp` filters. `memcmp.bytes` may use base58 or base64 encoding and is limited to 128 decoded bytes. |
| `dataSlice`     | object or `null`                                                  | No       | Optional `offset` and `length` projection.                                                                                      |
| `limit`         | integer                                                           | No       | Accounts per page. Default: `1000`. Allowed range: `1`–`10000`.                                                                 |
| `paginationKey` | string or `null`                                                  | No       | Omit or pass `null` for the first page. For the next page, pass the exact key returned by the previous response.                |

`minContextSlot` is not currently supported by this extension.

### First-page request

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getProgramAccountsPaginated",
  "params": [
    "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc",
    {
      "commitment": "confirmed",
      "encoding": "base64",
      "filters": [
        {
          "dataSize": 653
        }
      ],
      "dataSlice": {
        "offset": 0,
        "length": 0
      },
      "limit": 1000,
      "paginationKey": null
    }
  ]
}
```

### Response

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "context": {
      "slot": 123456789
    },
    "value": {
      "accounts": [
        {
          "pubkey": "AccountPublicKey...",
          "account": {
            "lamports": 2039280,
            "data": [
              "",
              "base64"
            ],
            "owner": "ProgramPublicKey...",
            "executable": false,
            "rentEpoch": 18446744073709551615,
            "space": 653
          }
        }
      ],
      "paginationKey": "opaque-continuation-key"
    }
  }
}
```

To read the complete result set:

1. Send the first request with `paginationKey: null` or omit the field.
2. Append the returned `accounts` to your result.
3. If `paginationKey` is not `null`, send the same program ID, commitment, filters, encoding, and data slice again with that key.
4. Stop only when `paginationKey` is `null`. Do not infer completion from the number of accounts in a page.

The key is opaque and signed. Do not decode or modify it, and do not reuse it with a different program or commitment.

Pagination reads live account state rather than a historical snapshot. Accounts can change between pages, so clients that require snapshot-like output should deduplicate by account public key.

{% hint style="success" icon="child-reaching" %}
For presale or technical questions, [contact us on Telegram](https://telegram.me/+SpMbJTPTakAxNjdi). Our team will reply in the community chat. Please be aware of impersonators.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.rpcfast.com/rpc-fast-saas-solana/solana-rpc-methods.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
