Overview
What is Kurier?
Kurier is a suite of developer tools built by Horizen Labs to simplify the submission and verification of zero-knowledge proofs. The core product is a REST API that acts as a managed interface between your application and the zkVerify blockchain — the decentralized network purpose-built for ZK proof settlement.
Instead of running your own zkVerify node, managing on-chain transactions, or handling crypto payments, you call the Kurier API and let it handle the rest.
Kurier is available on both testnet (this environment) and mainnet.
What Problem Does Kurier Solve?
Zero-knowledge proof verification has traditionally required significant infrastructure: running blockchain nodes, managing key registration, handling proof formatting for multiple proof systems, and building custom polling or callback logic.
Kurier consolidates all of this into a single, well-documented REST API — making ZK proof verification accessible to any developer, not just teams with deep blockchain expertise.
How Kurier Works
1. Submit a proof via the API
Send your ZK proof (in any supported format) to the Kurier REST endpoint with your API key. The API validates the request, generates a jobID, and queues the proof for processing.
2. Kurier processes and submits the proof The proof is routed through a custom node and submitted to the zkVerify blockchain or Base for on-chain verification.
3. Track status in real time
Use your jobID to poll the status endpoint. Kurier provides near real-time status updates throughout the verification lifecycle. See Job Statuses for all states.
4. On-chain finality Once the required block confirmations are reached, the proof is finalized on-chain. Your application can now rely on the cryptographic guarantee that the computation was correct.
Supported ZK Proof Systems
Kurier supports the broadest range of ZK proof types of any hosted verification API:
| Proof Type | Description |
|---|---|
| fflonk | PLONK-based proof system, efficient verification |
| groth16 | Industry-standard zk-SNARK, widely deployed |
| plonky2 | Fast recursive proofs by Polygon Zero |
| proof of SQL | ZK proofs for verifiable database query results |
| risc0 | RISC-V zkVM for general verifiable computation |
| sp1 | Succinct's high-performance zkVM |
| tee | Trusted Execution Environment attestation proofs |
| ultrahonk | Aztec's latest proving system |
| ultraplonk | Aztec's PLONK variant |
View current supported versions
Supported Networks
| Network | Environment |
|---|---|
| zkVerify Volta | Free testnet environment |
| Sepolia | Ethereum testnet |
| Arbitrum Sepolia | Arbitrum testnet |
| Base Sepolia | Base testnet for integration testing |
| Optimism Sepolia | Optimism testnet |
| EDU Chain Testnet | EDU Chain testnet |
| Horizen Testnet | Horizen testnet environment |
Key Concepts
Zero-Knowledge Proof (ZKP) A cryptographic method that lets one party prove a statement is true to another party without revealing any information beyond the truth of the statement itself. Used in private transactions, rollups, verifiable computation, and more.
zkVerify A decentralized blockchain purpose-built for ZK proof verification. It provides a cost-efficient, trust-minimized settlement layer for ZK proofs across multiple proof systems.
Proof Submission vs. Proof Generation Kurier handles proof verification and submission — it does not generate proofs. You generate proofs using your ZK circuit and prover (e.g., snarkjs, risc0 SDK, sp1 CLI), then submit the output to Kurier for on-chain verification.
jobID A unique identifier returned by the Kurier API for every proof submission. Used to track the verification status from submission through to on-chain finality.
Optimistic vs. Final Verification Kurier supports optimistic (off-chain ZK proof verified) and final (on-chain zkVerify confirmed) verification modes for all proof submissions, giving developers control over the latency/security trade-off.
Additional Products
Beyond ZK proof verification, Kurier offers:
- Verifiable Random Hash — a cryptographically verifiable source of randomness, backed by ZK proofs
- Random Hash Oracle — an on-chain oracle smart contract for requesting verifiable randomness in zk-dApps
- x402-Enabled APIs — pay-per-use API access via the x402 micropayment protocol
Frequently Asked Questions
Do I need to run a zkVerify node to use Kurier? No. Kurier abstracts all node infrastructure. You interact only with the Kurier REST API.
Is Kurier open source? The relayer and documentation are open source. See the GitHub repository.
What's the difference between testnet and mainnet? Testnet uses zkVerify testnet and multiple L1/L2 testnets (Sepolia, Arbitrum Sepolia, Base Sepolia, Optimism Sepolia, EDU Chain, Horizen) — free to use, ideal for development. Mainnet uses production zkVerify and Base — for real, finalized proof verification.
How do I get a higher API rate limit? Fill out the rate limit request form and the team will review your request.
Resources & Support
- Discord: discord.gg/zkverify
- Email: kurier-support@horizenlabs.io
- zkVerify docs: docs.zkverify.io
- Feedback: Submit feedback
- Feature requests: Submit here