> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ryvo.network/llms.txt
> Use this file to discover all available pages before exploring further.

# Solana RPC Routes

> Every paid Solana RPC route - method, path, price, params, and example.

Solana RPC routes proxy standard JSON-RPC methods to Alchemy or Helius and are gated with x402 `exact` payment on Solana mainnet.

## Conventions

All Solana RPC routes share the same shape:

* **Path template:** `POST /v1/x402/solana/{cluster}/{provider}/rpc/{method}`
  * `cluster` ∈ `mainnet`, `devnet`
  * `provider` ∈ `alchemy`, `helius`
* **Access mode:** `exact` (paid per call)
* **Alternate methods accepted on the path:** `GET`, `HEAD` (used for the `402` discovery probe)
* **Content-Type:** `application/json`
* **Request body:** `{ "params": [...] }` - positional JSON-RPC params forwarded directly to the upstream provider
* **Success body:** `{ ok: true, provider, cluster, surface: "rpc", method, priceUsd, result }`
* **Payment network:** `solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp` (mainnet)
* **Payment asset:** USDC mainnet mint `EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v` (6 decimals)
* **Rate limit:** `50 rps` per `provider:cluster:rpc` scope

The first six RPC methods (`getBalance`, `getAccountInfo`, `getTransaction`, `getSignaturesForAddress`, `getTokenAccountsByOwner`, `getProgramAccounts`) are supported on every `cluster × provider` cell. `getTransactionsForAddress` is an enhanced Helius-only RPC method, so it only exists on the `helius` provider cells.

Prices come from the upstream PAYG schedules:

* **Alchemy** - `$0.45 / 1 000 000 CU`
* **Helius** - `$5 / 1 000 000 credits`

Both are rounded up to the nearest micro-USDC. Authoritative values are always reported by `GET /v1/catalog` and by the `402` challenge envelope.

***

## `getBalance`

Fetch the lamport balance for an account.

| Path                                                  | Provider | Cluster | Price (USD) | Cost unit |
| ----------------------------------------------------- | -------- | ------- | ----------- | --------- |
| `POST /v1/x402/solana/mainnet/alchemy/rpc/getBalance` | alchemy  | mainnet | `$0.000005` | 10 CU     |
| `POST /v1/x402/solana/devnet/alchemy/rpc/getBalance`  | alchemy  | devnet  | `$0.000005` | 10 CU     |
| `POST /v1/x402/solana/mainnet/helius/rpc/getBalance`  | helius   | mainnet | `$0.000005` | 1 credit  |
| `POST /v1/x402/solana/devnet/helius/rpc/getBalance`   | helius   | devnet  | `$0.000005` | 1 credit  |

**Params**

| Index       | Type     | Required | Notes                            |
| ----------- | -------- | -------- | -------------------------------- |
| `params[0]` | `string` | yes      | Account public key (base58).     |
| `params[1]` | `object` | no       | Standard JSON-RPC config object. |

**Example**

```bash theme={null}
curl -X POST https://gateway.Ryvo.network/v1/x402/solana/mainnet/helius/rpc/getBalance \
  -H "Content-Type: application/json" \
  -H "PAYMENT-SIGNATURE: <base64 x402 exact payment>" \
  -d '{"params":["86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY"]}'
```

***

## `getAccountInfo`

Fetch account metadata and raw account data.

| Path                                                      | Provider | Cluster | Price (USD) | Cost unit |
| --------------------------------------------------------- | -------- | ------- | ----------- | --------- |
| `POST /v1/x402/solana/mainnet/alchemy/rpc/getAccountInfo` | alchemy  | mainnet | `$0.000005` | 10 CU     |
| `POST /v1/x402/solana/devnet/alchemy/rpc/getAccountInfo`  | alchemy  | devnet  | `$0.000005` | 10 CU     |
| `POST /v1/x402/solana/mainnet/helius/rpc/getAccountInfo`  | helius   | mainnet | `$0.000005` | 1 credit  |
| `POST /v1/x402/solana/devnet/helius/rpc/getAccountInfo`   | helius   | devnet  | `$0.000005` | 1 credit  |

**Params**

| Index       | Type     | Required | Notes                                                        |
| ----------- | -------- | -------- | ------------------------------------------------------------ |
| `params[0]` | `string` | yes      | Account public key (base58).                                 |
| `params[1]` | `object` | no       | Config object. If `dataSlice` is provided, `length <= 1024`. |

**Example**

```bash theme={null}
curl -X POST https://gateway.Ryvo.network/v1/x402/solana/mainnet/alchemy/rpc/getAccountInfo \
  -H "Content-Type: application/json" \
  -H "PAYMENT-SIGNATURE: <base64 x402 exact payment>" \
  -d '{"params":["86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY",{"encoding":"base64"}]}'
```

***

