Create an agreement proposal
POST/api/v1/estimates/agreements
Build ONE annual service agreement from this tenant's agreement-backed services and return the public customer link.
Each line names a service by its family_key (GET-able as company_service through Megan; the Services screen shows the same keys). Only a service whose status is live or testing may be quoted. Line totals are ANNUAL values; the payment schedule and the prepay discount come from the company billing policy, not from the request.
This publishes a live public link the moment it succeeds, and there is no call that unpublishes one. Send idempotencyKey and reuse it on every retry: a replay returns the SAME proposal with reused: true and creates nothing.
Scope: write_crm.
Request
Responses
- 200
- 400
- 401
- 404
- 422
Proposal created, or replayed when an idempotency key matched.
Missing or invalid parameters
Invalid or missing API key
A line named a service this tenant has not added yet. The message names it.
The proposal could not be built as asked: a service that is not agreement-backed, one that is not ready to quote, a service listed twice, a service listed beside the one that replaced it, an override that does not validate, or a total above what an estimate can hold. The body carries error and field.