---
title: "Update a user"
method: PATCH
path: "/v2/users/{user_id}"
tags: ["Users"]
---

# Update a user

`PATCH /v2/users/{user_id}`

Update a user's display name and/or developer permission.

**Payload Requirements**
- At least one of `name` or `is_developer` must be provided.
- `name` must be 1–255 characters. Leading and trailing whitespace is stripped before
  validation; whitespace-only values (e.g. `"   "`) are rejected with 400.
- Setting `is_developer` to its current value is a no-op (idempotent).

**Example valid requests:**
```json
{ "name": "Jane Smith" }
{ "is_developer": true }
{ "name": "Jane Smith", "is_developer": false }
```

**Example invalid requests:**
- `{}` — at least one field must be provided
- `{ "name": "   " }` — name cannot be whitespace only

Updating `name` requires account admin role or USER_UPDATE permission.

Updating `is_developer` requires account admin role. Callers without account admin that include
`is_developer` in the body receive `403`.

<Note>This endpoint is in beta, read more [here](https://arize.com/docs/ax/rest-reference#api-version-stages).</Note>

## Path parameters

- `user_id` string, required — A universally unique identifier (base64-encoded opaque string).

## Request body

- UpdateUserRequest
  - `name` string — Updated display name for the user
  - `is_developer` boolean — Set to `true` to grant developer permissions, or `false` to revoke them. When omitted, the current value is preserved.

## Response `200`

An account user object

- User — An account user represents a member of the account. Users can be listed, updated, or removed from the account.
  - `id` string, required — A universally unique identifier (base64-encoded opaque string).
  - `name` string, required — Display name of the user
  - `email` string, email, required — An email address
  - `created_at` string, date-time, required — Timestamp for when the user was created
  - `status` 'ACTIVE' | 'INVITED' | 'EXPIRED', required — Current status of the user in the account. - `ACTIVE`: User has verified their email and can access the platform. - `INVITED`: User has been invited and their verification token is still valid. - `EXPIRED`: User was invited but their verification token has expired or is missing. A new invite is required.
  - `role` union, required — An account-level role assignment. Discriminated by `type`: - `PREDEFINED`: one of the predefined roles (`admin`, `member`, `annotator`) - `CUSTOM`: a custom RBAC role identified by its ID Note: `CUSTOM` role assignments are not yet supported and are reserved for future use.
    - PredefinedUserRoleAssignment — A predefined account-level role assignment.
      - `type` 'PREDEFINED' | 'CUSTOM', required
      - `name` 'ADMIN' | 'MEMBER' | 'ANNOTATOR', required — Account-level role of the user. These are pre-defined roles in Arize.
    - CustomUserRoleAssignment — A custom RBAC role assignment.
      - `type` 'PREDEFINED' | 'CUSTOM', required
      - `id` string, required — A universally unique identifier (base64-encoded opaque string).
      - `name` string — Human-readable name of the custom role. Returned in responses only; ignored on input.
  - `is_developer` boolean, required — Whether the user has developer permissions (can use the Arize API)

## Other responses

- `400` — Invalid request
- `401` — Authentication is required
- `403` — Insufficient permissions to access this resource
- `404` — Not found
- `422` — Unprocessable entity
- `429` — Rate limit exceeded

---

[API](https://skmtc.net/arize-ai/apis/arize-rest-api.md) · [All operations](https://skmtc.net/arize-ai/apis/arize-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/arize-ai/arize-rest-api/versions/2ce448f1de13/schema)
