Update My Profile

PUT /v1/user

Update your own profile. There is no id in the path — this always edits the authenticated caller (it mirrors GET /v1/user). All fields are optional; only the fields you include in the body are updated, the rest are left as-is.

This edits user properties only. Plan and limits are an account property — change them via the account, not here (see /account/plan). Editing another user is a staff-only admin operation.

Request body

full_name string
Your display name. Trimmed and cut to 100 characters; letters, numbers, spaces and . ' - _ ( ) ! ? : , + & only. An empty string clears it.
email string
New email address. It is not switched at once: it is held as pending_email and a verification link is sent to the new address; email changes when you open that link. Needs current_password. Accounts that sign in only through SSO can't change it here (their IdP manages it).
current_password string
Your current password. Required with email.

Any other field (plan, limits, role, status) is an admin-only change and is refused with 403 (code: "admin_field_on_self_route", the refused names in fields); nothing is written.

Response (200 OK)

Returns your updated profile — same shape as GET /v1/user (identity only, including your uuid; no plan/billing fields). A requested email change shows up as pending_email on your next GET /v1/user.

Errors

400 Bad Request
Invalid JSON or invalid email format, email without current_password, a full_name with characters that aren't allowed, or no field to update.
401 Unauthorized
Missing or invalid auth, or a wrong current_password.
403 Forbidden
An admin-only field in the body, or an email change on an SSO-only account.
409 Conflict
The new email is already used by another user.
429 Too Many Requests
Too many wrong current_password attempts; try again later.
Request
curl -X PUT "https://api.ngris.com/v1/user" \ -H "X-API-KEY: <your_api_key>" \ -H "Content-Type: application/json" \ -d '{ "email": "maria.new@example.com", "current_password": "your-current-password" }'
Python
from ngris import Ngris client = Ngris(api_key="<your_api_key>") client.users.update({"full_name": "Maria Garcia"})
Response — 200 OK
{ "uuid": "019a52c2-ca1e-78ba-ab5c-50362cc29134", "username": "maria@example.com", "full_name": "Maria Garcia", "email": "maria@example.com", "email_verified": true, "status": "active", "mfa_enabled": false, "created_at": "2026-01-15T12:00:00Z", "last_login_at": "2026-04-29T08:15:00Z" }
Was this helpful?
On this page
Update My Profile
Was this helpful?