Getting Started
Welcome to Kurier testnet. Kurier is a REST API that lets you submit and verify zero-knowledge proofs on zkVerify testnet or Base Sepolia without running your own node. This guide covers everything you need to go from zero to your first verified proof in the free testnet sandbox.
What You'll Need
- A free Kurier account and API key — sign up here
- A generated ZK proof in a supported format
- Basic familiarity with REST APIs
Testnet API Endpoints
| Resource | URL |
|---|---|
| Testnet API base URL | https://api-testnet.kurier.xyz/api/v1 |
| Create API key (testnet portal) | https://testnet.kurier.xyz |
| Swagger / interactive API docs | https://api-testnet.kurier.xyz/docs |
| zkVerify Kurier guide | https://docs.zkverify.io/overview/getting-started/kurier |
Step-by-Step — Your First Proof Submission
Step 1: Create an account and generate an API key Go to testnet.kurier.xyz, sign up with your email, verify your address, and log in to generate your testnet API key.
Step 2: Submit a ZK proof
Send a POST request to the Kurier API with your proof payload. The API accepts proofs in all supported formats including groth16, fflonk, risc0, sp1, plonky2, ultrahonk, ultraplonk, and proof of SQL.
On a valid request, the API returns a jobID you can use to track progress.
Step 3: Track verification status
Poll the status endpoint with your jobID to monitor verification in near real time. See Job Statuses for the full list of states and what they mean.
Step 4: On-chain finality Once sufficient block confirmations are reached on zkVerify testnet or Base Sepolia, the proof is finalized on-chain and your job status will reflect completion.
Moving to Mainnet
When you're ready to deploy to production, here's what to update:
- Switch your API base URL to
https://api.kurier.xyz/api/v1 - Generate a new API key at kurier.xyz — testnet keys do not carry over
- Verification keys registered on testnet are automatically re-registered on mainnet — no action needed
- If you plan to keep a testnet deployment running in parallel, continue using
https://api-testnet.kurier.xyz/api/v1
Supported ZK Proof Systems
Kurier supports all major ZK proof systems used in production today:
- groth16 — widely used in Zcash, Tornado Cash, and general-purpose zk-SNARKs
- fflonk — PLONK-based, efficient for recursive verification
- plonky2 — designed for fast recursion and Ethereum compatibility
- risc0 — RISC-V zkVM for general-purpose verifiable computation
- sp1 — Succinct's zkVM, optimized for high-throughput proof generation
- ultrahonk / ultraplonk — Aztec's proving systems for private smart contracts
- proof of SQL — verifiable query results from databases
See all supported proof types and versions
What is zkVerify?
zkVerify is a decentralized blockchain purpose-built for zero-knowledge proof verification. Rather than verifying proofs on a general-purpose chain (which is expensive), zkVerify provides a dedicated, low-cost settlement layer. Kurier acts as the submission and tracking layer on top of zkVerify, handling the complexity of proof formatting, node interaction, and on-chain settlement.
Support & Resources
- Discord: discord.gg/zkverify
- Email: kurier-support@horizenlabs.io
- Higher API rate limits: request form
- Feature requests: submit here
- Mainnet environment: kurier.xyz