> ## Documentation Index
> Fetch the complete documentation index at: https://docs.contactbutton.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Human confirmation

> Complete subscriptions, bookings, and callback requests with an emailed six-digit challenge that proves the represented human approved the agent action.

An agent may initiate a request only after its user asks. Include `requested_by: agent` and identify the agent in `agent_context`.

```json theme={null}
{
  "requested_by": "agent",
  "agent_context": {
    "name": "Acme Assistant",
    "provider": "Example AI",
    "identifier": "agent_7f3c",
    "acting_for": "the email recipient"
  }
}
```

The create response has status `pending_confirmation` and a challenge UUID. Contact Button sends the code directly to the human's email. Submit it to:

```http theme={null}
POST /v1/public/pages/{page_id}/confirmation-challenges/{challenge_id}/confirm
```

Do not ask a human to paste the OTP into an untrusted third-party agent. If the user declines, stop. A challenge expires after 15 minutes and locks after repeated invalid attempts.


## Related topics

- [Contact Button for agents](/agents/overview.md)
- [API-first architecture](/concepts/api-first.md)
- [Set up with a coding agent](/agents/coding-agents.md)
- [Update notification and agent policy settings](/api-reference/workspaces/update-notification-and-agent-policy-settings.md)
- [Authentication](/authentication.md)
