---
title: "Bind Phone Confirm"
method: POST
path: "/api/user/profile/bind-phone-confirm"
---

# Bind Phone Confirm

`POST /api/user/profile/bind-phone-confirm`

Verify OTP + write phone to the caller's user row.

Mirrors /api/auth/sms/login's OTP verification (expiry, max
attempts, constant-time compare) but updates the existing row
instead of creating one. The phone_verified_at column is bumped
to the current UTC stamp so cross-region sync's newest-wins
treats this as the authoritative state.

Returns the updated public-user shape — same as /api/auth/me —
so the SPA can refresh its Pinia store without a separate fetch.

## Headers

- `authorization` string, nullable

## Request body

- BindPhoneConfirmIn
  - `phone` string, required
  - `code` string, required

## Response `200`

Successful Response

- object

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/omicos/apis/omicos-server.md) · [All operations](https://skmtc.dev/omicos/apis/omicos-server/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/omicos/omicos-server/revisions/a00b94573ffe/schema)