## `getTransaction`

Fetch a confirmed transaction by signature.

| Path                                                      | Provider | Cluster | Price (USD) | Cost unit |
| --------------------------------------------------------- | -------- | ------- | ----------- | --------- |
| `POST /v1/x402/solana/mainnet/alchemy/rpc/getTransaction` | alchemy  | mainnet | `$0.000018` | 40 CU     |
| `POST /v1/x402/solana/devnet/alchemy/rpc/getTransaction`  | alchemy  | devnet  | `$0.000018` | 40 CU     |
| `POST /v1/x402/solana/mainnet/helius/rpc/getTransaction`  | helius   | mainnet | `$0.000005` | 1 credit  |
| `POST /v1/x402/solana/devnet/helius/rpc/getTransaction`   | helius   | devnet  | `$0.000005` | 1 credit  |

**Params**

| Index       | Type     | Required | Notes                            |
| ----------- | -------- | -------- | -------------------------------- |
| `params[0]` | `string` | yes      | Transaction signature (base58).  |
| `params[1]` | `object` | no       | Standard JSON-RPC config object. |

**Example**

```bash theme={null}
curl -X POST https://gateway.Ryvo.network/v1/x402/solana/mainnet/helius/rpc/getTransaction \
  -H "Content-Type: application/json" \
  -H "PAYMENT-SIGNATURE: <base64 x402 exact payment>" \
  -d '{"params":["<signature>",{"maxSupportedTransactionVersion":0}]}'
```

***

## `getSignaturesForAddress`

List recent transaction signatures for an address.

| Path                                                               | Provider | Cluster | Price (USD) | Cost unit |
| ------------------------------------------------------------------ | -------- | ------- | ----------- | --------- |
| `POST /v1/x402/solana/mainnet/alchemy/rpc/getSignaturesForAddress` | alchemy  | mainnet | `$0.000018` | 40 CU     |
| `POST /v1/x402/solana/devnet/alchemy/rpc/getSignaturesForAddress`  | alchemy  | devnet  | `$0.000018` | 40 CU     |
| `POST /v1/x402/solana/mainnet/helius/rpc/getSignaturesForAddress`  | helius   | mainnet | `$0.000005` | 1 credit  |
| `POST /v1/x402/solana/devnet/helius/rpc/getSignaturesForAddress`   | helius   | devnet  | `$0.000005` | 1 credit  |

**Params**

| Index       | Type     | Required | Notes                                       |
| ----------- | -------- | -------- | ------------------------------------------- |
| `params[0]` | `string` | yes      | Address (base58).                           |
| `params[1]` | `object` | no       | If `limit` is provided it must be `1..100`. |

**Example**

```bash theme={null}
curl -X POST https://gateway.Ryvo.network/v1/x402/solana/mainnet/alchemy/rpc/getSignaturesForAddress \
  -H "Content-Type: application/json" \
  -H "PAYMENT-SIGNATURE: <base64 x402 exact payment>" \
  -d '{"params":["86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY",{"limit":25}]}'
```

***

## `getTokenAccountsByOwner`

List token accounts owned by an address.

| Path                                                               | Provider | Cluster | Price (USD) | Cost unit |
| ------------------------------------------------------------------ | -------- | ------- | ----------- | --------- |
| `POST /v1/x402/solana/mainnet/alchemy/rpc/getTokenAccountsByOwner` | alchemy  | mainnet | `$0.000005` | 10 CU     |
| `POST /v1/x402/solana/devnet/alchemy/rpc/getTokenAccountsByOwner`  | alchemy  | devnet  | `$0.000005` | 10 CU     |
| `POST /v1/x402/solana/mainnet/helius/rpc/getTokenAccountsByOwner`  | helius   | mainnet | `$0.000005` | 1 credit  |
| `POST /v1/x402/solana/devnet/helius/rpc/getTokenAccountsByOwner`   | helius   | devnet  | `$0.000005` | 1 credit  |

**Params**

| Index       | Type     | Required | Notes                                                                  |
| ----------- | -------- | -------- | ---------------------------------------------------------------------- |
| `params[0]` | `string` | yes      | Owner public key (base58).                                             |
| `params[1]` | `object` | yes      | Filter object - must specify **exactly one** of `mint` or `programId`. |
| `params[2]` | `object` | no       | Standard JSON-RPC config object.                                       |

**Example**

```bash theme={null}
curl -X POST https://gateway.Ryvo.network/v1/x402/solana/mainnet/helius/rpc/getTokenAccountsByOwner \
  -H "Content-Type: application/json" \
  -H "PAYMENT-SIGNATURE: <base64 x402 exact payment>" \
  -d '{"params":["86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY",{"programId":"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{"encoding":"jsonParsed"}]}'
```

***

## `getProgramAccounts`

Query accounts owned by a program.

