Email a quote
Email the quote or estimate to its contact (with its payment link, if any) and set its status to sent.
POST
https://api.centerfy.ai/webhooks/inbound/quotes/:id/send Headers
| Header | Required | Value | Description |
|---|---|---|---|
x-api-key | Yes | your sub-account API key (cfy_…) | Authenticates the request; or use Authorization: Bearer <key>. |
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
id | string (uuid) | Yes | The quote or estimate id. |
Example
curl -X POST "https://api.centerfy.ai/webhooks/inbound/quotes/{id}/send" \
-H "x-api-key: $CENTERFY_API_KEY" import { CenterfyClient } from "@centerfy/sdk";
const centerfy = new CenterfyClient({ apiKey: process.env.CENTERFY_API_KEY! });
const result = await centerfy.quotes.send("<quoteId>");
console.log(result); centerfy quotes send <quoteId> MCP tool: centerfy_quotes_send (see MCP server)
Response
{
"status": "success",
"sent": true,
"quote": {
"id": "f2a3b4c5-d6e7-4f8a-9b0c-1d2e3f4a5b6c",
"quote_number": "QUO-2026-007",
"type": "quote",
"contact_id": "3f1c2a9e-7b4d-4c8a-9e2f-1a2b3c4d5e6f",
"title": "Website project",
"description": "Redesign and three months of hosting",
"status": "sent",
"total_amount": 1575,
"valid_until": "2026-11-05",
"items": [
{
"item": "Website redesign",
"quantity": 1,
"amount": 1500
},
{
"item": "Monthly hosting",
"quantity": 3,
"amount": 25
}
],
"notes": null,
"payment_link": null,
"invoice_id": null,
"invoiced_at": null,
"sent_at": "2026-10-06T10:30:00.000Z",
"accepted_at": null,
"rejected_at": null,
"created_at": "2026-10-06T10:00:00.000Z",
"updated_at": "2026-10-06T10:00:00.000Z"
},
"to": "[email protected]"
}Errors
409— if the quote is archived.400— if the quote has no contact in this sub-account or the contact has no email address.502— if the email could not be sent (the status is not changed).404— if the quote is not in this sub-account.