Skip to main content
Chainstack Zcash nodes run Zebra, the Zcash Foundation’s node, and serve its Bitcoin-style JSON-RPC API over HTTPS. Send requests with curl or any HTTP client. The same calls work on Zcash Mainnet and Testnet, and the nodes serve transparent transaction history from the first block.

Network details

JSON-RPC API

To get basic network information from your Zcash node HTTPS endpoint, call getblockchaininfo:
where YOUR_CHAINSTACK_ENDPOINT is your node HTTPS endpoint protected either with the key or password. See node access details. The response lists the network upgrades and their activation heights in upgrades, and the balances of the transparent and shielded pools in valuePools.

Address index

Zebra indexes transparent addresses, so you can look up an address’s balance, transaction history, and unspent outputs without running an indexer. Each method takes an object with an addresses array:
  • getaddressbalance — the current balance and the total received, in zatoshis.
  • getaddresstxids — the IDs of the transactions that touch the addresses, optionally limited to a block range with start and end.
  • getaddressutxos — the unspent outputs of the addresses, with the amount of each in the satoshis field, in zatoshis.
The address index covers transparent addresses only. Shielded balances and shielded transaction history are visible only to the holder of the viewing key, through a wallet that scans the chain.

Shielded pool state

Zebra serves the state of the Sapling and Orchard note commitment trees, which wallets use to sync and to build shielded transactions:
  • z_gettreestate — the note commitment tree state of the Sapling and Orchard pools at a block, by height or hash.
  • z_getsubtreesbyindex — the roots of complete note commitment subtrees for sapling or orchard, from a start index.
  • z_validateaddress — validates a transparent, Sapling, or unified address and returns its type.
  • z_listunifiedreceivers — returns the receivers that a unified address contains.

Python

Install requests:
On Mainnet, the main.py example prints Chain: main, the block height, and the balance and history of the address that received the founders’ reward in block 1. On Testnet, replace the address with a Testnet address, which starts with tm or t2. For a password-protected endpoint, put the credentials in the URL, as in https://USERNAME:PASSWORD@HOSTNAME, and requests sends them as HTTP basic authentication.

JavaScript

The example uses the built-in fetch in Node.js 18 or later, so it needs no packages.
The built-in fetch rejects a URL that includes credentials, with TypeError: Request cannot be constructed from a URL that includes credentials. For a password-protected endpoint, send the credentials in an Authorization header instead:

Available methods

Chainstack Zcash nodes serve these Zebra JSON-RPC methods on Mainnet and Testnet: The mining methods getblocktemplate and submitblock and the node control methods stop, addnode, generate, invalidateblock, and reconsiderblock are not available. A call returns error code -32601.

Zcash behaviors that affect tooling

JSON-RPC over HTTPS only

Zebra serves JSON-RPC over HTTP, so Chainstack Zcash endpoints have no WebSocket endpoint and no subscriptions. To follow new blocks, poll getbestblockhash or getblockcount. Mainnet produces a block about every 75 seconds.

Amounts come in two units

Transaction outputs report each amount twice, as value in ZEC and valueZat in zatoshis. The address index methods report amounts in zatoshis only, and getaddressutxos names the field satoshis. Use the zatoshi fields for arithmetic to avoid floating-point rounding.

Wallet methods are not part of Zebra

Zebra is a full node without a built-in wallet, so the wallet methods of the deprecated zcashd node, such as z_sendmany, z_getbalance, and listunspent, do not exist. Build and sign transactions with a Zcash wallet library, then broadcast them with sendrawtransaction.
Last modified on October 20, 2026