name is split on spaces and matched against firstName/lastName/companyName (and phoneNumber if it contains digits, with phone normalization), companies matches any in the array, tags matches any in the array. Supports custom sortBy and sortOrder. Tag filtering is case-sensitive — keep tag naming consistent across the app. Combining many filters narrows results aggressively.curl --location '/users/me/contacts/advanced-search' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"name": "string",
"companies": [
"string"
],
"tags": [
"string"
],
"limit": 20,
"offset": 0,
"sortBy": "createdAt",
"sortOrder": "desc"
}'{
"contacts": [
{
"firstName": "string",
"lastName": "string",
"phoneNumber": "string",
"email": "string",
"address": "string",
"notes": "string",
"companyName": "string",
"tags": [
"string"
],
"avatar": "string",
"isFavorite": true,
"source": "MOBILE",
"lifecycleStage": "lead",
"doNotCall": true,
"doNotSms": true,
"id": "string",
"stats": {
"totalIncomingCalls": 0,
"totalOutboundCalls": 0,
"totalSmsMessages": 0,
"lastCallDate": "string",
"upcomingAppointments": 0
},
"latestNote": {
"content": "string",
"createdAt": "string"
},
"suggestedLifecycleStage": "string"
}
],
"pagination": {
"total": 0,
"limit": 0,
"offset": 0
},
"aggregations": {
"uniqueCompanies": 0,
"companies": [
"string"
]
}
}