> For the complete documentation index, see [llms.txt](https://docs.1kosmos.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.1kosmos.com/identity-verification/verification-methods/web-to-mobile-handoff.md).

# Web-to-Mobile Handoff

***

Most desktops and laptops don't have a camera that's good enough to capture an ID document  and most users would rather not hold their license up to a webcam anyway. 1Kosmos's **web-to-mobile handoff** lets the user start a verification on whatever device they signed up on, and seamlessly move to their phone for the capture step.

The user never has to copy a link, type a code, or find the SMS app.

### How it works

{% stepper %}
{% step %}

#### User starts on desktop

They click your "Verify your identity" CTA. Their browser opens the session URL on the desktop.&#x20;
{% endstep %}

{% step %}

#### 1Kosmos checks camera capability

The session detects the desktop browser doesn't meet the minimum camera resolution (1080×1920) — or simply isn't a camera-capable form factor.
{% endstep %}

{% step %}

#### A QR code appears

The desktop UI displays a QR code with a one-time, session-bound handoff URL.

The session is **not yet started** on the mobile side it's just an invitation to continue.
{% endstep %}

{% step %}

#### User scans the QR with their phone

The same session same `sessionId`, same flow, same expiry opens on mobile. The desktop UI updates in real time to show "Verification in progress on mobile…
{% endstep %}

{% step %}

#### User completes capture on mobile

Document scan and selfie are captured on the phone. On completion, the desktop UI advances to the result screen.
{% endstep %}
{% endstepper %}

#### When it triggers

The QR handoff is offered automatically when any of these is true:

* No camera is detected on the desktop browser.
* The desktop camera resolution is below the 1080×1920 minimum.
* The user explicitly clicks "Continue on phone" on the start screen.

If the desktop camera *is* adequate (some laptops have very good ones), the user can continue on desktop. The QR option is still shown as an opt-in alternative.

#### Session continuity guarantees

* The `sessionId`, expiry, and result are shared across desktop and mobile. There's no second session created on handoff.
* The result is delivered to **both** browser contexts. Whichever the user closes first, the other still receives the update.
* Handoff URLs are bound to a single session and become invalid after first use.

#### Edge cases

* **User abandons on mobile.** The desktop UI continues to wait until the session's `from_session_start` expiry. After that, the session moves to `abandoned`.
* **User reopens the QR after using it.** The handoff URL has already been consumed; the user is shown a "this link has expired" screen with a button to start over.
* **Two devices race the handoff.** The first successful capture wins; subsequent submissions are rejected with `session_already_terminal`.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.1kosmos.com/identity-verification/verification-methods/web-to-mobile-handoff.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
