Sales · Contracts
Create contract
Adds the contract to one of your proposals; a proposal needs one before you can send it. Your client's signature is saved on the contract when they accept.
Authorization
HeaderSend Authorization: Bearer <accessToken>, the token from Create token.
Body parameters
clientId string Required
ID of one of your clients, normally the proposal's client. Another ID returns 404.proposalId string Required
ID of one of your proposals (404 otherwise). A proposal has one contract at most; a second returns 409.title string Required
Contract title.referenceNo string
Ignored here: Vezmo numbers each new contract, such as CTR-00000042. Change it with Update contract.fileUrl string
URL of the contract file, such as a PDF.startDate date
ISO 8601 date, such as 2026-11-01. When your client accepts, the project starts on it and the invoice is due 10 days later.endDate date
ISO 8601 date. When your client accepts, it becomes the project's end date.status enum
DRAFT | PENDING (default) | ACTIVE | COMPLETED | CANCELLED. For your records; Vezmo doesn't change it.message string
Note kept with the contract.paymentMethod string
How you expect to be paid, as text. Kept for your records.paymentDue string
Payment terms as text, such as Net 15. Kept for your records.isPartialPay boolean
true or false (default). Kept for your records; the invoice created on accept doesn't take part payments.redirectUrl string
Where your client goes after accepting or rejecting the proposal. Without it, they go to the Vezmo website.ccEmail string
Comma-separated email addresses, at most 10. When you send the proposal, each gets a view-only link. Each must be a real address; they are stored lower-cased, without repeats. Otherwise 400 'ccEmail: "…" is not an email address. Separate addresses with commas.' or 'ccEmail: copy in at most 10 addresses.'expiryRule string
Note kept with the contract; nothing expires because of it.metadata object
JSON object for your own fields.