Skip to main content

Documentation Index

Fetch the complete documentation index at: https://arize-ax.mintlify.dev/docs/llms.txt

Use this file to discover all available pages before exploring further.

The users client methods are currently in ALPHA. The API may change without notice. A one-time warning is emitted on first use.
Manage account users programmatically. Unlike organizations, users are looked up by ID only — not by name — because display names are not unique within an account.

Key Capabilities

  • List users in the account with optional email and status filters
  • Retrieve user details by ID
  • Create new users with account-level role assignments
  • Update display name and developer permission flag
  • Soft-delete users individually or in bulk (cascades to memberships, API keys, and role bindings)
  • Resend invitations and trigger password-reset emails

List Users

List users in the account. Optionally filter by an email substring (case-insensitive) and one or more statuses.
resp = client.users.list(
    email="@acme.com",            # optional substring filter
    status=["active", "invited"], # optional status filter
    limit=50,
)

for user in resp.users:
    print(user.id, user.email, user.status)
For details on pagination, field introspection, and data conversion (to dict/JSON/DataFrame), see Response Objects.

Get a User

Retrieve a specific user by ID or by exact email address. When user contains @ it is treated as an email and looked up case-insensitively (returns None if no exact match); otherwise it is treated as a user ID.
# By ID
user = client.users.get(user="your-user-id")

# By email (case-insensitive exact match)
user = client.users.get(user="ada@example.com")

print(user.id, user.email, user.role)

Create a User

Create a new user and assign them an account-level role. The email is used as the idempotency key.
from arize.users.types import PredefinedUserRole

user = client.users.create(
    name="Ada Lovelace",
    email="ada@example.com",
    role=PredefinedUserRole(name="member"),  # "admin", "member", or "annotator"
    invite_mode="email_link",                 # "none", "email_link", or "temporary_password"
)

print(user.id, user.email)
To assign a custom RBAC role instead:
from arize.users.types import CustomUserRole

user = client.users.create(
    name="Grace Hopper",
    email="grace@example.com",
    role=CustomUserRole(id="your-custom-role-id"),
    invite_mode="email_link",
)
is_developer defaults to True for admin / member roles and False for annotator. You can override it explicitly:
user = client.users.create(
    name="Annotator Bot",
    email="bot@example.com",
    role=PredefinedUserRole(name="annotator"),
    invite_mode="none",
    is_developer=False,
)

Update a User

Update a user’s metadata. At least one of name or is_developer must be provided.
user = client.users.update(
    user_id="your-user-id",
    name="Updated Name",
    is_developer=True,
)

print(user.id, user.name, user.is_developer)

Delete a User

Soft-delete a user. This cascades to organization memberships, space memberships, API keys, and role bindings.
client.users.delete(user_id="your-user-id")

print("User deleted")

Bulk Delete Users

Soft-delete multiple users in a single call by ID, email, or a mix. When emails are provided, each is resolved to a user ID via a case-insensitive exact match; unresolved emails are recorded as NOT_FOUND. At least one of user_ids or emails must be provided.
results = client.users.bulk_delete(
    user_ids=["user-id-1", "user-id-2"],
    emails=["someone@example.com"],
)

for r in results:
    print(r.id, r.status, r.error)
Each BulkUserDeletionResult has a status of DELETED, NOT_FOUND, or FAILED, with an optional error message for failures.

Resend an Invitation

Resend an invitation email for a pending user. The target user must currently be in the invited state.
client.users.resend_invitation(user_id="your-user-id")

print("Invitation resent")

Reset a Password

Trigger a password-reset email for a user. The user must authenticate via password (not SSO/SAML) and must have already verified their account. The reset link is valid for 30 minutes.
client.users.reset_password(user_id="your-user-id")

print("Password reset email sent")