---
title: "Get account-session status"
method: GET
path: "/api/v1/accounts/{id}"
tags: ["Accounts"]
---

# Get account-session status

`GET /api/v1/accounts/{id}`

## Request

- Base URL: `https://api.proof.holdings`
- URL: `https://api.proof.holdings/api/v1/accounts/{id}`
- Auth: none declared

Poll an account-bootstrap session. Sets JWT + refresh cookies on verified status — the response shape does not vary with whether verification created a User or signed an existing one in.

A session whose sign-in was STARTED with an API key is bound to that key when it is issued (see the create endpoint): every copy of it — this poll, the messenger's "Open Dashboard" link, a magic link — ends when the key is revoked by any path. A poll presenting an API key the API no longer accepts (`Authorization: Bearer pk_…`) gets 401 `invalid_api_key` and no cookie. A poll without a `pk_` bearer is unaffected.

## Path parameters

- `id` string, required: Account session ID

## Response `200`

Account session status

- AccountSessionResponse: Account-session response. Same wire format whether the request created a new account or pivoted to login — the `type` field distinguishes the outcome.
  - `id` string, required
  - `type` 'account_creation' | 'login', required: Outcome of an account-session creation. `account_creation` means a new User will be written on verification. `login` indicates the submitted identity matched an existing User and the session will log them in.
  - `channel` 'telegram' | 'whatsapp' | 'sms' | 'email', required: Authentication channel
  - `status` 'pending' | 'verified' | 'expired', required: Status of an auth session
  - `deep_link` string
  - `qr_code` string: Base64-encoded PNG QR code for the deep link
  - `qr_text` string: UTF-8 text QR for terminal/agent rendering
  - `sms_code` string: Short code for SMS-channel reverse-OTP
  - `sms_message` string
  - `email` string
  - `email_sent` boolean
  - `email_error` string
  - `expires_at` string, date-time, required
  - `instructions` string
  - `verified_at` string, date-time
  - `user_id` string
  - `created_at` string, date-time

## Other responses

- `400`: Invalid session ID format
- `401`: `invalid_api_key` — a verified session was collected with an API key the API no longer accepts; no cookie is set.
- `404`: Session not found

---

[API](https://skmtc.dev/proof/apis/proof-holdings-api.md) · [All operations](https://skmtc.dev/proof/apis/proof-holdings-api/llms.txt) · [OpenAPI document](https://skmtc.dev/proof/apis/proof-holdings-api/revisions/b15f506de696?raw)
