# getProgramAccounts

Returns all accounts owned by the provided program Pubkey.

This method will use `30` [Compute Units](/v1/about/billing.md).

***

{% hint style="warning" %}
`getProgramAccounts` for Solana is limited to 3 requests per second. If you have higher rate limit needs, [contact us](https://www.validationcloud.io/contact).
{% endhint %}

## **Parameters**

* `pubkey` string. The Pubkey of program encoded as base-58 string.
* `object` *optional.* Configuration object containing the following fields:
  * `commitment` string. The level of commitment required for the query. The options include:
    * `finalized` string.
      * The node will query the most recent block confirmed by the supermajority of the cluster as having reached maximum lockout, meaning the cluster has recognized this block as finalized.
    * `confirmed` string.
      * The node will query the most recent block that has been voted on by the supermajority of the cluster.
    * `processed` string.
      * The node will query its most recent block. Note that the block may not be complete.
* `minContextSlot` integer. The minimum slot at which the request can be evaluated.
* `withContext` boolean. Wraps the result in a RpcResponse JSON object.
* `filters` array. Filter results using up to 4 filter objects.
* `dataSlice` string. The returned account data using the provided offset: 'usize' and length: 'usize' fields; only available for base58, base64, or base64+zstd encodings.
* `encoding` string. (default: json) The encoding format for account data. It can be one of base58 (slow), base64, base64+zstd or jsonParsed.

## Returns

`result` The result will be RpcResponse JSON object with the following fields:

* `pubkey` The public key of the node encoded as base-58 string.
* `account` A JSON object with the following fields:
  * `lamports` The number of lamports assigned to this account as u64 (64-bit unsigned integer).
  * `owner` The base-58 encoded Pubkey of the program this account has been assigned to.
  * `data` The data associated with the account, either as encoded binary data or JSON format {'program': 'state'}, depending on encoding parameter.
  * `executable` A boolean indicating if the account contains a program (and is strictly read-only).
  * `rentEpoch` The epoch at which this account will next owe rent, as u64 (64-bit unsigned integer).
  * `space` The amount of storage space required to store the token account.

```bash
// Result
{
  "jsonrpc": "2.0",
  "result": [
    {
      "account": {
        "data": "2R9jLfiAQ9bgdcw6h8s44439",
        "executable": false,
        "lamports": 15298080,
        "owner": "4Nd1mBQtrMJVYVfKf2PJy9NZUZdTAsp7D4xWLs4gDB4T",
        "rentEpoch": 28,
        "space": 42
      },
      "pubkey": "CxELquR1gPP8wHe33gZ4QxqGB3sZ9RSwsJ2KshVewkFY"
    }
  ],
  "id": 1
}
```

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

<pre class="language-bash"><code class="lang-bash"><strong>curl https://mainnet.solana.validationcloud.io/v1/&#x3C;YOUR_API_KEY_HERE> \
</strong>    -X POST \
    -H "Content-Type: application/json" \
    -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getProgramAccounts",
    "params": [
      "4Nd1mBQtrMJVYVfKf2PJy9NZUZdTAsp7D4xWLs4gDB4T",
      {
        "filters": [
          {
            "dataSize": 17
          },
          {
            "memcmp": {
              "offset": 4,
              "bytes": "3Mc6vR"
            }
          }
        ]
      }
    ]
  }'
    
</code></pre>

{% endtab %}

{% tab title="devnet" %}

```bash
curl https://devnet.solana.validationcloud.io/v1/<YOUR_API_KEY_HERE> \
    -X POST \
    -H "Content-Type: application/json" \
    -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getProgramAccounts",
    "params": [
      "4Nd1mBQtrMJVYVfKf2PJy9NZUZdTAsp7D4xWLs4gDB4T",
      {
        "filters": [
          {
            "dataSize": 17
          },
          {
            "memcmp": {
              "offset": 4,
              "bytes": "3Mc6vR"
            }
          }
        ]
      }
    ]
  }'
    
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: 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:

```
GET https://docs.validationcloud.io/v1/solana/http-methods/getprogramaccounts.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
