Human verification API

A risk score is a guess. This API returns a signature.

Ask a scoring-based human verification or bot detection API whether a real person is behind a request and you get a number — a confidence score, assembled from device fingerprints, mouse movement, timing and network reputation. It is a useful number. It is also a negative inference: an estimate of how much the traffic resembles automation.

That framing has a structural problem. Every signal a scoring system relies on becomes an optimisation target for whatever is trying to get past it, and the models doing the trying improve faster than the heuristics catching them. The score has to keep moving. You inherit that movement.

5arz answers a narrower question and answers it positively: was a real human present for this specific session? The response is an ES256 credential — a signed statement, not a probability. It validates against a public key or it does not, and anyone can run that check without asking us.

Two different questions

These are complementary, not competing. Edge bot mitigation should keep doing the job it is good at. It just cannot produce the artifact below.

 Scoring / bot detection API5arz human verification API
Question askedDoes this traffic look automated?Was a real human present?
Shape of answerA probability you set a threshold againstA signed credential that validates or fails
Who can check itYou, by calling the vendorAnyone, offline, against a public JWKS
If the vendor is offlineYou are blindAlready-issued credentials still verify for their validity window
Passes to a third partyNot portably — the score is yoursYes — the credential travels with the claim
Failure directionFalse positives on unusual real humansAbsence of proof, which is itself readable

The last row matters more than it looks. A scoring system must return an answer for every request, including the ones it has no basis to judge. An attestation layer is allowed to say nothing — and "no credential was issued" is a cleaner input to a decision than a confident-looking 0.5.

One call to issue. One local check to verify.

Register, verify, check. The third step needs no network call to us after the first key fetch.

# 1 · Register — no card, no sales call. An agent can do this itself.
curl -X POST https://api.5arz.com/api/agents/register \
  -H 'Content-Type: application/json' \
  -d '{"name":"Acme","contactEmail":"dev@acme.com","mode":"test"}'
# → { "apiKey": "arz_test_…" }   test-key credentials are marked test:true

# 2 · Verify a human — returns a signed PoHF credential (an ES256 JWT)
curl -X POST https://api.5arz.com/api/agents/verify \
  -H "Authorization: Bearer $ARZ_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 7f3a…' \
  -d '{"sessionId":"sess_…"}'
# → { "ok": true, "attestationId": "…", "pohf_jwt": "eyJhbGciOiJFUzI1NiIs…",
#     "jwks_url": "https://api.5arz.com/.well-known/jwks.json",
#     "verify_hint": "Import the ES256 JWK from jwks_url, validate pohf_jwt…",
#     "creditsRemaining": … }

# 3 · Anyone verifies it — offline, any language, any JWT library
#     Public keys: https://api.5arz.com/.well-known/jwks.json

Fetch the JWKS once and cache it. After that, validation is a local signature check — no round trip, no rate limit, no dependency on our uptime. Re-fetch on key rotation.

Your agent can integrate without you

5arz is listed in the official Model Context Protocol registry. An AI agent can discover the server, register itself, verify a human and check the resulting credential without a person opening a dashboard.

register_agent

Create an API key. Pass mode:"test" for a free sandbox key — 1,000 verifications a day, 10,000 a month.

verify_human

Mint a signed PoHF credential for a verified session, or attest personhood for personhood use.

check_credential

Validate a credential against the live JWKS. No API key required — this is pure verification.

get_vhh_index

Read the published Verified Human Hour index.

get_balance

Check remaining credits on the key.

Endpoint: https://mcp.5arz.com (Streamable HTTP), plus a plan-management tool. Live tool list and copy-paste client config at 5arz.com/mcp.

Where teams put it

Signup and account creation

Attach a portable human attestation at the moment an account is created, so downstream systems inherit proof instead of re-deriving suspicion.

Agent-initiated actions

When an AI agent acts on someone's behalf, record whether a real person was present for the action — not just that one consented months ago at enrollment.

Human-in-the-loop steps

Agent pipelines that require a human judgment call can produce evidence the step really happened, signed and checkable by an auditor.

Content provenance

Attest that a person, not a model, produced or approved a piece of work — a claim a reviewer can validate independently.

Personhood groundwork

Attest that an identity-verified person was present, without collecting or sharing identity attributes, optionally bound to a wallet address. Cross-account uniqueness is not asserted in the credential.

Disclosure and audit trails

Keep a verifiable record of human involvement for regimes that expect organisations to know and show whether a person was in the loop.

What we do not collect

The credential is deliberately thin. It attests that a person was present for a specific action — not who they are.

5arz stores no biometric templates. Liveness runs on the person's own device and only a signed attestation leaves it. Where a flow requires document-based identity verification, that step is carried out by a regulated third-party identity provider under that provider's own retention policy. A relying party receives proof that a real human was present — and does not receive, and cannot derive, that person's identity documents, history or score.

This is a design constraint, not a feature toggle. A verification layer that quietly accumulates identity dossiers becomes a liability to everyone who integrates it, including us.

Questions

What does a human verification API actually return?

Most return a risk score — a probability that traffic looks automated. 5arz returns an ES256 JWT: a signed statement that a real human was present for a specific verified session. The signature either validates against the public key or it does not.

How do I verify a credential without calling 5arz?

Fetch the public keys once from https://api.5arz.com/.well-known/jwks.json, cache them, and verify with any JWT library in any language. After the initial key fetch the check is local. Re-fetch on key rotation.

How do I get an API key?

POST to https://api.5arz.com/api/agents/register with a name and contact email, or call register_agent on the MCP server at https://mcp.5arz.com. No sales call and no card. An AI agent can complete registration on its own.

Is there a sandbox?

Yes. Register in test mode for a sandbox key with the prefix arz_test_ with limits of 1,000 verifications a day and 10,000 a month. Credentials issued by a test key are marked test:true and must never be treated as production proof.

What does human verification cost?

Checking a credential is free and needs no account — anyone can validate any 5arz credential offline against our public keys. Issuing credentials is free up to 1,000 seals a month on the self-serve tier, with no card and no expiry. Paid plans buy the hosted dashboard, retention, monitoring and higher seal volume. Current terms are on the pricing page.

Is biometric data stored?

No biometric templates are stored by 5arz. Liveness runs on the person's own device and only a signed attestation leaves it. Where a flow requires document-based identity verification, that step is performed by a regulated third-party identity provider under that provider's own retention policy.

Does this replace bot detection?

No, and it is not trying to. Edge bot mitigation screens hostile traffic and will keep doing that job. A human attestation answers a different question — whether a real person was present for a specific action — and it is a positive, portable claim rather than a negative inference held by one vendor.

Stop scoring. Start proving.

Two fields, no card, no sales call. Or let your agent register itself through MCP.