Ethereum Foundation's zkAPI: how to pay for AI requests in ETH and USDC without revealing your identity
Every AI request sent through an API today carries your name: the key points to an account, the account points to a card, and all your prompts pile up in a single record. On October 1, the Ethereum Foundation and the Open Anonymity Project introduced zkAPI. With it, you pay for AI in ETH or USDC through a vault on Ethereum and prove you're allowed to make a request with a zero-knowledge proof. Here's how the protocol works, what it hides from the provider and what stays in plain sight.

What the Ethereum Foundation and the Open Anonymity Project launched
On October 1, 2026, the Ethereum Foundation and the Open Anonymity Project announced zkAPI on the foundation's blog. The foundation calls it private usage credits for any API. The protocol is already live on Ethereum mainnet, and its first use case is a timely one: paying for requests to language models.
The idea is to deposit money once and then pay for every request without the provider knowing who is paying. Ken Liu, a Stanford PhD student with the Open Anonymity Project, describes zkAPI as a generalization of OA's unlinkable inference that also abstracts away payments.
Why every AI request carries your name
The Ethereum Foundation starts with a problem that's easy to overlook. Every AI API call today has an identity attached. The API key points to an account, the account points to a payment method, and every prompt you send ends up in a record tied to both.
In practice, everything you have ever asked a model sits right next to your payment details. Work, health, money, personal emails you asked it to rewrite all land in one file. As long as that record exists, it can be traced back to a specific person.
Blockchain transfers have a similar problem: a regular payment on Ethereum is visible to everyone, and we've already covered how private stablecoin payments work with zk.money. zkAPI brings a similar idea to paying for services.
How zkAPI works
- Deposit. You deposit credits in ETH or USDC once into a vault, a smart contract on Ethereum. It's an ordinary transaction. If you don't have ETH or USDC yet, you can get them through a crypto exchange without registration; more on that below.
- Local client. A small client runs on your device. Apps talk to it over localhost through standard APIs compatible with OpenAI and Ollama, so the AI apps, editors and chat tools you already use will work.
- Proof. The client sends the zkAPI server a zero-knowledge proof. It contains neither your prompt nor your identity. Your device only proves that there's enough money and that it hasn't been spent before.
- Temporary key. The server checks the proof and issues a short-lived API key with a dollar limit and an expiry time. The key lives only in your device's memory.
- Requests. Prompts go from your device straight to the AI provider along with that temporary key.
- Settlement. You pay only for what you use, and the remaining balance can be withdrawn onchain.
The Ethereum Foundation stresses that the vault is a contract on Ethereum and the money doesn't sit in a company account. You can close your balance and withdraw your funds even if every zkAPI server disappears.
A nullifier stops the same money from being spent twice. It works like a unique "serial number" for a payment: it shows that a credit has already been used, but not who is paying.
What stays hidden and what doesn't
| Who | What they see | What they don't know |
|---|---|---|
| AI provider | your prompts, IP address, request timing | who is paying |
| zkAPI payment layer | credit spending | your identity, prompt content, which deposit paid |
| Ethereum blockchain | the vault deposit, like any transfer | which requests the deposit paid for |
The provider sees the requests, the payment layer sees the spending, and nobody knows how the two connect. The privacy here is specifically about payment. The provider still reads your prompts and also gets network metadata with them: your IP address and the timing of your requests. zkAPI doesn't provide network-level anonymity, so if you name yourself in a prompt, the protocol won't hide it.
Then there's the deposit. The deposit into the vault is visible on Ethereum like any other transfer. If you fund it from an address that tells everything about you, you link yourself to the deposit. zk.money works the same way: privacy starts after the deposit. zkAPI hides who pays for requests, but the money on Ethereum itself stays public. For privacy of the transfers themselves there's Monero, and you can buy Monero with bitcoin without registration.
There's one more caveat. According to KuCoin News, the protocol is labeled experimental, and the Ethereum Foundation's post says nothing about an audit. Keep that in mind before putting a sizable amount into the vault.
What's under the hood of zkAPI
For anyone who wants to dig into the design: the proofs use Groth16 on the BN254 curve, and hashing is done with Poseidon. Commitments and nullifiers are stored in a Merkle tree of depth 32. The code is published on GitHub by the Open Anonymity Project.
zkAPI fits into the broader conversation about what Ethereum will become in the next few years. For the bigger picture, see our breakdown of how Vitalik Buterin sees Ethereum in 2030.
Where to try it and what comes next
You can try private AI without installing anything in OA-chat, the Open Anonymity Project's browser-based chat. For your own apps you'll need the local client: it responds through the same APIs as OpenAI and Ollama, so you don't have to change the apps themselves.
Paying for AI is only the start. The Ethereum Foundation wants to use the same credits:
- for RPC requests to blockchains;
- for image and video generation;
- for VPN and traffic;
- for machine-to-machine payments, where AI agents pay for services without accounts.
The last item looks like the most distant and the most intriguing one: an agent wouldn't need to open an account for every service. Use zkAPI, like any privacy tool, only within the laws of your country.
Where to get ETH or USDC for the vault
The zkAPI vault is funded with ETH or USDC on Ethereum. If you hold bitcoin, you can exchange BTC to ETH without registration and receive ETH straight to your wallet. If you keep USDT on TRON, you can exchange USDT TRC20 to USDC on Ethereum. At VertEXchange, no account is needed for the swap, and the coins arrive directly at your address. Just remember that the vault deposit itself is visible on the blockchain, so choose the funding address with care.
FAQ
What is zkAPI?
A protocol from the Ethereum Foundation and the Open Anonymity Project for private API payments, introduced on October 1, 2026. You deposit ETH or USDC once into a smart contract on Ethereum and then get temporary API keys in exchange for a zero-knowledge proof. The AI provider doesn't know who is paying. The protocol runs on Ethereum mainnet.
Can the AI provider see my prompts if I pay through zkAPI?
Yes. zkAPI hides who is paying, but the provider sees the prompts themselves. It also sees network metadata: your IP address and the timing of your requests. The protocol doesn't provide network-level anonymity.
Can I withdraw money from the zkAPI vault?
Yes. You pay only for what you use, and the rest can be withdrawn onchain. According to the Ethereum Foundation, the vault is a contract on Ethereum, so you can close your balance and withdraw your money even if every zkAPI server disappears.
Where can I try zkAPI without installing anything?
In OA-chat, the Open Anonymity Project's private browser-based AI chat. For your own apps you'll need the local client, which is compatible with the OpenAI and Ollama APIs.
Swap bitcoin for ether to fund your zkAPI vault: the coins go directly to your address, no account needed.
Swap BTC for ETH

