Vezmo App

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

Header

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.