---
title: "Submit auth OTP code"
method: POST
path: "/api/v1/auth/sessions/{id}/submit"
tags: ["Auth"]
---

# Submit auth OTP code

`POST /api/v1/auth/sessions/{id}/submit`

## Request

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

Submit OTP code for email auth session. Rate limited: 10 requests per minute per IP.

## Path parameters

- `id` string, required: Auth session ID

## Request body

- SubmitAuthCodeRequest: Request body for submitting an auth OTP code
  - `code` string, required: OTP code for email auth

## Response `200`

Code accepted

- 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

- `400`: Invalid code
- `429`: Rate limit exceeded

---

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