List contacts
Contacts of your CRM with organization, lifecycle stage and owner; leads too when the Leads module is on.
GET https://cotlet.dev/api/v1/vtiger/contacts
read
Lists one page of the Contacts list under Main Menu > Essentials > Contacts, or of Essentials > Leads when module is leads. Filter by lifecycle_stage (Lead finds leads that are stored as contacts) or search by name, email or phone. Pass next_cursor back as cursor for the next page. You only see the records your Vtiger role lets you see.
Parameters
| Name | Type | Description |
|---|---|---|
| module enum | enum | contacts (default) or leads, for CRMs where the Leads module is enabled. |
| lifecycle_stage string | string | Only contacts with this Lifecycle Stage, for example Lead. |
| query string | string | Name, email or phone to search for. |
| limit integer | integer | Contacts per page. |
| cursor string | string | Next page cursor from the previous call. |
Request
curl https://cotlet.dev/api/v1/vtiger/contacts \
-H "Authorization: Bearer $COTLET_API_KEY" result = client.call("vtiger", "list_contacts") const result = await cotlet.call('vtiger', 'list_contacts'); cotlet call vtiger list_contacts Example response
{
"contacts": [
{
"record_id": "1523",
"name": "Dana Whitfield",
"email": "dana@whitfielddental.example",
"phone": "+1 555 0142",
"organization": "Whitfield Dental",
"lifecycle_stage": "Lead",
"assigned_to": "Sam Rivera",
"created_at": "2026-10-21"
},
{
"record_id": "1524",
"name": "Luis Ortega",
"email": "luis@ortegabuilds.example",
"phone": "+1 555 0177",
"organization": "Ortega Builds",
"lifecycle_stage": "Lead",
"assigned_to": "Sam Rivera",
"created_at": "2026-10-21"
}
],
"next_cursor": null
}