Estimates
6 operations. All areas
- POST /v1/estimates
- GET /v1/estimates
- GET /v1/estimates/{id}
- POST /v1/estimates/{id}/status
- POST /v1/estimates/{id}/convert
- GET /v1/estimates/{id}/pdf
POST/v1/estimates
Create an estimate for a customer (never posts; convert it into an invoice later). dry_run previews number and totals.
- Operation
createEstimate - Scope: propose
- Write: needs Idempotency-Key (or dry_run)
- Request body
contact_idstring, requirednumberstring Optional; assigned (EST-0001) when omittedestimate_datestring, required Calendar date, YYYY-MM-DD.expiry_datestring Calendar date, YYYY-MM-DD.referencestringmemostringtax_rate_idstringlinesarray of DocumentLineInput, requireddry_runboolean
- Responses
200Dry run: the estimate it would create (object)201Created (object)- Errors
400,401,403,409,422,429,500(Error:error.type,message)
GET/v1/estimates
Estimates, newest first
- Operation
listEstimates - Scope: read
- Read
- Parameters
statusquery, "open" | "accepted" | "declined" | "converted" | "void"contact_idquery, stringas_ofquery, stringlimitquery, integer
- Responses
200Estimates (object)- Errors
400,401,403,429,500(Error:error.type,message)
GET/v1/estimates/{id}
One estimate with its lines
- Operation
getEstimate - Scope: read
- Read
- Parameters
idpath, string, required
- Responses
200Estimate (object)- Errors
400,401,403,404,429,500(Error:error.type,message)
POST/v1/estimates/{id}/status
Mark an estimate accepted, declined, open again, or void it (with a reason). Converted and void are final.
- Operation
setEstimateStatus - Scope: propose
- Write: needs Idempotency-Key (or dry_run)
- Parameters
idpath, string, required
- Request body
status"open" | "accepted" | "declined" | "void", requiredreasonstring
- Responses
200Updated (object)- Errors
400,401,403,404,409,422,429,500(Error:error.type,message)
POST/v1/estimates/{id}/convert
Convert an open or accepted estimate into an invoice (its lines, prices and tax rate), through the same governance as creating an invoice; the estimate is marked converted with it.
- Operation
convertEstimate - Scope: propose
- Write: needs Idempotency-Key (or dry_run)
- Parameters
idpath, string, required
- Request body
doc_datestring Invoice date (default: the server's today)due_datestring Calendar date, YYYY-MM-DD.terms_daysintegernumberstringmemostringdry_runbooleanconfidencenumbersoft_lock_override_reasonstring
- Responses
200Dry run (DocumentResult)201Invoice posted; estimate converted (DocumentResult)202Queued for approval (DocumentResult)- Errors
400,401,403,404,409,422,429,500(Error:error.type,message)
GET/v1/estimates/{id}/pdf
Render an estimate as a PDF (server-side; nothing is sent anywhere)
- Operation
renderEstimatePdf - Scope: read
- Read
- Parameters
idpath, string, requiredformatquery, "pdf" | "base64"
- Responses
200The PDF (or with format=base64, JSON) (PdfFile)- Errors
400,401,403,404,429,500(Error:error.type,message)