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

Zcash Testnet activated Network Upgrade 7 (NU7) at block 4,465,026. Software without NU7 support stayed on a chain that split from Testnet at that block, so before you compare results with an explorer or another node, check that it returns the same block hash at height 4,465,026 as your Chainstack endpoint.

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, Orchard, and Ironwood note commitment trees, which wallets use to sync and to build shielded transactions:
  • z_gettreestate — the note commitment tree state of the Sapling, Orchard, and Ironwood pools at a block, by height or hash.
  • z_getsubtreesbyindex — the roots of complete note commitment subtrees for sapling, orchard, or ironwood, 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 t2UNzUUx8mWBCRYPRezvA363EYXyEpHokyi, which received the founders’ reward in Testnet block 1, and read the amounts as TAZ. 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 HTTP status 403 with 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. Testnet produces a block about every 25 seconds, the NU7 block time.

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.

The address index does not check the network

The address index methods accept an address from the other network and return an empty result instead of an error. A Mainnet address sent to a Testnet endpoint returns a zero balance and no transactions. Check an address with validateaddress first, which returns "isvalid": false for an address from the other network.

getbestblockheightandhash returns the hash as bytes

getbestblockheightandhash returns the block hash as an array of 32 numbers in reverse byte order, not as a hex string. For the hex string, call getbestblockhash, or reverse the array and hex-encode it.

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 21, 2026