---
title: "Retrieve current user based on bearer token"
method: GET
path: "/self"
tags: ["User"]
---

# Retrieve current user based on bearer token

`GET /self`

Used to retrieve information about the current user based on the bearer token presented in the Authentication header

## Response `200`

User

- User
  - `id` string — Unique identifier representing a specific user
  - `created_time` integer — Time at which the user was created
  - `created_by_id` string — The ID of the user who created this user
  - `desktop_app_installed` boolean — Flag indicating whether or not the user has installed electron app
  - `last_updated_time` integer — Time at which the user was last updated
  - `last_updated_by_id` string — The ID of the user who last updated this user
  - `email` string — The user's E-Mail address
  - `email_verified` boolean — Flag indicating whether or not the user's e-mail address has been verified
  - `name` string — The user's full name
  - `given_name` string — The user's first/given name
  - `family_name` string — The user's surname
  - `nickname` string — The user's nickname
  - `locale` string — The user's locale
  - `picture` string — URL of the user's picture
  - `roles` UserRole[] — This user's roles, scoped to the requested workspace or account
    - `role` 'owner' | 'editor' | 'viewer', required — The possible values for user role
    - `workspace_id` string — The workspace this role applies to. Preferred over `organization_id`. At least one of `workspace_id` or `organization_id` must be present.
    - `organization_id` string — Deprecated alias for `workspace_id`. Retained so legacy callers keep working; new code should use `workspace_id`.
    - `acknowledged_status` 'requires_acknowledgement' | 'acknowledged' — Status marking whether the user has acknowledged the welcome message in the joined workspace
  - `company_roles` UserCompanyRole[] — This user's company roles
    - `role` 'owner' | 'editor' | 'viewer', required — The possible values for user role
    - `company_id` string, required — The company to which this role applies
  - `firebase_token` string — Token to use for Firebase authentication
  - `onboarded` boolean — flag indicating whether the workspace the user has joined has gone through onboarding
  - `accepted_invitation` boolean — flag indicating whether the user has ever accepted invitation to any workspace
  - `preferences` UserPreferences
    - `default_workspace_id` string — The workspace to start in each new session
    - `web_ui_theme` 'standard' | 'dark' — The users preferred theme for the web ui
    - `page_settings` object — The settings to load for specified pages
    - `trainer_type` 'chrome_extension' | 'electron' — The users preferred type for the trainer
    - `customer_view_mode` 'standard' | 'customer' — When set to customer, hides employee-only features for demo purposes
  - `company` string — The user's company
  - `phone` string — The user's phone number
  - `onboarding` UserOnboarding — An object containing the onboarding information for a specific User.
    - `lang_prompt_shown` boolean — Indicates if the user was ever prompted to change the language.
    - `existing_email_domain` boolean — Indicates if the user has an email that matched the registered ones in the CompanyDomain entity, at the moment of the user creation. This is a ReadOnly field that's only filled when the user doesn't have a role in any workspace.
    - `should_create_trial_with_existing_email_domain` boolean — Indicates if a trial workspace should be created even when the email domain matches an existing one.
    - `guided_test_creation` 'complete' | 'skipped' | 'not_started' | 'not_available' | 'incomplete' — Indicates the status of the browser test creation guided tour
    - `guided_run_test_results` 'complete' | 'skipped' | 'not_started' | 'not_available' | 'incomplete' — Indicates the status of the browser test run guided tour
    - `mobile_testing_guide_status` 'complete' | 'skipped' | 'not_started' | 'not_available' | 'incomplete' — Indicates the status of the guided mobile testing experience
  - `type` 'agent' | 'normal' — Classification of the user. A null/unset value is equivalent to `normal` and is the default for existing users. `agent` users are synthetic users created to act on behalf of AI agent sessions that were initiated by an API key rather than a human user.

## Other responses

- `401` — User not authenticated
- `403` — Unrecognized user
- `default` — Unknown error

---

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