- ZeroAuth replaces stored credentials with zero-knowledge proofs. No passwords in your database. No secrets on the wire. Mathematically impossible to breach. + ZeroAuth is an auth API that replaces stored credentials with zero-knowledge proofs. + Ship signup, login, and device attestation in minutes — with no passwords in your database and no secrets on the wire.
+ Spin up a tenant from the dashboard, grab an API key, and start issuing zero-knowledge proofs from any backend. +
+
+ Sign up to create a tenant. You’ll get a za_test_… key for development and a separate za_live_… key for production.
+
+ POST a commitment from the client SDK. ZeroAuth stores the commitment — never the underlying secret. +
+
+ On every login, send the Groth16 proof to /v1/verifications. Get back a verified principal in <100 ms.
+
# 1. Register a user with a commitment +curl -X POST https://api.zeroauth.dev/v1/users/register \ + -H "Authorization: Bearer $ZEROAUTH_API_KEY" \ + -H "Content-Type: application/json" \ + -d '{ + "external_id": "user_42", + "commitment": "0x1f3c…" + }' + +# 2. Verify a Groth16 proof at login +curl -X POST https://api.zeroauth.dev/v1/verifications \ + -H "Authorization: Bearer $ZEROAUTH_API_KEY" \ + -H "Content-Type: application/json" \ + -d '{ + "external_id": "user_42", + "proof": { "a": [...], "b": [...], "c": [...] }, + "public_signals": ["0x1f3c…"] + }'
import { ZeroAuth } from '@zeroauth/sdk'; + +const za = new ZeroAuth({ apiKey: process.env.ZEROAUTH_API_KEY }); + +// 1. Register a user from your backend +await za.users.register({ + externalId: 'user_42', + commitment, // from client SDK +}); + +// 2. Verify a proof on login +const { verified, principal } = await za.verifications.create({ + externalId: 'user_42', + proof, + publicSignals, +}); + +if (verified) issueSession(principal);
from zeroauth import ZeroAuth + +za = ZeroAuth(api_key=os.environ["ZEROAUTH_API_KEY"]) + +# 1. Register a user +za.users.register( + external_id="user_42", + commitment=commitment, +) + +# 2. Verify a proof +result = za.verifications.create( + external_id="user_42", + proof=proof, + public_signals=public_signals, +) + +if result.verified: + issue_session(result.principal)
+ A typed REST API, a developer console, granular audit logs, and a separation between live and test environments — so you can ship without flying blind. +
+A typed REST API with first-party SDKs for Node and Python. Predictable error codes and idempotent writes.
+Two isolated environments per tenant. Mint, rotate, and revoke za_live_ / za_test_ keys from the dashboard.
+Every signup, verification, key rotation, and device event — searchable, exportable, and tamper-evident.
+Register hardware devices, attach battery + location telemetry, and tie verifications back to a specific endpoint.
+Groth16 verification on a single core. Run it inside our API or self-host the verifier — the math is the same.
+API, dashboard, circuits, and docs are all on GitHub. Audit it. Self-host it. Fork it.
+- We work directly with your security team to deploy ZeroAuth in your environment. No rip-and-replace required. + Self-serve gets you to production for most workloads. For regulated industries or on-prem requirements, our team works directly with your security org — no rip-and-replace required.
We will reach out within one business day to schedule a technical walkthrough.
+For SOC 2, SSO, on-prem, or pilot deployments. We’ll reach out within one business day.
-No credit card required. Free 30-day pilot.
+For self-serve: create an account →