| Path                                                          | Provider | Cluster | Price (USD) | Cost unit  |
| ------------------------------------------------------------- | -------- | ------- | ----------- | ---------- |
| `POST /v1/x402/solana/mainnet/alchemy/rpc/getProgramAccounts` | alchemy  | mainnet | `$0.000009` | 20 CU      |
| `POST /v1/x402/solana/devnet/alchemy/rpc/getProgramAccounts`  | alchemy  | devnet  | `$0.000009` | 20 CU      |
| `POST /v1/x402/solana/mainnet/helius/rpc/getProgramAccounts`  | helius   | mainnet | `$0.000050` | 10 credits |
| `POST /v1/x402/solana/devnet/helius/rpc/getProgramAccounts`   | helius   | devnet  | `$0.000050` | 10 credits |

**Params**

| Index       | Type     | Required | Notes                                                  |
| ----------- | -------- | -------- | ------------------------------------------------------ |
| `params[0]` | `string` | yes      | Program id (base58).                                   |
| `params[1]` | `object` | yes      | Config object with required `filters` and `dataSlice`. |

`params[1]` constraints:

* `filters` - 1 to 4 entries, each either `{ dataSize: number }` or `{ memcmp: { offset, bytes } }`.
* `memcmp.bytes` - non-empty string, max 128 characters.
* `dataSlice` - required. `dataSlice.offset >= 0`, `dataSlice.length <= 256`.

**Example**

```bash theme={null}
curl -X POST https://gateway.Ryvo.network/v1/x402/solana/mainnet/helius/rpc/getProgramAccounts \
  -H "Content-Type: application/json" \
  -H "PAYMENT-SIGNATURE: <base64 x402 exact payment>" \
  -d '{
    "params":[
      "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
      {
        "filters":[{"dataSize":165}],
        "dataSlice":{"offset":0,"length":64}
      }
    ]
  }'
```

***

## `getTransactionsForAddress`

Helius-only enhanced transaction history with filtering, sorting, and keyset pagination for any address. Unlike `getSignaturesForAddress`, this method returns either full parsed transactions or signature metadata, and supports server-side filters (`slot`, `blockTime`, `signature`, `status`, `tokenAccounts`) plus a `paginationToken` for deterministic cursoring in either `asc` or `desc` direction.

| Path                                                                | Provider | Cluster | Price (USD) | Cost unit  |
| ------------------------------------------------------------------- | -------- | ------- | ----------- | ---------- |
| `POST /v1/x402/solana/mainnet/helius/rpc/getTransactionsForAddress` | helius   | mainnet | `$0.000250` | 50 credits |
| `POST /v1/x402/solana/devnet/helius/rpc/getTransactionsForAddress`  | helius   | devnet  | `$0.000250` | 50 credits |

**Params**

| Index       | Type     | Required | Notes                      |
| ----------- | -------- | -------- | -------------------------- |
| `params[0]` | `string` | yes      | Address (base58).          |
| `params[1]` | `object` | no       | Config object (see below). |

`params[1]` config fields (all optional):

* `transactionDetails` - `"signatures"` (default) or `"full"`.
* `sortOrder` - `"desc"` (default) or `"asc"`.
* `commitment` - `"confirmed"` or `"finalized"`.
* `minContextSlot` - non-negative integer.
* `limit` - 1..1000 when `transactionDetails="signatures"`, 1..100 when `transactionDetails="full"`.
* `paginationToken` - opaque cursor returned from the previous response.
* `encoding` - `"json"`, `"jsonParsed"`, `"base58"`, `"base64"` (applies when `transactionDetails="full"`).
* `maxSupportedTransactionVersion` - non-negative integer.
* `filters` - object supporting `slot` (`gte`/`gt`/`lte`/`lt`), `blockTime` (same plus `eq`), `signature` (lexicographic ranges), `status` (`succeeded`/`failed`/`any`), and `tokenAccounts` (`none`/`balanceChanged`/`all`).

**Example**

```bash theme={null}
curl -X POST https://gateway.Ryvo.network/v1/x402/solana/mainnet/helius/rpc/getTransactionsForAddress \
  -H "Content-Type: application/json" \
  -H "PAYMENT-SIGNATURE: <base64 x402 exact payment>" \
  -d '{
    "params":[
      "86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY",
      {
        "transactionDetails":"signatures",
        "sortOrder":"desc",
        "limit":100,
        "filters":{"status":"succeeded"}
      }
    ]
  }'
```

***

## See also

* [Solana DAS routes](/gateway/routes/solana-das)
* [Helius Wallet API routes](/gateway/routes/helius-wallet)
* [Tokens API routes](/gateway/routes/tokens-api)
* [Pricing](/gateway/pricing)
* [Access modes](/gateway/access-modes)
* [Integration guide](/gateway/integration-guide)
