> ## Documentation Index
> Fetch the complete documentation index at: https://docs.provenmetal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Formal quotes

> A quote from ProvenMetal's team, for any fab or assembler.

For work the instant JLCPCB quote doesn't cover, ProvenMetal's team quotes the order itself. These endpoints read and act on your account's orders in Central. `/central/orders/...` paths remain as aliases.

<Steps>
  <Step title="Submit">
    [`POST /v1/orders`](/api-reference/orders/submit-an-order-for-a-quote) with the files as multipart form data.

    ```bash theme={"system"}
    curl https://api.provenmetal.com/v1/orders \
      -H "X-API-Key: $PROVENMETAL_API_KEY" \
      -F name="Motor controller rev B" \
      -F qty=25 \
      -F gerbers=@gerbers.zip \
      -F bom=@bom.csv \
      -F cpl=@positions.csv \
      -F 'services={"fabrication":true,"part_procurement":true,"assembly":true}' \
      -F request_id=motor-ctrl-revb-0001
    ```

    Resending the same `request_id` returns the same order.
  </Step>

  <Step title="Read the quote">
    [`GET /v1/orders/{identifier}`](/api-reference/orders/get-an-order) returns status and, once issued, the quote options. [`GET /v1/orders`](/api-reference/orders/list-orders) lists them all.
  </Step>

  <Step title="Accept">
    After the customer approves, [`POST /v1/orders/{identifier}/accept-quote`](/api-reference/orders/accept-a-quote) with the option exactly as shown:

    ```json theme={"system"}
    {
      "customer_approved": true,
      "option_id": "opt_2",
      "quote_number": "Q-1042",
      "issued_at": "2026-10-19T17:20:00Z",
      "total_cents": 248500
    }
    ```

    If the quote changed, nothing is accepted.
  </Step>

  <Step title="Track">
    The same order endpoint returns dates and tracking. [Design reviews](/api-reference/orders/get-the-design-review) have their own endpoint.
  </Step>
</Steps>

| Status | `error` | Meaning |
| - | - | - |
| 404 | `order_not_found` | Not on your account |
| 413 | `invalid_file` | File over 20 MB |
| 422 | `design_or_bom_required` | Send Gerbers and/or a BOM |
| 422 | `gerbers_required_for_fabrication` | Fabrication needs Gerbers |
| 422 | `layers_required` | Send `board_layers` |
| 422 | `itar_origin` | ITAR must be `board_origin=us` |
| 422 | `explicit_approval_required` | `customer_approved` must be true |
| 400/409/422 | `quote_not_accepted` | Quote changed |
| 502 | `central_order_incomplete` | Resend with the same `request_id` |
| 502 | `central_unavailable` | Read the order and retry |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.