Estimates API

Create and manage estimates through the Estimates API.

List Estimates

Retrieve all estimates for your organization.

curl https://api.lawnledgercrm.com/api/estimates \
  -b cookies.txt

Response:

{
  "data": [
    {
      "id": "est_aaa111",
      "estimateNumber": "EST-0015",
      "customerId": "cust_abc123",
      "status": "sent",
      "subtotal": 1200.00,
      "tax": 96.00,
      "total": 1296.00,
      "estimateDate": "2025-05-20",
      "expirationDate": "2025-06-20",
      "createdAt": "2025-05-20T08:00:00Z"
    }
  ]
}

Query Parameters

ParameterTypeDescription
statusstringFilter: draft, sent, approved, declined, expired
customerIdstringFilter by customer ID
pagenumberPage number
limitnumberResults per page

Get Estimate

Retrieve a single estimate by ID.

curl https://api.lawnledgercrm.com/api/estimates/est_aaa111 \
  -b cookies.txt

Create Estimate

Create a new estimate.

curl -X POST https://api.lawnledgercrm.com/api/estimates \
  -H "Content-Type: application/json" \
  -b cookies.txt \
  -d '{
    "customerId": "cust_abc123",
    "propertyId": "prop_def456",
    "estimateDate": "2025-06-01",
    "expirationDate": "2025-07-01",
    "lineItems": [
      {
        "description": "Spring Cleanup - Full Property",
        "quantity": 1,
        "unitPrice": 450.00
      },
      {
        "description": "Mulch Installation (10 yards)",
        "quantity": 10,
        "unitPrice": 75.00
      }
    ],
    "notes": "Price includes materials and labor."
  }'

Required Fields

FieldTypeDescription
customerIdstringCustomer ID
lineItemsarrayAt least one line item

Optional Fields

FieldTypeDescription
propertyIdstringAssociated property
estimateDatestringDate of the estimate (ISO 8601)
expirationDatestringWhen the estimate expires
notesstringNotes displayed on the estimate

Update Estimate

Update a draft estimate.

curl -X PUT https://api.lawnledgercrm.com/api/estimates/est_aaa111 \
  -H "Content-Type: application/json" \
  -b cookies.txt \
  -d '{
    "expirationDate": "2025-08-01",
    "notes": "Extended validity per customer request"
  }'

Only estimates in Draft status can be fully edited. Sent estimates can have limited fields updated.

Delete Estimate

Delete a draft estimate.

curl -X DELETE https://api.lawnledgercrm.com/api/estimates/est_aaa111 \
  -b cookies.txt
⚠️

Only draft estimates can be deleted. Sent, approved, or declined estimates are preserved for record-keeping.