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

# Get session status

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

## Request

- Base URL: `https://api.proof.holdings`
- URL: `https://api.proof.holdings/api/v1/sessions/{id}`
- Auth: HTTP bearer

Poll for session status (use for long-polling).

## Path parameters

- `id` string, required: MongoDB ObjectId

## Response `200`

Session status

- Session: Phone verification session
  - `id` string, required: MongoDB ObjectId
  - `status` 'pending' | 'verified' | 'expired', required
  - `challenge` Challenge: Challenge details for verification
    - `code` string: Challenge code to send/enter
    - `instruction` string: Human-readable instruction for the user
    - `expires_at` string, date-time: When the challenge expires
  - `proof` Proof: Proof token after successful verification
    - `token` string, required: Signed JWT proof token (ES256; verify against the JWKS key named by the token's `kid`)
    - `expires_at` string, date-time, required: When the proof expires
    - `confidence` 'high' | 'standard' | 'degraded': Verification confidence level (present for SMS verifications)
  - `created_at` string, date-time, required
  - `expires_at` string, date-time, required

## Other responses

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