Create Proposal
Proposals
Create Proposal
Create a new draft for a proposal.
POST
Create Proposal
Body
The ID of the Proposales company that the proposal draft should belong to.
A two-letter ISO 3166-1 alpha-2 language code indicating the language of the
proposal.
Email address of the user who should be set as the creator of this proposal.The user must:
- Have an account in the system
- Be a member of the same company specified in
company_id - Not be disabled
creator_email, each salesperson can create proposals that appear under their own name, maintaining proper attribution and audit trails.Email address of the user who should be set as the contact person for this proposal.The user must:
- Have an account in the system
- Be a member of the same company specified in
company_id - Not be disabled
recipient which is the external customer receiving the proposal.Background image id and uuid. Can be fetched from a template.
Background video id and uuid. Can be fetched from a template.
The proposal title as Markdown. Only data URLs for variables are supported, other formatting syntax is ignored.
The proposal description as Markdown. We support
# for headers, * for bold, a < prefix for left-aligned paragraphs and data URLs for variables (see example).The recipient of the proposal. Can either be a new recipient, or existing one.Needs to be this shape:
Proposal metadata. This data is used to fill in variables in the description. Metadata is preserved when a draft is sent, making it ideal for attaching custom data to proposals.
Lineage metadata for the proposal. Two fields are accepted:
created_from_rfplinks the proposal to the RFP it originates from. The RFP must belong to the same company ascompany_id; otherwise the endpoint returns404.created_from_templaterecords the UUID of the template the proposal was created from. The template must exist as a non-archived template in the same company ascompany_id; otherwise the endpoint returns404.
Enable invoicing for this proposal. When set to
true, invoicing details (company name, organization number, address, etc.) can be added on the active proposal.Configure tax-related settings for the proposal. This determines how taxes are displayed and calculated in the proposal.mode: Controls the tax behavior for the proposal:
standard(Recommended): Products have tax/VAT values, and the footer shows totals with and without tax/VATsimplified: Proposal-level setting determines if prices include or exclude tax. Footer only mentions if prices are including/excluding taxtax-free: A special tax mode where taxes are exempt at a legal level. A specific message is shown in the footernone: No tax information is displayed at all
standard mode, this changes which price is displayed. For simplified mode, this determines the footer message.tax_label_key: Custom label for how taxes are referred to in your region (e.g., “Tax” for American companies, “VAT” for European ones).A list of blocks to be added to the draft. The
content_id must be the variation_id of the product in the content library. Additional block data can be passed to overwrite the content library defaults.Video blocks can be added either by referencing a video from the content library using content_id and type: 'video-block', or by passing in the video url, title, and setting the block type to video-block.Needs to satisfy this shape:A list of attachments to be added to the draft. Attachments can be provided in three ways, and you can mix different types in a single request:1. Reference from Content Library - Reuse existing attachments without re-uploading:The attachment will be fetched from your content library. Access control is enforced - the attachment must belong to your company or be shared via content providers.2. HTML Link - Store a URL directly without uploading:The URL is stored as-is and displayed as a clickable link.3. PDF Upload - Upload a file from a URL:The file will be fetched from the URL and hosted reliably by Proposales.Example with mixed attachment types:
Related endpoints
- Update the same draft in place (partial body):
Patch proposal (draft)—PATCH /v3/proposals/{uuid}. - New version of an existing proposal (duplicate then apply body):
Create new version of proposal—POST /v3/proposals/{uuid}(same payload shape as create; returns a new draft UUID in the same proposal series).