Sales ยท Proposals
Create proposal
Creates a proposal in DRAFT; your business and user come from your API key. To email it to your client, add a contract and then call Send proposal.
environment is LIVE or TEST: the mode of the key that made the proposal. It never changes. A TEST key makes a sandbox proposal; see Proposals.
Authorization
HeaderSend Authorization: Bearer <accessToken>, the token from Create token.
Body parameters
clientId string
ID of one of your clients (another ID returns 404). Optional now, but Send proposal needs it.title string Required
Proposal title.description string
Short summary of the work.amount number Required
Price in the proposal's currency, up to 2 decimals. At least the smallest amount that currency can be charged and at most the equivalent of US$1,000,000. For HOURLY it is the hourly rate, and only the cap applies.currency string
Three-letter currency code, such as USD or EUR. Default USD; must be a currency Vezmo supports.chargeType enum
FIXED (default) | HOURLY | CUSTOM | RECURRING. With HOURLY the amount is a rate, so accepting creates no invoice.status enum
DRAFT (default) | PENDING | SENT | ARCHIVE. Setting SENT emails nobody: use Send proposal. ACCEPTED and REJECTED are your client's answer: sending either answers 400. If your client answered outside Vezmo, use Mark accepted or Mark rejected.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
Free-form JSON object for your own fields, such as {"deadline": "2026-12-31"}. When your client accepts, it is copied to the invoice.productIds string[]
IDs of your products to list on the proposal (comma-separated here). An ID that isn't yours returns 404.