Getting Started
Welcome to Kurier mainnet. Kurier is a REST API that lets you submit and verify zero-knowledge proofs on zkVerify or Base without running your own node. This guide covers everything you need to go from zero to your first verified proof.
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
Mainnet API Endpoints
| Resource | URL |
|---|---|
| Mainnet API base URL | https://api.kurier.xyz/api/v1 |
| Create API key (mainnet portal) | https://kurier.xyz |
| Swagger / interactive API docs | https://api.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 kurier.xyz, sign up with your email, verify your address, and log in to generate your mainnet 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, or open a WebSocket connection for instant updates as your proof moves through the pipeline. 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 or Base, the proof is finalized on-chain and your job status will reflect completion.
Migrating from Testnet to Mainnet
If you've been building on testnet and are ready to go to mainnet, 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, update your testnet API URL to
https://testnet.kurier.xyz
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
- Testnet environment: testnet.kurier.xyz