Skip to Content

Customers API

Manage customer records through the Customers API. All endpoints require authentication and are scoped to your organization.

List Customers

Retrieve a list of all customers in your organization.

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

Response:

{ "data": [ { "id": "clx8n2k1p0001abcd", "name": "John Smith", "email": "john@example.com", "phone": "555-0100", "address": "123 Main St, Springfield, IL 62701", "notes": "Preferred mowing day: Thursday", "createdAt": "2025-03-15T10:00:00Z", "updatedAt": "2025-06-01T14:30:00Z" } ] }

Query Parameters

ParameterTypeDescription
searchstringSearch by name, email, or phone
tagstringFilter by tag name
pagenumberPage number (default: 1)
limitnumberResults per page (default: 50)

Example with filters:

curl "https://api.lawnledgercrm.com/api/customers?search=smith&limit=10" \ -b cookies.txt

Get Customer

Retrieve a single customer by ID.

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

Create Customer

Create a new customer record.

curl -X POST https://api.lawnledgercrm.com/api/customers \ -H "Content-Type: application/json" \ -b cookies.txt \ -d '{ "firstName": "Jane", "lastName": "Doe", "email": "jane@example.com", "phone": "555-0200", "billingAddress": "456 Oak Ave", "billingCity": "Springfield", "billingState": "IL", "billingZip": "62702", "notes": "Has two dogs in backyard" }'

Required fields

FieldTypeDescription
firstNamestringThe canonical name slot. For an individual it’s their first name; for a business, HOA or property manager, put the whole entity name here.

Optional fields

FieldTypeDescription
lastNamestringSurname, for individuals
companystringCompany name
customerTypestringINDIVIDUAL, BUSINESS, PROPERTY_MANAGER, HOA
emailstringEmail address — optional, not required
additionalEmailsstring[]Extra addresses that also receive documents
phonestringPhone number
secondaryPhonestringSecond contact number
billingAddressstringStreet. There is no single address field — city, state and ZIP are separate.
billingCitystringCity
billingStatestringState
billingZipstringZIP
notesstringInternal notes

Update Customer

Update an existing customer.

curl -X PATCH https://api.lawnledgercrm.com/api/customers/clx8n2k1p0001abcd \ -H "Content-Type: application/json" \ -b cookies.txt \ -d '{ "phone": "555-0300", "notes": "Updated phone number" }'

Delete Customer

Delete a customer record.

curl -X DELETE https://api.lawnledgercrm.com/api/customers/clx8n2k1p0001abcd \ -b cookies.txt

This is a soft delete. The customer is tombstoned and disappears from lists, but the record and everything attached to it — properties, invoices, estimates, contracts — are preserved. Nothing is destroyed, which is what you want when the history is part of your accounting record.

Separate endpoints exist for POST /:id/deactivate, POST /:id/reactivate, POST /:id/anonymize (for a GDPR-style erasure request), and a genuine DELETE /:id/hard-delete.

Last updated on