---
title: "E-Mail-Adresse eines Benutzers ändern"
description: "Startet den Wechsel der Anmelde-Adresse eines anderen Benutzers. Er gilt, sobald der Benutzer ihn von der neuen Adresse aus bestätigt."
---

`POST /api/users/:id/email-change`

Ein Organisations-Admin ändert die Anmelde-Adresse eines Mitglieds seiner eigenen Organisation,
ein Global Admin die jedes Benutzers. Die Adresse ändert sich nicht sofort: An die neue Adresse
geht ein Bestätigungslink, 24 Stunden gültig, und erst wenn er geöffnet wird, gilt die Änderung.
Bis dahin meldet sich der Benutzer weiter mit der bisherigen Adresse an. Das Öffnen des Links
meldet niemanden an. Nach der Bestätigung bekommt die alte Adresse einen Hinweis mit der neuen
Adresse und dem Namen dessen, der die Änderung beantragt hat.

Eine neue Anfrage ersetzt eine noch offene frühere, es gilt also nur der jüngste Link.

**API-Tokens können diesen Endpunkt nicht aufrufen.** Er verlangt eine echte, eingeloggte
Benutzer-Session. Hat der aufrufende Admin eine Zwei-Schritt-Bestätigung, bestätigt er zuerst
seinen zweiten Faktor (`403 mfa_step_up_required`: den Code im Dialog des Dashboards eingeben, dann die
Anfrage wiederholen).

Deine eigene Adresse änderst du stattdessen in deinem Profil, dort mit deinem Passwort.

## Anfrage (Request Body)

| Feld | Typ | Pflicht | Beschreibung |
| --- | --- | --- | --- |
| `newEmail` | string | ja | Die neue Anmelde-Adresse. Wird in Kleinbuchstaben gespeichert. |

## Beispiel (cURL)

Rufe diesen Endpunkt aus einer angemeldeten Browser-Session auf (dem Session-Cookie des Admins),
nicht mit einem API-Token:

```bash
BASE_URL="https://uptimeify.io"

curl -X POST "$BASE_URL/api/users/user_123/email-change" \
  -H "Cookie: better-auth.session_token=<dein-session-cookie>" \
  -H "Content-Type: application/json" \
  -d '{"newEmail": "jane.doe@example.com"}'
```

## Antwort

```json
{ "ok": true, "pendingEmail": "jane.doe@example.com" }
```

## Häufige Fehler

- `401 unauthorized`, wenn du nicht angemeldet bist
- `403 nonUserSessionForbidden` beim Aufruf mit API-Token oder Agent-Access-Token
- `403 mfa_step_up_required`, wenn dein Konto eine Zwei-Schritt-Bestätigung hat und du sie in den letzten fünf Minuten nicht bestätigt hast
- `403 forbidden`, wenn du weder Organisations-Admin noch Global Admin bist
- `403 globalUserProtected`, wenn das Ziel ein Plattform-Konto ist (Global Admin oder Supporter) und du kein Global Admin bist
- `404 userNotFound`, wenn es den Benutzer nicht gibt oder er zu einer anderen Organisation gehört
- `400 userSelfChangeForbidden`, wenn `:id` dein eigener Benutzer ist; ändere deine Adresse im Profil
- `400 emailUnchanged`, wenn die neue Adresse die bisherige ist
- `400 emailAlreadyExists`, wenn ein anderes Mitglied deiner Organisation die Adresse schon nutzt. Eine Adresse, die einem Konto außerhalb deiner Organisation gehört, wird nicht genannt: die Anfrage antwortet wie bei einer freien Adresse, es geht kein Link raus
- `502 emailSendFailed`, wenn der Bestätigungslink nicht versendet werden konnte; die Adresse bleibt unverändert
