---
title: "listUsersV2"
method: GET
path: "/v2/users"
tags: ["User V2"]
---

# listUsersV2

`GET /v2/users`

Get the list of organization users

## Query parameters

- `query` string
- `limit` number
- `offset` number

## Response `200`

List of organization users

- object
  - `results` UserV2[]
    - `id` string — User's unique identifier
    - `organization_id` string
    - `created_at` string, date-time
    - `activated_at` string, date-time
    - `display_name` string — User's display name (default: email address)
    - `status` 'Active' | 'Pending' | 'Deactivated' | 'Deleted'
    - `email` string, email — User's email address
    - `draft_email` string, email, nullable — User's pending email address
    - `draft_email_expires_at` string, date-time, nullable — Server-set expiry for the pending email change verification link (ISO 8601). Read-only.
    - `password_reset_token_hash` string, nullable — Internal: sha256 hash of the active password-reset token. Server-set, never returned in responses.
    - `password_reset_token_expires_at` string, date-time, nullable — Internal: expiry for the active password-reset token (ISO 8601). Server-set, never returned in responses.
    - `department` string, nullable — User's department
    - `phone` string, nullable — User's phone number
    - `secondary_phone` string, nullable — User's secondary phone number, preferred for communication
    - `mfa_enabled` boolean — User's multi-factor authentication status
    - `totp_enabled` boolean — Whether the user has TOTP (authenticator app) MFA enabled
    - `has_passkeys` boolean — Whether the user has any registered passkeys
    - `phone_verified` boolean — User's phone number verification status
    - `token` string — Token used to invite a user to epilot
    - `signature` string, nullable — User's email signature
    - `is_signature_enabled` boolean, nullable — Whether the user's signature is enabled
    - `preferred_language` string — User's preferred language
    - `custom_start_page` string, nullable — User's start page after login
    - `custom_navigation` string, nullable — Navigation unique identifier - a hash of the normalized navigation payload (name + configuration). Identical navigations across orgs will have the same ID.
    - `override_release_channel` 'canary' | 'rc' | 'stable' | 'null', nullable — This field is used to override the release channel for the user.
    - `feature_preferences` object, nullable — User's feature preferences
    - `image_uri` object, nullable — User's custom profile image
      - `original` string, uri
      - `thumbnail_32` string, uri
    - `favorites` object
    - `email_notification_setting` object
    - `in_app_notification_setting` object — Per-notification-type in-app delivery preferences (notification type key -> enabled). Written by the my-account notification settings UI and honored by svc-notification-api at delivery time. Absent or partial keys fall back to each notification type's configured default. Mirrors email_notification_setting for the in-app channel.
    - `properties` object[]
      - `name` string, required
      - `value` string, required
    - `tags` string[], nullable — User tags/labels assigned for classification (e.g. label slugs)

---

[API](https://skmtc.net/epilot/apis/user-api.md) · [All operations](https://skmtc.net/epilot/apis/user-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/epilot/user-api/revisions/7fae886a3c99/schema)
