---
title: "Accept Supplier Quote"
method: POST
path: "/api/v1/admin/supplier-quotes/{quote_id}/accept"
tags: ["admin-supplier-quotes"]
---

# Accept Supplier Quote

`POST /api/v1/admin/supplier-quotes/{quote_id}/accept`

Accept an inbound-agent-extracted SupplierQuote (PRO-113).

Clears every ``line_items[*].needs_review`` flag, flips
``quote.needs_human_review = False`` (HitL gate cleared), and stamps
``reviewed_at`` + ``reviewed_by``. Idempotent — accepting an
already-accepted quote re-stamps the reviewer fields but leaves the
structured data untouched.

Re-mapping rows to different project parts is handled by the existing
PATCH endpoint — admin corrects rows in-place THEN clicks Accept.

## Path parameters

- `quote_id` string, uuid, required

## Request body

- AcceptSupplierQuoteInput — Body for ``POST /admin/supplier-quotes/{quote_id}/accept`` (PRO-113). Body is currently empty — accept doesn't need any fields beyond the URL path id and the authenticated admin. Wrapped as a model so future additions (e.g. ``notes`` for the audit row) don't break the wire shape.

## Response `200`

Successful Response

- SupplierQuoteRead — Full detail response for ``GET /admin/supplier-quotes/{id}``. Joins the supplier contact's name + email at the schema layer so the FE doesn't have to make a second round-trip. PRO-113 V2: ``attachment_r2_keys`` is now exposed (previously hidden in V1 since admins kept PDFs in Gmail). The V2 Quote Correction View consumes this to render the source-preview panel for attachment- backed inbound replies. Frontend resolves R2 keys to presigned URLs via the dedicated ``/source-preview-url`` endpoint.
  - `id` string, uuid, required
  - `project_id` string, uuid, required
  - `supplier_contact_id` string, uuid, required
  - `supplier_contact_name` string, required
  - `supplier_contact_email` string, required
  - `gmail_thread_id` string, nullable
  - `source` string
  - `total_amount_cents` integer, nullable, required
  - `currency` string, required
  - `lead_time_days` integer, nullable, required
  - `valid_until` string, date-time, nullable, required
  - `line_items` object[], required
  - `notes` string, nullable, required
  - `source_email_body` string, nullable
  - `attachment_r2_keys` string[]
  - `attachment_kinds` string[]
  - `supplier_documents` SupplierQuoteDocumentRead[]
    - `extraction_status` string
    - `latest_extraction_id` string, uuid, nullable
    - `last_extracted_at` string, date-time, nullable
    - `has_reviewable_suggestion` boolean
    - `extraction_error_message` string, nullable
    - `id` string, uuid, required
    - `project_id` string, uuid, required
    - `supplier_contact_id` string, uuid, required
    - `supplier_quote_id` string, uuid, nullable
    - `vendor_thread_state_id` string, uuid, nullable
    - `source` string, required
    - `document_kind` string, required
    - `r2_key` string, nullable
    - `filename` string, nullable
    - `mime_type` string, nullable
    - `file_size_bytes` integer, nullable
    - `gmail_thread_id` string, nullable
    - `gmail_message_id` string, nullable
    - `latest_extraction` CommercialDocumentExtractionSummary — Compact extraction status for list/detail views.
      - `id` string, uuid, required
      - `status` string, required
      - `provider` string, required
      - `schema_version` string, required
      - `confidence` number, nullable
      - `aggregate_total_cents` integer, nullable
      - `currency` string, nullable
      - `max_lead_time_days` integer, nullable
      - `error_message` string, nullable
      - `started_at` string, date-time, nullable
      - `completed_at` string, date-time, 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
  - `document_kind` string, nullable
  - `extraction_confidence` number, nullable
  - `needs_human_review` boolean, required
  - `reviewed_at` string, date-time, nullable, required
  - `reviewed_by` string, uuid, nullable, required
  - `accepted_at` string, date-time, nullable
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required

## 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)
