Skip to content
Alchemy Logo

Alchemy Photon APIs for Solana ZK Compression

Alchemy Photon APIs for Solana ZK Compression

Alchemy supports the Photon indexer, an open-source ZK Compression indexer maintained by Helius. These endpoints let you read ZK Compressed Solana state — accounts, token balances, and transaction signatures — through the same familiar JSON-RPC surface used for standard Solana calls.

ZK Compression stores most of an account's data offchain in a merkle tree while keeping a small commitment onchain, letting applications mint and manage thousands of accounts or tokens at a fraction of the normal rent cost. Photon indexes those compressed accounts and exposes them through the methods below, following the Photon API specification.

These endpoints are served through the standard Solana Alchemy endpoints (https://solana-mainnet.g.alchemy.com/v2/<API_KEY> and https://solana-devnet.g.alchemy.com/v2/<API_KEY>), so you can call them with the same client you already use for Solana Core RPC.

MethodFunctionCU costThroughput CUs (how many CUs this will count for towards your CUs per second capacity)
getCompressedAccountReturns the compressed account with the given address or hash.120100
getCompressedAccountProofReturns a merkle proof for the compressed account with the given hash.120100
getCompressedAccountsByOwnerReturns the owner's compressed accounts.120100
getCompressedBalanceReturns the balance for the compressed account with the given address or hash.120100
getCompressedBalanceByOwnerReturns the total balance of the owner's compressed accounts.120100
getCompressedMintTokenHoldersReturns the owner balances for a given mint in descending order, for compressed tokens.120100
getCompressedTokenAccountBalanceReturns the balance for a given compressed token account.120100
getCompressedTokenAccountsByDelegateReturns the compressed token accounts that are partially or fully delegated to the given delegate.120100
getCompressedTokenAccountsByOwnerReturns the compressed token accounts owned by the given Pubkey.120100
getCompressedTokenBalancesByOwnerReturns the compressed token balances for the given Pubkey.120100
getCompressedTokenBalancesByOwnerV2Returns the compressed token balances for the given Pubkey, with pagination.120100
getCompressionSignaturesForAccountReturns the signatures of transactions that closed or opened a compressed account with the given hash.120100
getCompressionSignaturesForAddressReturns the signatures of transactions that have modified an address's compressed account.120100
getCompressionSignaturesForOwnerReturns the signatures of transactions that have modified the owner's compressed accounts.120100
getCompressionSignaturesForTokenOwnerReturns the signatures of transactions that have modified the owner's compressed token accounts.120100
getLatestCompressionSignaturesReturns the signatures of the latest transactions that used the compression program.120100
getLatestNonVotingSignaturesReturns the signatures of the latest non-voting transactions.120100
getMultipleCompressedAccountProofsReturns multiple compressed account proofs.120100
getMultipleCompressedAccountsReturns multiple compressed accounts, identified by address or hash.120100
getMultipleNewAddressProofsReturns proofs that the new addresses are not taken and can be created.120100
getMultipleNewAddressProofsV2Returns proofs that the new addresses are not taken and can be created (v2).120100
getTransactionWithCompressionInfoReturns the transaction data for the given signature along with parsed compression info.120100
getValidityProofReturns a single ZK Validity proof for compressed accounts and new addresses.1200 †500 †
getValidityProofV2Returns a single ZK Validity proof for compressed accounts and new addresses (v2).1200 †500 †
getIndexerHealthReturns an error if the indexer is stale by more than a configured number of blocks, otherwise returns ok.120100
getIndexerSlotReturns the slot of the latest block the indexer has processed.120100

getValidityProof and getValidityProofV2 run against the prover service and use an extended 30,000 ms request timeout.

Was this page helpful?