Vezmo App

Sales · Proposals

Update proposal

Changes only the fields you send; the rest stay as they are. Only a draft or a rejected proposal can be edited; on any other, only its status can change.

Authorization

Header

Path parameters

id string Required

ID of the proposal to change.

Body parameters

clientId string

ID of one of your clients (another ID returns 404).

title string

Proposal title.

description string

Short summary of the work.

amount number

Price, up to 2 decimals, with the same limits as Create proposal. It can't change once your client has accepted.

currency string

Three-letter currency code Vezmo supports, such as USD. It can't change once your client has accepted.

chargeType enum

FIXED | HOURLY | CUSTOM | RECURRING. With HOURLY the amount is a rate, so accepting creates no invoice.

status enum

DRAFT | PENDING | SENT | ARCHIVE. It can change at any time, but once your client has accepted, only to ARCHIVE. ACCEPTED and REJECTED answer 400 (sending the status the proposal already has is fine); use Mark accepted or Mark rejected for an answer your client gave outside Vezmo.

body string

The proposal your client reads, as HTML.

message string

Personal note to your client.

videoLink string

Link to a video for your client.

profileBio string

Short bio of you or your business.

metadata object

JSON object for your own fields, such as {"deadline": "2026-12-31"}. It replaces the stored metadata as a whole.

productIds string[]

IDs of your products (comma-separated here). Replaces the proposal's products with this list; an ID that isn't yours returns 404.

What can change

  • Content (title, body, client, amount, products and the rest) changes only on a DRAFT or REJECTED proposal. Otherwise the call answers 400 “This proposal is sent, so only its status can change. Only a draft or a rejected proposal can be edited.” (with the proposal's own status).
  • status alone can change at any time, for example to ARCHIVE. Once your client has accepted (status ACCEPTED, or ARCHIVE after the client signed), it can only be archived: 400 “The client has accepted this proposal, so it can only be archived.”
  • You can't set ACCEPTED or REJECTED yourself: the call answers 400 “A proposal is accepted or rejected by the client, so its status can't be set to ACCEPTED or REJECTED. If the client answered outside Vezmo, mark it: POST /merchant/proposal/{id}/mark-accepted (raises the project and the invoice) or /mark-rejected.” Use Mark accepted or Mark rejected.