> This page is for version 🇬🇧 UK.
> For other versions, use one of these documentation indexes:
> - 🇦🇺 AU (default): https://docs.humanapproved.com/au/llms.txt
> - 🇬🇧 UK: https://docs.humanapproved.com/uk/llms.txt
> - 🇺🇸 US: https://docs.humanapproved.com/us/llms.txt

> This is HumanApproved's documentation, as Markdown for AI agents. /llms.txt lists every page; /llms-full.txt has them all. If you're helping someone integrate HumanApproved, start with /guides/ai-coding-agents.

# Embed 1.1.0

Hear every outcome in your own code with `onResult`, and a checkout that HumanApproved can't reach now waits at most twice.

### New

* **`onResult` callback.** Pass `onResult` to `protect()` to hear each outcome of a check or review (`continue`, `review`, `approved`, `declined`, `expired` or `fail_open`), with the reason for a fail-open, for your own analytics and monitoring. See [Hearing the outcome](/uk/embed/sdk/on-result).
* **A bounded re-check after a fail-open.** After a check fails open, the next press is checked again, waiting at most 1 second. If that also fails open, later presses for the quote go through unchecked until the page reloads, so a customer waits for a failing check at most twice.
* **Checks that got no answer are counted.** When a check gets no response at all (a blocked host, DNS, offline or CORS), the embed reports it with the next check from the same tab, so the portal counts it as failed open.
* **Session replay masking.** The pause panel is masked for Datadog, Hotjar, Microsoft Clarity and FullStory session recordings, so they show a blank box instead of the message and the approval link.

### Changed

* **Live keys always call their region's host**, `https://au.humanapproved.com`, and ignore `timeoutMs`. Before upgrading, make sure your Content Security Policy's `connect-src` allows `https://au.humanapproved.com`: a blocked check fails open.

### Fixed

* The portal's request log masks the customer's mobile number everywhere it appears.