# ZeroAge customer API ZeroAge lets an application request an age check and receive `yes`, `no`, or `unsure` without receiving document identity data. - Create a verification with a unique idempotency key, then treat the returned handoff URL as sensitive bearer access. - Read the immutable original result separately from the current assessment. Later concerns can change only the current assessment. - Receive completion and status changes through webhooks. Save and deduplicate events before processing them, and handle retries and out-of-order revisions. - Treat API errors separately from age results. A failed, cancelled, expired, or unsupported verification produces `unsure`, never `no`. - Keep API credentials and the webhook verification secret on the customer backend. Treat each handoff URL as sensitive bearer access and share it only with the person completing that check. ## Documentation - [Overview](/api/index.md) - [Quickstart](/api/quickstart.md) - [Results and revisions](/api/results.md) - [Webhooks and recovery](/api/webhooks.md) - [Integration testing](/api/testing.md) - [OpenAPI specification](/api/v1/openapi.yaml)