---
title: "Change Email"
method: POST
path: "/auth/me/email"
tags: ["auth"]
---

# Change Email

`POST /auth/me/email`

## Request

- Base URL: `https://api.nicheangle.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.nicheangle.com/auth/me/email`
- Auth: none declared

Start an email change. We hand the new address to Supabase with
`email_confirm: false` so Supabase fires its re-verification flow —
we never auto-confirm.

The app `users.email` column reconciles on the next token
verification: `_ensure_user` in app/auth.py rewrites the app row's
email whenever the verified Supabase token's email differs (the
`elif user.email != email` branch). So once the user confirms via the
link and their next token carries the new email, the app row follows
automatically — no extra sync needed here.

## Headers

- `authorization` string, nullable

## Request body

- ChangeEmailRequest
  - `new_email` string, email, required

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

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