---
title: "Get user by ID"
method: GET
path: "/users/{id}"
tags: ["Users"]
---

# Get user by ID

`GET /users/{id}`

Retrieves a single user by their numeric ID. Super-admins can access
any user; regular users can only access users within their organization
(or their own record).

## Path parameters

- `id` integer, required

## Response `200`

User found

- object
  - `message` string
  - `data` UserSafe — User object with password_hash excluded
    - `id` integer, required
    - `name` string, required
    - `surname` string, required
    - `email` string, email, required
    - `role_id` integer, required — 1=Admin, 2=Reviewer, 3=Editor, 4=Auditor, 5=SuperAdmin
    - `created_at` string, date-time, required
    - `last_login` string, date-time
    - `updated_at` string, date-time
    - `is_demo` boolean
    - `organization_id` integer, nullable
    - `profile_photo_id` integer, nullable

## Other responses

- `403` — Access denied (user belongs to different organization)
- `404` — User not found
- `500` — Internal server error

## Changes

- **2026-06-22** `5878ba786a89` — 3 info
  - api operation id `getUserById` was added
  - api tag `Users` added
  - api tag `Users - CRUD` removed
- **2026-04-21** `55cdc040840c` — 7 info
  - api operation id `getUserById` removed and replaced with ``
  - api tag `Users - CRUD` added
  - api tag `Users` removed
  - added the media type `application/json` for the response with the status `200`
  - …3 more
- **2025-09-11** `cfa9ae933c17` — 3 warning, 7 info
  - removed the optional property `data/last_login` from the response with the `200` status
  - removed the optional property `data/password_hash` from the response with the `200` status
  - removed the optional property `data/role` from the response with the `200` status
  - api tag `Users` added
  - …6 more
- **2025-08-29** `af64a3a9480e` — 1 breaking, 8 info
  - the `data` response's property type/format changed from ``/`` to `object`/`` for status `200`
  - added the optional property `data/created_at` to the response with the `200` status
  - added the optional property `data/email` to the response with the `200` status
  - added the optional property `data/id` to the response with the `200` status
  - …5 more
- …earlier changes not shown

[Full history](https://skmtc.dev/verifywise-ai/apis/verifywise-api/changes/users/:id/get.md)

---

[API](https://skmtc.dev/verifywise-ai/apis/verifywise-api.md) · [All operations](https://skmtc.dev/verifywise-ai/apis/verifywise-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/verifywise-ai/verifywise-api/revisions/d657ad4996f4/schema)
