getProgramAccountsV2

Paginated version of getProgramAccounts with cursor-based navigation and total count.

Note: Large V1 getProgramAccounts queries are automatically rejected and redirected here. If you received a -32600 error from V1, switch to this method with limit and paginationKey parameters.

Request

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getProgramAccountsV2",
  "params": [
    "<programId>",
    {
      "encoding": "base64",
      "filters": [],
      "limit": 200,
      "paginationKey": null,
      "changedSinceSlot": null
    }
  ]
}

Parameters

Parameter
Type
Required
Description

programId

string

Yes

Base58-encoded program public key

encoding

string

No

"base64" (default), "base58", or "base64+zstd"

filters

array

No

Same as getProgramAccounts (dataSize, memcmp)

dataSlice

object

No

{ offset, length } — limit returned data bytes

limit

integer

No

Page size, 1–10,000 (default 1,000)

paginationKey

string

No

Cursor from previous response to fetch the next page

changedSinceSlot

integer

No

Only return accounts updated after this slot

Response

Field
Type
Description

accounts

array

Account objects for this page

paginationKey

string or null

Cursor for next page. null means this is the last page

totalResults

integer

Total number of matching accounts

Pagination Example

Page 1:

Page 2 (using paginationKey from page 1):

changedSinceSlot

Use changedSinceSlot to fetch only accounts that have been updated after a specific slot. This is useful for incremental syncing.

Last updated