Create new version of proposal
Proposals
Create new version of proposal
Create a new draft version of an existing proposal in the same proposal series.
POST
Create new version of proposal
Use this endpoint to create a new draft version of a proposal that has already been sent. The new draft is a fresh copy of the source proposal in the same proposal series, with a new UUID, and the request body lets you override fields on the new draft. For partial in-place updates of a draft you have not sent yet, useDocumentation Index
Fetch the complete documentation index at: https://docs.proposales.com/llms.txt
Use this file to discover all available pages before exploring further.
Patch proposal (draft). For an entirely new proposal series, use Create proposal.
When to use this endpoint
Pick the right v3 endpoint based on the current state of the proposal on Proposales’ side:- Proposal does not exist yet →
POST /v3/proposals. - Proposal exists and is still
draftortemplate→PATCH /v3/proposals/{uuid}(in-place update, same UUID). - Proposal exists and has already been sent (
active,accepted,replaced,expired, orrejected) → this endpoint (POST /v3/proposals/{uuid}) — it creates a new draft version in the same proposal series.
draft is allowed, but it creates a separate draft alongside the existing one rather than a true new version. For changes to a proposal you have not yet sent, prefer PATCH /v3/proposals/{uuid}.
Eligibility
- The source proposal must exist.
- The caller must have access to the source proposal’s company.
body.company_idmust match the source proposal’s company.- The source proposal must not be
withdrawn. Any other status is accepted (draft,template,active,accepted,replaced,expired,rejected).
Idempotency
Calling this endpoint repeatedly for the same source UUID returns the same draft UUID until that draft is sent or archived. Each call applies your latest body to that draft, so callers should treat this endpoint as “create-or-replace the next-version draft” rather than “always create a new draft”. Once the draft is sent (or archived), a subsequent call mints a fresh new-version draft.What carries over from the source
The new draft inherits the following from the source proposal, unless overridden in the request body:- Blocks, including any title, description, and image customisations made in the editor
- Attachments
- Recipient
- Language
- Title and description
- Tax options
- Background image and background video
- Payment configuration
- Proposal metadata (
data) - Creator and contact person
Path
The UUID of the source proposal to create a new version from.
Request body
The body shape mirrorsCreate proposal; most fields are optional and override the value carried over from the source, but company_id is required (see Eligibility). The body is strict — extra keys return 400 with error.issues describing each problem.
creator_emailis ignored on this route. The creator is preserved from the previous version.
Must equal the source proposal’s
company_id.ISO-style language code (e.g.
en, sv). Required when adding blocks with content_id if the proposal has no stored language.Proposal title as Markdown. Overrides the carried-over title.
Proposal description as Markdown. Overrides the carried-over description.
Same shape as Create proposal.
Email of the internal contact person. Same rules as Create proposal.
Proposal metadata. Replaces the carried-over
data.Same block shape as Create proposal. When provided, the array replaces the carried-over block list on the new draft.
Same attachment shapes as Create proposal. When provided, replaces the carried-over attachments.
Same shape as Create proposal.
Response
Status codes
| Code | Meaning |
|---|---|
200 | New draft version created (or existing one returned and updated under the idempotency rule). |
400 | Body validation failed. Response includes error.issues with per-field details. |
401 | Missing or invalid API token. |