Skip to main content

Write an offer on this contact's linked CRM record

POST 

/api/contacts/:contact/crm/quote

Creates a quote in the connected CRM for the record this contact is linked to. Refused when the contact carries more than one linked record, for the same reason a booking is: an offer written on the wrong chart is a document sent to a patient about somebody else's treatment.

The prices come from this request. Since 2026-09-28 the CRM's catalogue publishes a price (before that it carried none), but an offer is a negotiated document: the catalogue price is where the panel starts, and the caller asserts the figure actually offered — a pricing-authority question a clinic answers with the tenant's write switch.

This endpoint requires MORE than the provider does. The provider accepts a line with no quantity, no amount and no currency — measured — and the offer that results sits in a clinic's pipeline carrying no value, which is the accepted-but-incomplete write that the whole staged opening exists to prevent. A line naming a catalogue kind nobody has measured (package) is refused rather than sent hopefully: the vendor's entityType is a plain string, and an unrecognised value is not guaranteed to be rejected.

Request​

Responses​

Written, and read back — write.observed.routed_to says where each line landed.