---
title: "Admin Project Detail"
method: GET
path: "/api/v1/quick-spaces/admin/projects/{project_id}"
tags: ["quickSpaces", "quickSpaces"]
---

# Admin Project Detail

`GET /api/v1/quick-spaces/admin/projects/{project_id}`

## Path parameters

- `project_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

- AdminProjectDetailResponseDTO
  - `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
  - `project` AdminProjectRowDTO, required — One project on the projects table. DISTINCT projects — one row per project, never one per assignee, whatever the assignment list looks like. `creatives`, `comments`, `share_links`, `views` and `downloads` are all window-scoped. `turnaround_days` is measured per PROJECT (done_at minus created_at) and is present only for a project that finished; it is never averaged out of per-user numbers. `views`/`downloads` are reach, not a partition: a share link that carries assets from two projects contributes its hits to both, because a hit on that link genuinely was a hit on both projects' work and there is no per-asset activity row to split it with.
    - `id` string, required
    - `title` string
    - `status` string
    - `workspace` AdminProjectWorkspaceDTO
      - `id` string
      - `name` string
    - `created_at` string, date-time, nullable
    - `done_at` string, date-time, nullable
    - `delivered_at` string, date-time, nullable
    - `due_date` string, date-time, nullable
    - `assignees` AdminUserRefDTO[]
      - `user_id` string
      - `name` string
      - `email` string
      - `role` string
    - `assignee_count` integer
    - `creatives` integer
    - `comments` integer
    - `share_links` integer
    - `views` integer
    - `downloads` integer
    - `turnaround_days` number, nullable
    - `created_in_range` boolean
    - `delivered_in_range` boolean
  - `assignees` AdminUserRefDTO[]
    - `user_id` string
    - `name` string
    - `email` string
    - `role` string
  - `creatives` AdminProjectCreativeDTO[]
    - `id` string, required
    - `name` string
    - `type` string
    - `status` string
    - `version` integer
    - `created_at` string, date-time, nullable
    - `uploader` AdminUserRefDTO — A person named from another object — a project's assignee, a creative's uploader, a share link's owner. Identity only; every productivity number about them lives on their own row. Present as an object rather than a bare id because the two identity tables mean an id alone is not resolvable by the client: a monolith UUID and a Spaces 32-char hex look the same in JSON and only the server knows which directory to look in.
      - `user_id` string
      - `name` string
      - `email` string
      - `role` string
  - `creatives_total` integer
  - `creatives_by_type` AdminLabelCountDTO[]
    - `label` string, required
    - `count` integer
  - `share_links` AdminShareRowDTO[]
    - `id` string, required
    - `title` string
    - `created_at` string, date-time, nullable
    - `created_by` AdminUserRefDTO — A person named from another object — a project's assignee, a creative's uploader, a share link's owner. Identity only; every productivity number about them lives on their own row. Present as an object rather than a bare id because the two identity tables mean an id alone is not resolvable by the client: a monolith UUID and a Spaces 32-char hex look the same in JSON and only the server knows which directory to look in.
      - `user_id` string
      - `name` string
      - `email` string
      - `role` string
    - `enabled` boolean
    - `expires_at` string, date-time, nullable
    - `watermark` boolean
    - `password_protected` boolean
    - `downloads_allowed` boolean
    - `folder_backed` boolean
    - `assets` integer
    - `views` integer
    - `downloads` integer
    - `comments` integer
    - `last_activity_at` string, date-time, nullable
  - `comments_count` integer
  - `timeseries` AdminProjectPointDTO[]
    - `date` string, date, required
    - `creatives` integer
    - `comments` integer
    - `views` integer
    - `downloads` 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/projects/:project_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)
