---
title: "Get auth session status"
method: GET
path: "/api/v1/auth/sessions/{id}"
tags: ["Auth"]
---

# Get auth session status

`GET /api/v1/auth/sessions/{id}`

## Request

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

Poll for auth session status. JWT is set as httpOnly cookie on verified response.

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: Auth session ID

## Response `200`

Auth session status

- AuthSessionResponse: Auth session response
  - `id` string, required
  - `type` 'login', required
  - `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 QR code image
  - `qr_text` string: UTF-8 text representation of the QR code for terminal/agent display
  - `expires_at` string, date-time, required
  - `instructions` string
  - `verified_at` string, date-time
  - `user_id` string

## Other responses

- `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)
