---
title: "Partial update a quote"
method: PATCH
path: "/v1/quotes/{quoteId}"
tags: ["Quotes"]
---

# Partial update a quote

`PATCH /v1/quotes/{quoteId}`

## Request

- Base URL: `https://api.frihet.io`
- URL: `https://api.frihet.io/v1/quotes/{quoteId}`
- Auth: API key in header `X-API-Key`

Update only the provided fields on an existing quote.

## Path parameters

- `quoteId` string, required

## Request body

- QuoteCreate
  - `clientName` string, required: Client name
  - `items` LineItem[], required
    - `description` string, required: Item description
    - `quantity` number, required: Quantity
    - `unitPrice` number, required: Price per unit
  - `validUntil` string, date: Quote expiration date
  - `status` 'draft' | 'sent' | 'accepted' | 'rejected' | 'expired'
  - `notes` string: Additional notes

## Response `200`

Quote updated

- Quote
  - `id` string: Unique identifier
  - `createdAt` string, date-time
  - `updatedAt` string, date-time
  - `clientName` string, required: Client name
  - `items` LineItem[], required
    - `description` string, required: Item description
    - `quantity` number, required: Quantity
    - `unitPrice` number, required: Price per unit
  - `validUntil` string, date: Quote expiration date
  - `status` 'draft' | 'sent' | 'accepted' | 'rejected' | 'expired'
  - `notes` string: Additional notes
  - `documentNumber` string: Auto-generated quote number
  - `subtotal` number: Subtotal before tax
  - `tax` number: Tax amount
  - `total` number: Total amount including tax

## Other responses

- `400`: Bad request - invalid parameters or request body
- `401`: Authentication required or invalid API key
- `404`: Resource not found
- `429`: Rate limit exceeded (100 requests per minute)
- `500`: Internal server error

---

[API](https://skmtc.dev/frihet/apis/frihet-api.md) · [All operations](https://skmtc.dev/frihet/apis/frihet-api/llms.txt) · [OpenAPI document](https://skmtc.dev/frihet/apis/frihet-api/revisions/3dd37f6a72d1?raw)
