Public and Private Balances
A private balance is stored in UTXOs (unspent transaction outputs). A UTXO is not a Solana account.
See Private State and UTXOs for how private balances are stored and spent.
Endpoint and Authentication
Send a JSON-RPC 2.0 request to the method’s path with your Helius API key:method must match the final URL path segment. Method paths accept a single request; batches, duplicate method fields, and path/body mismatches return HTTP 400 before execution.
For local development, use http://127.0.0.1:8784/{method} after starting the local stack.
Methods
getEncryptedUtxosByTags
Discover encrypted outputs by view tags or ring.
getShieldedTransactionsByTags
Query shielded transaction history by view tags or ring.
getShieldedTransactionsBySignature
Retrieve shielded events for one Solana transaction.
getShieldedTransactionsByNullifiers
Find the transactions that spent supplied nullifiers.
getMerkleProofs
Fetch inclusion proofs for state tree commitments.
getNonInclusionProofs
Fetch non-inclusion proofs for nullifier values.
getNullifierQueueElements
Read queued nullifiers in sequence order.
getUserRecords
Look up public shielded address registrations.
Pagination
getEncryptedUtxosByTags, getShieldedTransactionsByTags, and getShieldedTransactionsByNullifiers return a page in result:
datagroups results by Solana transaction, ordered by ascending slot and signature. The encrypted UTXO method uses anoutputsarray in each group; the transaction history methods use aneventsarray.limitcounts Solana transactions, from 1 to 1,000, and defaults to 1,000. A transaction’s matching outputs or events stay together in one page.- Pass a non-null
paginationTokenback unchanged with the same tags or nullifiers, ring, and slot filters. Continue until the response token isnull. filters.slotacceptsgt,gte,lt, andltebounds. Supplied bounds combine with AND. After an uncapped read reaches a null token, save that page’scontext.slotand resume later withfilters.slot.gtset to it. A read capped byltorltecovers only slots up to that cap; resume it from the cap, not fromcontext.slot.- Set
minContextSlotto require a minimum persisted indexer slot. The indexer also requires the slot of yourpaginationTokenand of anygtorgtefilter. If it is behind any of these, it returns error-32016witherror.data.contextSlot; retry after it catches up.
outputTreeId, the newest unpaused state tree ID. It is omitted when unavailable. Individual outputs identify their own tree with outputContext.treeId.
getNullifierQueueElements uses sequence-based pagination; see its method page.
Data Encoding
Errors
Inspect the JSON-RPCerror field before reading result, including when the HTTP status is 200.
HTTP 429 indicates rate limiting; see rate limits. See authentication for API key setup.