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

# Connect via mobile / QR

> The creator signs in on their own device — you never see credentials.

When you don't want to handle the creator's credentials at all, start a
**mobile** attempt. The creator approves the login on their own phone, and
you receive the connected account when they're done.

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl -X POST https://api.onlyfanskit.dev/v1/connect/login \
  -H "Authorization: Bearer $OFK_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "auth_type": "mobile_app", "label": "creator" }'
```

Returns `202` with `phone_url` and `auth_code`. Share `phone_url` with the
creator (or render the `auth_code` as a QR). The attempt parks on
`awaiting_mobile_session` until they approve, then resolves to
`completed_success`.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "attempt_id": "att_...",
  "state": "awaiting_mobile_session",
  "phone_url": "https://api.onlyfanskit.dev/v1/connect/login/att_.../phone?token=...",
  "embed_url": "https://api.onlyfanskit.dev/v1/connect/login/att_.../embed?token=..."
}
```

Poll `GET /v1/connect/login/{attemptId}` the same way as
[email/password login](/connect/login).

## Embeddable sessions

For an in-product flow, create a **client session** and embed the hosted page
in a popup or iframe:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl -X POST https://api.onlyfanskit.dev/v1/connect/client-sessions \
  -H "Authorization: Bearer $OFK_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "display_name": "Connect your account", "client_reference_id": "user_42" }'
```

The response includes an `embed_url` you can open with the
`onlyfanskit/browser` helper (`startOnlyFansAuth()`) for a native popup, plus
a `phone_url` to share directly. See [Embedded connect](/connect/embed).
