Create Quote
POST /quotes
Create a new quote in draft status. Always creates — never sends.
Authorizations
Parameters
Header Parameters
Request Body required
Create a new quote (always starts in draft status).
Mirrors CreateQuoteDTO. At least one of signer_contact_id or
signer_email is required. line_items must be non-empty —
zero-line quotes can’t be invoiced.
object
One line item on a quote request body.
Shape mirrors integrations_v4.interfaces.fastapi.quote_router.LineItemDTO
exactly. Pass either stripe_product_id + stripe_price_id (for a
Stripe-catalogue product) or manual_product_id (for an org-owned
manual catalogue entry), or neither (for a custom one-off line).
Authorization is enforced server-side — non-quotable products are
rejected with 400.
object
Contract month when recurring billing begins; 1 means at contract start. Use billing_start_date instead for an exact date.
In cents
Responses
201
Successful Response
object
Full row + line items + activity + envelope from GET /quotes/{id}.
Open dict because _get_quote_detail returns the dynamic
_row_to_dict shape plus resolved contact/company/envelope blocks.
object
object
object
422
Validation Error