---
title: "Admin User Detail"
method: GET
path: "/api/v1/quick-spaces/admin/users/{user_id}"
tags: ["quickSpaces", "quickSpaces"]
---

# Admin User Detail

`GET /api/v1/quick-spaces/admin/users/{user_id}`

## Path parameters

- `user_id` string, required

## Query parameters

- `start` string, nullable — YYYY-MM-DD, inclusive, UTC
- `end` string, nullable — YYYY-MM-DD, inclusive, UTC

## Headers

- `X-Admin-Session` string, nullable

## Response `200`

Successful Response

- AdminUserDetailResponseDTO
  - `range` AdminRangeDTO, required — The window every number on the response was computed over. Inclusive on both ends, UTC.
    - `start` string, date, required
    - `end` string, date, required
    - `days` integer
  - `user` AdminUserRowDTO, required — One row of the users table. Every field is present on every row, whatever the source. `source` says which identity table the row came from, and it is load-bearing rather than cosmetic: a `space_user` is an isolated identity with no foreign key from assets, share links or projects, so its productivity columns are structurally 0 and must be read as "not recorded", not as "did nothing". See admin_analytics for the two bridges and why they stay heuristics.
    - `user_id` string, required
    - `name` string
    - `email` string
    - `role` string
    - `status` string
    - `source` string
    - `joined_at` string, date-time, nullable
    - `last_active_at` string, date-time, nullable
    - `workspaces` integer
    - `projects_created` integer
    - `creatives_uploaded` integer
    - `share_links_created` integer
    - `creatives_shared` integer
    - `views_received` integer
    - `downloads_received` integer
    - `comments_written` integer
    - `comments_received` integer
    - `approvals` integer
    - `avg_turnaround_days` number, nullable
    - `active_days` integer
  - `totals` AdminUserTotalsDTO, required — The parts of one user's activity that do not fit the flat table row.
    - `creatives_by_type` AdminLabelCountDTO[]
      - `label` string, required
      - `count` integer
    - `projects_by_status` AdminLabelCountDTO[]
      - `label` string, required
      - `count` integer
    - `revisions` integer
    - `projects_delivered` integer
    - `projects_touched` integer
    - `creatives_per_project` number
  - `recent_projects` AdminUserProjectDTO[]
    - `id` string, required
    - `title` string
    - `status` string
    - `created_at` string, date-time, nullable
    - `delivered_at` string, date-time, nullable
    - `due_date` string, date-time, nullable
    - `creatives` integer
  - `recent_shares` AdminUserShareDTO[]
    - `id` string, required
    - `title` string
    - `created_at` string, date-time, nullable
    - `creatives` integer
    - `views` integer
    - `downloads` integer
    - `enabled` boolean
    - `watermark` boolean
    - `password_protected` boolean
    - `expires_at` string, date-time, nullable
  - `timeseries` AdminTimeseriesPointDTO[]
    - `date` string, date, required
    - `signups` integer
    - `projects` integer
    - `creatives` integer
    - `shares` integer
    - `views` integer
    - `downloads` integer
    - `comments` integer
    - `active_users` integer

## Other responses

- `422` — Validation Error

## Changes

- **2026-09-02** `ff7f2b621b41` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/brandbooster/apis/fastapi/changes/api/v1/quick-spaces/admin/users/:user_id/get.md)

---

[API](https://skmtc.dev/brandbooster/apis/fastapi.md) · [All operations](https://skmtc.dev/brandbooster/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/brandbooster/fastapi/revisions/ff7f2b621b41/schema)
