---
title: "Update user account"
method: PUT
path: "/api/{org_id}/users/{email_id}"
tags: ["Users"]
---

# Update user account

`PUT /api/{org_id}/users/{email_id}`

## Request

- Base URL: `https://api.openobserve.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.openobserve.ai/api/{org_id}/users/{email_id}`
- Auth: API key in header `Authorization`
- TypeScript: <https://skmtc.dev/openobserve/apis/openobserve-api-http/docs/api/:org_id/users/:email_id/put.ts> (a function with typed inputs; its response is checked against the schema)

Updates user account information including role assignments, password changes, or other profile details. Users can modify their own account settings, while administrators have broader permissions to update any user account. Password changes require the new password to be at least 15 characters long by default or comply to the defined password policy for security compliance. Setting remove_lockout releases an active failed-login lockout and resets the counters; it answers to the same gate as an administrative password reset, so Root or Admin on the organization, and never the locked-out user themselves.

## Path parameters

- `org_id` string, required
- `email_id` string, required

## Request body

- object, nullable
  - `custom_role` string[], nullable
  - `role` string, required
  - `change_password` boolean
  - `first_name` string, nullable
  - `last_name` string, nullable
  - `new_password` string, nullable
  - `old_password` string, nullable
  - `remove_lockout` boolean: Releases an active failed-login lockout and resets the counters. Nothing else ends one early — not even a password change, since the lock records attempts rather than the password — and it is gated like a password reset by an administrator.
  - `token` string, nullable

## Response `200`

Success

- HttpResponse: HTTP response code 200 is success code 400 is error code 404 is not found code 500 is internal server error code 503 is service unavailable code >= 1000 is custom error code message is the message or error message
  - `code` integer, required
  - `error_detail` string, nullable
  - `hint` string, nullable: One-line guidance on how to fix the error (agent self-correction, D4).
  - `id` string, nullable
  - `message` string, required
  - `name` string, nullable
  - `suggestions` string[], nullable: Closest valid alternatives for a mistyped field/function name.
  - `trace_id` string, nullable
  - `warnings` string[], nullable: Problems with a request that succeeded anyway. Distinct from `hint`, which explains a failure: these accompany a 200, and the caller is entitled to have meant it.

---

[API](https://skmtc.dev/openobserve/apis/openobserve-api-http.md) - [All operations](https://skmtc.dev/openobserve/apis/openobserve-api-http/llms.txt) - [OpenAPI document](https://skmtc.dev/openobserve/apis/openobserve-api-http/revisions/0529b8a10252?raw)
