Authaz logoAuthaz
DocumentationAPI Reference
  • Get Started

    • Authaz
    • Core Concepts
    • Set up your app
    • Quickstart — cURL
  • Authentication

    • Authentication Settings
    • Signup
    • Invitations
    • Password Authentication
    • Multi-Factor Auth
    • Magic Link
    • OAuth / Social Login
    • Passkey (WebAuthn)
    • SAML SSO
    • Machine-to-Machine (M2M)
    • API Keys
  • Authorization

    • Authorization
    • Resources
    • Policies
    • Roles
    • Access Explorer
  • Tenancy

    • Multi-tenancy
    • Tenancy Customization
  • Brand & Host

    • Branding
    • Custom Domains
    • Communications & Email Templates
  • Operate

    • Users
    • Analytics
    • Audit Logs
    • Application Settings
  • SDK Quickstarts

    • Quickstart — Next.js
    • Quickstart — React SPA
    • Quickstart — Hono
    • Quickstart — .NET (Authaz.Sdk)
  • Recipes

    • Recipes & Cookbook
    • Next.js — first integration
    • Next.js — B2B SaaS (multi-tenant)
    • Hono — first integration
    • Hono — B2B SaaS (multi-tenant)
    • React SPA — first integration
    • React SPA — B2B SaaS (multi-tenant)
    • .NET — first integration
    • .NET — B2B SaaS (multi-tenant)
  • Reference

    • Tokens
    • API Reference
    • Errors & Troubleshooting
  • Documentation

    • How Authaz is Built
  1. Authaz
  2. Docs
  3. Operate
  4. Users

Operate

Users

4 min read·Updated Jun 19, 2026

The Users tab is where you find, inspect, and manage the people signed up to your application. It's the page support uses to investigate "I can't log in" and the page security uses to suspend a compromised account.

# List with search and pagination
curl 'https://your-app.authaz.io/api/v1/users?search=acme.com&pageSize=20' \
  -H "X-API-Key: $AUTHAZ_API_KEY"

Where it lives#

Dashboard → Application → Users. The page shows a paginated, searchable table:

ColumnWhat it shows
EmailThe user's primary email. Click to open the detail page.
Statusactive, suspended, locked, pending_approval, .
Previous
Communications & Email Templates
Next
Analytics
pending_verification
MFAYes / No.
Last sign-inTimestamp.
Tenants(multi-tenant only) Which tenants the user belongs to.
CreatedSignup date.

The header has Invite Users (which opens the Invitations flow) and a search box that matches against email and metadata.

User detail#

Clicking a row opens the user detail page, with these sections:

Identity#

  • Email, name, ID, signup method, created/last-active timestamps.
  • The metadata bag — free-form JSON you can read and write via API. Useful for "what plan are they on", "internal notes", etc.

Roles#

Every role assignment, both global and tenant-scoped. The page shows the role name, scope, and an Unassign button. The header has Assign role with a searchable picker.

Sessions#

Every active session — device, IP, location (best-effort), last activity. Each row has a Revoke button; the page header has Revoke all sessions for the nuclear option.

Activity#

Recent events from the audit log filtered to this user. Sign-ins, role changes, MFA setup, password resets — anything attributable to or affecting them.

Security#

MFA status, lockout state, recent failed-login count, password last-changed date. Buttons for Reset MFA, Unlock, Force password reset.

Common operations#

Search#

curl 'https://your-app.authaz.io/api/v1/users?search=alice' \
  -H "X-API-Key: $AUTHAZ_API_KEY"

Search matches against email, name, and metadata fields. Case-insensitive. Returns a paginated items array plus a next cursor.

Get one user#

curl https://your-app.authaz.io/api/v1/users/{userId} \
  -H "X-API-Key: $AUTHAZ_API_KEY"

Suspend / activate#

Suspending blocks all new sign-ins and refresh-token requests. Existing access tokens stay valid until they expire (default 15 min) — pair with sessions/revoke if you need them logged out immediately.

curl -X POST https://your-app.authaz.io/api/v1/users/{userId}/suspend \
  -H "X-API-Key: $AUTHAZ_API_KEY"
 
curl -X POST https://your-app.authaz.io/api/v1/users/{userId}/activate \
  -H "X-API-Key: $AUTHAZ_API_KEY"

Unlock (after lockout)#

When a user fails too many login attempts in a row, they're locked for the configured window. To bypass:

curl -X POST https://your-app.authaz.io/api/v1/users/{userId}/unlock \
  -H "X-API-Key: $AUTHAZ_API_KEY"

Reset MFA#

curl -X POST https://your-app.authaz.io/api/v1/users/{userId}/mfa/reset \
  -H "X-API-Key: $AUTHAZ_API_KEY"

This wipes the user's TOTP secret and recovery codes. They'll be forced to re-enroll on their next sign-in. Always paired with a real identity-verification step on your side — don't reset MFA from a chat message.

Revoke sessions#

# All sessions
curl -X POST https://your-app.authaz.io/api/v1/users/{userId}/sessions/revoke \
  -H "X-API-Key: $AUTHAZ_API_KEY"
 
# A specific session
curl -X DELETE https://your-app.authaz.io/api/v1/users/{userId}/sessions/{sessionId} \
  -H "X-API-Key: $AUTHAZ_API_KEY"

Revoked sessions are unusable immediately — refresh-token requests fail, and any short-lived access token already in the wild expires within the standard window.

Delete#

Soft delete — the user record stays in the database (anonymized) so audit logs remain attributable, but the account is no longer usable and is hidden from the dashboard.

curl -X DELETE https://your-app.authaz.io/api/v1/users/{userId} \
  -H "X-API-Key: $AUTHAZ_API_KEY"

For hard-deletion (GDPR right-to-be-forgotten), pass ?hard=true. This removes the user, their sessions, their roles, their API keys, and overwrites their identifiers in the audit log with a tombstone.

Account recovery#

When a user has lost everything (no password, no MFA, no recovery codes), they hit a wall. Authaz provides a structured recovery flow rather than ad-hoc admin overrides:

  1. User submits a recovery request from Authaz Sign-In: their email, optional context.
  2. Admins see Account Recovery Requests in the dashboard with the request details.
  3. Admins approve (after verifying identity out of band) or deny.
  4. Approved → the user gets an email with a one-time link to set a new password and re-enroll MFA.

Every step is in the audit log — useful when investigating "did anyone improperly recover this account?".

Tenant-scoped users#

In multi-tenant apps, a user belongs to one or more tenants. The Users tab can be filtered by tenant, and the Management API has tenant-scoped variants:

# List users in a specific tenant
curl https://your-app.authaz.io/api/v1/applications/{appId}/tenants/{tenantId}/users \
  -H "X-API-Key: $AUTHAZ_API_KEY"
 
# Add an existing user to a tenant
curl -X POST https://your-app.authaz.io/api/v1/applications/{appId}/tenants/{tenantId}/users \
  -H "X-API-Key: $AUTHAZ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "userId": "user_01h..." }'
 
# Remove from a tenant (does not delete the user)
curl -X DELETE https://your-app.authaz.io/api/v1/applications/{appId}/tenants/{tenantId}/users/{userId} \
  -H "X-API-Key: $AUTHAZ_API_KEY"

In the isolated-pool tenancy mode, users belong to exactly one tenant and the global Users tab segments them per tenant; in shared-pool, users can belong to many.

Next steps#

  • Authorization — assign and inspect roles for users.
  • Audit Logs — what each user has done.
  • Multi-tenancy — when tenant scope changes how users are managed.