---
title: "Send one item or a list for a firm quote. Needs needed_by and contact_email. Nothing is charged until the buyer approves."
method: POST
path: "/api/v1/firm-quote"
tags: ["Quotes"]
---

# Send one item or a list for a firm quote. Needs needed_by and contact_email. Nothing is charged until the buyer approves.

`POST /api/v1/firm-quote`

## Request

- Base URL: `https://mcp.connective-labs.com`
- URL: `https://mcp.connective-labs.com/api/v1/firm-quote`
- Auth: none declared

Submit a request for a firm quote. Use it for one item (category, description, quantity) or for a whole list: pass items (the same line items you gave quote_list) or the list_id that quote_list returned. Covers office or IT items not matched by quote_office_supplies, custom event print and merch (backdrops, signage, branded merch, flyers, packaging), unusual specs, deadlines faster than any instant option, and orders for instantly priced items. Returns a reference; a firm price and date is sent to the contact email, usually the same business day. Nothing is charged until the buyer approves the firm quote. Singapore delivery only.

## Request body

- object
  - `category` 'office-it-supplies' | 'name-cards' | 'lanyards' | 'roll-up-banners' | 'tote-bags' | 'backdrops' | 'event-merch' | 'printed-collateral' | 'packaging': Single-item requests: the category. Not needed when items or list_id is given.
  - `description` string: Single-item requests: what is needed, with all known specs (brand, model, connectors, capacity, size, material, finish, colours, artwork status). For a list, any overall notes.
  - `quantity` integer: Single-item requests: number of units.
  - `items` union[]: List requests: line items, each a string like '2 x HDMI cable 5m' or an object with item, quantity and optional category, brand, model, specs (same shape as quote_list).
    - union
      - string
      - object
  - `list_id` string: List requests: the list_id returned by quote_list (valid 14 days). Its lines are used when items is not given.
  - `needed_by` string, required: Deadline date, YYYY-MM-DD.
  - `delivery_location` string: Delivery address or area in Singapore, or 'self-collect'.
  - `contact_email` string, required: Where to send the firm quote.
  - `contact_name` string
  - `company` string: Buyer's company, if any.
  - `budget_sgd` number: Optional maximum budget in SGD.

## Response `200`

Result (same JSON as the MCP tool of the same name). When nothing matched, email_fallback says where to send the request.

- object

## Other responses

- `400`: Invalid input
- `429`: Rate limited; retry after 60 seconds

---

[API](https://skmtc.dev/connective-labs/apis/singapore-buying-desk-api.md) · [All operations](https://skmtc.dev/connective-labs/apis/singapore-buying-desk-api/llms.txt) · [OpenAPI document](https://skmtc.dev/connective-labs/apis/singapore-buying-desk-api/revisions/03f9e68d1eac?raw)
