---
title: "Get Project Detail"
method: GET
path: "/api/v1/admin/projects/{project_id}"
tags: ["admin-projects"]
---

# Get Project Detail

`GET /api/v1/admin/projects/{project_id}`

Get full project detail with user info, parts, quotes, and comments.

## Path parameters

- `project_id` string, uuid, required

## Response `200`

Successful Response

- AdminProjectDetailResponse — Full project detail for admin view with all nested data.
  - `id` string, uuid, required
  - `name` string, required
  - `description` string, nullable
  - `notes` string, nullable
  - `internal_status` string, nullable
  - `internal_notes` string, nullable
  - `status` string, required
  - `priority` string, required
  - `target_delivery_date` string, date, nullable
  - `shipping_address_id` string, uuid, nullable
  - `shipping_address` ShippingAddressResponse — Full shipping address representation.
    - `id` string, uuid, required
    - `user_id` string, uuid, required
    - `label` string, required
    - `address_line1` string, required
    - `address_line2` string, nullable
    - `city` string, required
    - `state` string, required
    - `postal_code` string, required
    - `country` string, required
    - `is_default` boolean, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
  - `customer_billing_address` string, nullable
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `user` UserSummary, required — Minimal user info for denormalized list views.
    - `id` string, uuid, required
    - `email` string, required
    - `first_name` string, required
    - `last_name` string, required
    - `company` string, nullable
  - `parts` AdminPartDetail[]
    - `id` string, uuid, required
    - `name` string, required
    - `description` string, nullable
    - `required_quantity` integer, required
    - `machining_process_id` string, uuid, nullable
    - `material_id` string, uuid, nullable
    - `finishing_id` string, uuid, nullable
    - `machining_process_label` string, nullable
    - `material_label` string, nullable
    - `finishing_label` string, nullable
    - `custom_material_name` string, nullable
    - `custom_finishing_name` string, nullable
    - `coating_id` string, uuid, nullable
    - `coating_label` string, nullable
    - `coating_color` string, nullable
    - `coating_spec` string, nullable
    - `custom_coating_name` string, nullable
    - `general_tolerance` string, nullable
    - `edge_break_default` string, nullable
    - `ai_estimate` AdminPartAiEstimate — Lean AI pricing and lead-time summary for admin project rows.
      - `unit_price_mid` number, nullable
      - `total_price_mid` number, nullable
      - `confidence` union
        - number
        - string
      - `manual_quote_required` boolean
      - `raw_shop_days` integer, nullable
      - `standard_days` integer, nullable
      - `buffer_days` integer, nullable
      - `customer_lead_time_min_days` integer, nullable
      - `customer_lead_time_max_days` integer, nullable
    - `effective_coating_label` string, nullable
    - `effective_finishing_label` string, nullable
    - `versions` AppSchemasAdminCadVersionSummary[]
      - `id` string, uuid, required
      - `version_number` integer, required
      - `is_latest` boolean, required
      - `file_name` string, required
      - `original_file_name` string, required
      - `file_format` string, required
      - `file_size` integer, required
      - `status` string, required
      - `thumbnail_url` string, nullable
      - `dfm_issues` union
        - object
        - unknown[]
          - unknown
      - `created_at` string, date-time, required
      - `width` number, nullable
      - `height` number, nullable
      - `depth` number, nullable
      - `dimension_unit` string, nullable
      - `volume` number, nullable
      - `surface_area` number, nullable
    - `drawing_file_name` string, nullable
    - `drawing_r2_key` string, nullable
    - `drawing_file_size` integer, nullable
    - `drawing_analysis` object, nullable
    - `redacted_drawing_r2_key` string, nullable
    - `redaction_status` string, nullable
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
  - `quotes` QuoteDetailResponse[]
    - `id` string, uuid, required
    - `status` string, required
    - `intent` string
    - `total_amount` string, nullable
    - `lead_time_days` integer, nullable
    - `lead_time_display` string, nullable
    - `additional_line_items` AdditionalLineItemOutput[], nullable
      - `label` string, required
      - `quantity` integer, nullable — Optional display quantity for admin-entered misc line items. When set, the PDF shows the quantity alongside the label. The amount remains the line amount, not a unit price.
      - `amount` string, required
    - `additional_line_items_post_tax` AdditionalLineItemOutput[], nullable
      - `label` string, required
      - `quantity` integer, nullable — Optional display quantity for admin-entered misc line items. When set, the PDF shows the quantity alongside the label. The amount remains the line amount, not a unit price.
      - `amount` string, required
    - `valid_until` string, date-time, nullable
    - `notes` string, nullable
    - `ai_estimate` object, nullable
    - `ai_estimate_generated_at` string, date-time, nullable
    - `is_human_reviewed` boolean, required
    - `require_deposit` boolean
    - `deposit_percentage` string, nullable
    - `customer_name_override` string, nullable
    - `customer_email_override` string, nullable
    - `customer_billing_address_override` string, nullable
    - `customer_shipping_address_override` string, nullable
    - `customer_shipping_name_override` string, nullable
    - `reviewed_by` string, nullable
    - `reviewed_at` string, date-time, nullable
    - `tax_amount` string, nullable
    - `tax_auto_calculated` string, nullable
    - `tax_rate` string, nullable
    - `quote_pdf_url` string, nullable
    - `cost_snapshot` object, nullable
    - `pricing_config_version` string, nullable
    - `snapshot_version` integer
    - `selected_delivery_option_id` string, uuid, nullable
    - `selected_delivery_option` QuoteDeliveryOptionResponse — Selectable quote option with its own lead time and pricing.
      - `id` string, uuid, required
      - `quote_id` string, uuid, required
      - `key` string, required
      - `label` string, required
      - `description` string, nullable
      - `sort_order` integer, required
      - `is_enabled` boolean, required
      - `is_default` boolean, required
      - `lead_time_days` integer, nullable
      - `lead_time_display` string, nullable
      - `pricing_multiplier` string, nullable
      - `lead_time_multiplier` string, nullable
      - `taxable_amount` string, nullable
      - `tax_amount` string, nullable
      - `tax_auto_calculated` string, nullable
      - `tax_rate` string, nullable
      - `stripe_tax_calculation_id` string, nullable
      - `post_tax_amount` string, nullable
      - `grand_total_amount` string, nullable
      - `admin_notes` string, nullable
      - `line_items` QuoteDeliveryOptionLineItemResponse[]
        - `id` string, uuid, required
        - `delivery_option_id` string, uuid, required
        - `part_id` string, uuid, nullable
        - `part_name` string, nullable
        - `description` string, nullable
        - `quantity` integer, nullable
        - `unit_price` string, nullable
        - `total_price` string, nullable
        - `is_additional` boolean
        - `is_taxable` boolean
        - `sort_order` integer
        - `notes` string, nullable
        - `created_at` string, date-time, required
        - `updated_at` string, date-time, required
      - `created_at` string, date-time, required
      - `updated_at` string, date-time, required
    - `project_id` string, uuid, required
    - `line_items` QuoteLineItemResponse[]
      - `id` string, uuid, required
      - `part_id` string, uuid, required
      - `part_name` string, nullable
      - `description` string, nullable
      - `quantity` integer, required
      - `unit_price` string, nullable
      - `total_price` string, nullable
      - `notes` string, nullable
      - `created_at` string, date-time, required
      - `updated_at` string, date-time, required
    - `delivery_options` QuoteDeliveryOptionResponse[]
      - `id` string, uuid, required
      - `quote_id` string, uuid, required
      - `key` string, required
      - `label` string, required
      - `description` string, nullable
      - `sort_order` integer, required
      - `is_enabled` boolean, required
      - `is_default` boolean, required
      - `lead_time_days` integer, nullable
      - `lead_time_display` string, nullable
      - `pricing_multiplier` string, nullable
      - `lead_time_multiplier` string, nullable
      - `taxable_amount` string, nullable
      - `tax_amount` string, nullable
      - `tax_auto_calculated` string, nullable
      - `tax_rate` string, nullable
      - `stripe_tax_calculation_id` string, nullable
      - `post_tax_amount` string, nullable
      - `grand_total_amount` string, nullable
      - `admin_notes` string, nullable
      - `line_items` QuoteDeliveryOptionLineItemResponse[]
        - `id` string, uuid, required
        - `delivery_option_id` string, uuid, required
        - `part_id` string, uuid, nullable
        - `part_name` string, nullable
        - `description` string, nullable
        - `quantity` integer, nullable
        - `unit_price` string, nullable
        - `total_price` string, nullable
        - `is_additional` boolean
        - `is_taxable` boolean
        - `sort_order` integer
        - `notes` string, nullable
        - `created_at` string, date-time, required
        - `updated_at` string, date-time, required
      - `created_at` string, date-time, required
      - `updated_at` string, date-time, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
  - `comments` ProjectCommentResponse[]
    - `id` string, uuid, required
    - `project_id` string, uuid, required
    - `author_id` string, required
    - `author_type` string, required
    - `author_name` string, required
    - `message` string, required
    - `is_internal` boolean, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
  - `request_for_order_date` string, date-time, nullable
  - `order_placed_at` string, date-time, nullable
  - `expected_delivery_date_min` string, date, nullable
  - `expected_delivery_date_max` string, date, nullable
  - `is_locked` boolean
  - `quote_needs_resend` boolean

## Other responses

- `422` — Validation Error

---

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