Update my profile
Profile
Update my profile
Edit the authenticated user’s profile (Edit Profile screen).
PATCH
Update my profile
Overview
Updates the authenticated user’s profile. Every field is optional — send only what changed (at least one field is required). Returns the full updated profile (same shape asGET /users/me).
Email is not editable here. Changing the email would require a re-verification flow; it is omitted deliberately.
Setting the profile photo
The avatar uses the standard upload pipeline:POST /uploads/presignwithfileType: "AVATAR".PUTthe image bytes to the returned URL with the returned headers.POST /uploads/confirm→ returns anuploadId.PATCH /users/mewith{ "avatarUploadId": "<that id>" }. The server resolves it to the public CDN url and stores it asavatarUrl.
Authentication
Bearer <accessToken> required. Scope: user.
Request body
| Field | Type | Required | Constraints |
|---|---|---|---|
firstName | string | no | 1..100 chars after trim. |
lastName | string | no | 1..100 chars after trim. |
dateOfBirth | string | no | ISO YYYY-MM-DD; must be 18 or older. |
bio | string | null | no | ≤ 500 chars. Send null to clear it. |
avatarUploadId | string | no | 24-char ObjectId of a confirmed AVATAR upload owned by you. |
Response — 200 OK
The full updated profile — see GET /users/me for the field table.
Error responses
| Status | Code | Meaning |
|---|---|---|
| 400 | VALIDATION_FAILED | Empty body; name out of range; dateOfBirth not YYYY-MM-DD or under 18; bio over 500 chars. |
| 401 | UNAUTHENTICATED | Missing, malformed, or expired access token. |
| 404 | NOT_FOUND | User gone, or avatarUploadId is not a confirmed AVATAR upload owned by you. |
Side effects
- Writes the provided non-PII fields (
firstName,lastName,bio,avatarUrl). dateOfBirth, when provided, is written through the encrypted-at-rest PII path.
See also
- Get my profile
- Presign upload URLs — step 1 of the avatar flow.