Docs
An acts API with a versioned contract and a client generated from it,
signed webhooks and the journey by link, with no code.
The integration is an act: the client creates it, receives a link, the person completes the steps on their own phone, and the act ends with a receipt. Everything the dashboard does, the API does; the contract is the same.
What is here is the map. The full API reference stays behind the edge access until the public documentation. The TypeScript client is generated from the contract and checked in CI; nothing is written by hand.
Acts
Description
Create, follow and complete. Authentication by the client's API key, with scope; the person's steps are authorized by the act's own token, never by the key.
1.0Create an actavailable
POST /v1/atos with the type, the subject (an opaque client reference and, if any, the transient reference image), the opaque context and the minimum level. The gateway resolves the policy and returns the steps and the journey link.
Types whose steps do not execute yet respond 501 saying which step is missing; nothing is simulated.
See Act2.0Follow and completeavailable
GET /v1/atos with filters by type and state; GET /v1/atos/{id} with the steps in the server's order, the scope, the chaining, the context as a hash only and the minimized verdict; POST /v1/atos/{id}/cancelar. The person advances through POST /v1/atos/{id}/etapas/{nome}, by the act token.
3.0Batch, mandate and exceptionavailable
POST /v1/atos/lote creates many acts of the same type with links and a common deadline, for campaigns and proof of life. POST /v1/mandatos/{id}/revogar. POST /v1/atos/prova-excecao/fonte queries a vital-status source on demand and, if there is an alert, opens the exception proof.
4.0Policy and alertsavailable
GET /v1/politica returns the effective policy per type: level, steps, deadline, label and whether it is executable today. GET /v1/alerts computes the three situations on read, with a filter by type.
See Policy5.0Legacy and standalone routesavailable
The check routes remain as an alias for one version. POST /v1/document validates civil identity (mock or real, depending on accreditation). Standalone POST /v1/match and POST /v1/cpf respond 501 by design: outside an act, there is no proof.
Receipts and webhooks
Description
What leaves the gateway without anyone asking: the receipt of every finished act and the events, signed, with no personal data.
1.0Receiptsavailable
GET /v1/atos/{id}/recibo returns the signed receipt, or 202 while pending. GET /v1/recibos returns the batch in chain order, filtered by issue date: it is what you export to verify outside. GET /v1/verification-links/{token}/recibo is the proof for whoever did the journey.
The public key is at /.well-known/humanproof/keys.json, as a JWKS.
See Receipt2.0Webhooksavailable
Endpoints per client with a rotatable secret, signed delivery and a delivery log; test ping from the dashboard. Events: check.completed, check.approved, check.rejected, check.needs_review, check.failed, check.expired and recibo.emitido.
The payload carries no personal data by construction: ids, type, state, result and hashes; never a CPF, never content.
3.0Dashboard notificationsavailable
The same transitions become dashboard notifications, with preferences per channel and per type.
Journey, dashboard and client
Description
No code: the dashboard generates the link and the person completes the steps on their own phone. With code: the TypeScript client generated from the contract.
1.0Journey by linkavailable
verificar.hummand.com.br/s/{token} renders the steps in the server's order: context transparency, general and biometric consent, live presence on demand, result and proof. A step the gateway does not execute appears as not available yet, never as success.
Sandbox with a simulated result to test the integration without consuming presence or entering the chain.
2.0Client dashboardavailable
dash.hummand.com.br: generate the link, acts, receipts with batch export, mandates, alerts, read-only policy, privacy, API keys, team, webhooks, audit and usage.
3.0Contract and TypeScript clientavailable
The OpenAPI contract is exported from the application and versioned; the TypeScript client is generated from it and its version follows the gateway's. CI fails if contract and client diverge; nothing is written by hand. Private distribution until a recorded decision.
4.0Full reference
The interactive API reference (73 routes in ten routers) stays behind the edge access until the public documentation. Ask for access through the contact; the conversation is technical, straight with the people who build it.
ContactVerify a receipt
Paste the JSON and the public key. No account, nothing sent: it runs in your browser.
Open the verifier