---
title: "Create a Plunet quote with items"
method: POST
path: "/V1/quotes"
tags: ["Quotes"]
---

# Create a Plunet quote with items

`POST /V1/quotes`

Create a Quote + OrderItems in Plunet from Airtable-mapped data. Idempotent on `external_id`: the second POST returns 200 with the existing quote.

## Request body

- QuoteCreateRequest
  - `quote` object, required
    - `external_id` string — Airtable record id, used for idempotence
    - `customer` object, required — Identify the customer by plunet_id, id (uuid) or name (one of)
      - `plunet_id` integer
      - `id` string, uuid
      - `name` string
    - `project_manager` object, required — Identify the PM by email or id (uuid)
      - `email` string, email
      - `id` string, uuid
    - `contact_person` object — Optional. Identify by plunet_id (Plunet customer_contact_id) or email
      - `plunet_id` integer
      - `email` string, email
    - `project_name` string
    - `subject` string
    - `currency` string
    - `order_date` string, date, nullable
    - `delivery_deadline` string, date-time, nullable
    - `rate` number, float, nullable
    - `project_manager_memo` string, nullable
    - `template_id` integer, nullable
    - `items` object[], required
      - `language_source` string
      - `language_target` string
      - `quantity` number, float
      - `description` string, nullable
      - `delivery_date` string, date, nullable

## Response `200`

returns the existing quote when external_id matches

- QuoteCreateResponse
  - `id` string, nullable — Plunet quote id
  - `plunet_id` string, nullable — Same as id
  - `created` boolean — true when newly created, false when idempotent hit on existing external_id
  - `order_reference` string, nullable
  - `status` string, nullable
  - `external_id` string, nullable
  - `items` object[]
    - `id` string, nullable — Plunet item id
    - `language_source` string, nullable
    - `language_target` string, nullable
  - `urls` object
    - `worders_admin` string, uri
    - `plunet` string, uri, nullable

## Other responses

- `201` — quote created in Plunet
- `400` — missing quote key
- `404` — unknown customer

---

[API](https://skmtc.net/worders/apis/worders-api-v1.md) · [All operations](https://skmtc.net/worders/apis/worders-api-v1/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/worders/worders-api-v1/revisions/310150fbd68d/schema)
