Less Annoying CRM logo Less Annoying CRM LACRM
Core API Functions

Search

Use these functions to list all items in the CRM, or narrow the results using search terms and advanced filtering.

Search or list all contacts

Given search terms, return a list of matching contacts. If no search terms are provided, return all contacts. The advanced filter system is documented here.

Note: Because fields can be customized, they're different on every account. This documentation shows fields for an example LACRM account. Please log in to see the fields for your specific account.
Showing fields for the
records.
How to call this function
Function name
GetContacts
Parameters
SearchTerms Text

Values to search for in record fields.

RequiresWriteAccess Bool Default: false

If true, only return contacts that the current user has permission to edit.

RecordTypeFilter Enum Default: NULL
Valid options: Contacts, Companies

Limits the type of records that get returned from this function.

OwnerFilter Array of Uids Default: []

Only returns contacts assigned to these UserIds. If null, return all contacts.

SortBy Enum Default: Relevance
Valid options: Relevance, FirstName, LastName, CompanyName, DateCreated, LastUpdate

Which field to sort by; by default, will use a ranking heuristic.

SortDirection Enum Default: Descending
Valid options: Ascending, Descending

Direction for sort order.

AdvancedFilters Array of objects

List of filters to apply to search results. See documentation here.

Each item in the array should be an object with the following fields:
Name Text Required

Name of field to filter on.

Operation Text Required

Type of filter operation to perform.

Value Default: NULL

Value to filter on.

MaxNumberOfResults Number Default: 500

How many results should be returned from a single API call? The max value is 10,000. If you need to return more results, call this API function again, but increment the Page parameter.

Page Number Default: 1

If there are more results than MaxNumberOfResults, you can call this function again with an incremented Page value to get the next page of results. For example, if there are 700 results, but you're only requesting 500 at a time, you could call this function with Page=2 to get the remaining 200 results.

Response
{
"HasMoreResults": false,
"Results": [
{
Multi-type. Example output for type Contact:
{
"ContactId": "3952413127868264316104592888470",
"AssignedTo": 483823,
"IsCompany": false,
"CompanyId": "3952413127868264316104593001179",
"Name": {
"Salutation": "Mr.",
"FirstName": "John",
"MiddleName": "",
"LastName": "Doe",
"Suffix": ""
}
"Email": [
{
"Text": "john.doe@email.com",
"Type": "Work",
"TypeId": "3952413127868264316104591471404"
},
{...},
{...}
]
"Phone": [
{
"Text": "(314) 555-5555",
"Type": "Work",
"TypeId": "3952413127868264316104591145019"
},
{...},
{...}
]
"Company Name": "",
"Job Title": "",
"Address": [
{
"Street": "123 Main Street",
"City": "St. Louis",
"State": "MO",
"Zip": "63101",
"Country": "USA",
"Type": "Work",
"TypeId": "3952413127870570159113806258199"
},
{...},
{...}
]
"Background Info": "",
"Website": [
{
"Text": "www.lessannoyingcrm.com"
},
{...},
{...}
]
"Birthday": "2024-04-25",
"CompanyMetaData": {
"CompanyName": ""
}
"DateCreated": "2024-04-25T15:59:19-07:00",
"LastUpdate": "2024-04-25T15:59:19-07:00",
"UserMetaData": {
"FirstName": "Your",
"LastName": "Name"
}
}
Multi-type. Example output for type Company:
{
"ContactId": "3952413127870570159113806759123",
"AssignedTo": 483823,
"IsCompany": true,
"Company Name": "B&B Enterprises",
"Email": [
{
"Text": "john.doe@email.com",
"Type": "Work",
"TypeId": "3952413127870570159113805121118"
},
{...},
{...}
]
"Phone": [
{
"Text": "(314) 555-5555",
"Type": "Work",
"TypeId": "3952413127870570159113805154569"
},
{...},
{...}
]
"Address": [
{
"Street": "123 Main Street",
"City": "St. Louis",
"State": "MO",
"Zip": "63101",
"Country": "USA",
"Type": "Work",
"TypeId": "3952413127870570159113805734808"
},
{...},
{...}
]
"Background Info": "",
"Website": [
{
"Text": "www.lessannoyingcrm.com"
},
{...},
{...}
]
"DateCreated": "2024-04-25T15:59:19-07:00",
"LastUpdate": "2024-04-25T15:59:19-07:00",
"UserMetaData": {
"FirstName": "Your",
"LastName": "Name"
}
}
},
{...},
{...}
]
}

List all events

This function will get all events between a date range; will return all visible events by default, but can be filtered by calendar, contact, or user.

How to call this function
Function name
GetEvents
Parameters
SortDirection Enum Default: Ascending
Valid options: Ascending, Descending

Whether the results should be sorted in ascending or descending order.

StartDate DateTime Default: NULL

The start date (inclusive) of the range of events you want to retrieve.

EndDate DateTime Default: NULL

The end date (inclusive) of the range of events you want to retrieve.

UserFilter Array of Uids Default: []

If you'd like to only see events assigned to specific users, pass their UserIds into this field and we'll filter the results to only show those users' events.

CalendarFilter Array of Uids Default: []

If you specify this parameter, only events matching the given CalendarIds will be returned. Only works for your own calendars.

ContactId Uid Default: NULL

If you specify this parameter, only events attached to this contact will be returned. Alternatively, you can call GetEventsAttachedToContact to get the same results.

MaxNumberOfResults Number Default: 500

How many results should be returned from a single API call? The max value is 10,000. If you need to return more results, call this API function again, but increment the Page parameter.

Page Number Default: 1

If there are more results than MaxNumberOfResults, you can call this function again with an incremented Page value to get the next page of results. For example, if there are 700 results, but you're only requesting 500 at a time, you could call this function with Page=2 to get the remaining 200 results.

Response
{
"HasMoreResults": false,
"Results": [
{
"EventId": "3952413127879793531150660960749",
"Name": "",
"StartDate": "2024-04-25T15:59:19-07:00",
"EndDate": "2024-04-25T15:59:19-07:00",
"Location": "",
"Description": "",
"IsAllDay": false,
"IsRecurring": false,
"RecurrenceEventId": "3952413127879793531150661214453",
"RecurrenceRule": "",
"EndRecurrenceDate": "2024-04-25T15:59:19-07:00",
"SeriesNumber": 10,
"DateCreated": "2024-04-25T15:59:19-07:00",
"DateUpdated": "2024-04-25T15:59:19-07:00",
"ContactIds": [
"3952413127882099374159873561670",
"3952413127882099374159873638751",
"3952413127882099374159873736437"
],
"UserIds": [
"3952413127882099374159874557250",
"3952413127882099374159874165555",
"3952413127882099374159873289078"
],
"Attendees": [
{
"IsUser": false,
"AttendeeId": "3952413127882099374159874106020",
"AttendanceStatus": ""
},
{...},
{...}
]
"CalendarId": "3952413127884405217169087449786",
"ContactMetaData": [
{
"Name": "John Doe",
"AssignedTo": "123456"
},
{...},
{...}
]
"UserMetaData": [
{
"FirstName": "Your",
"LastName": "Name"
},
{...},
{...}
]
"CalendarMetaData": {
"Name": "Primary calendar"
}
},
{...},
{...}
]
}

List all notes

This function gets a list of all notes entered in the CRM. You can pass additional parameters to filter and sort the results.

How to call this function
Function name
GetNotes
Parameters
SortDirection Enum Default: Descending
Valid options: Ascending, Descending

This list will always be sorted by the date of the notes. By default it will list the newest note first, but you can reverse the order if you'd like.

DateFilterStart DateTime Default: NULL

If you specify this parameter, only notes entered on or after the date you choose will be returned.

DateFilterEnd DateTime Default: NULL

If you specify this parameter, only notes entered on or before the date you choose will be returned.

UserFilter Array of Uids Default: []

If you'd like to only see notes entered by specific users, pass their UserIds into this field and we'll filter the results to only show those users' notes.

ContactId Uid

If you specify this parameter, only notes attached to this contact will be returned. Alternatively, you can call GetNotesAttachedToContact to get the same results.

MaxNumberOfResults Number Default: 500

How many results should be returned from a single API call? The max value is 10,000. If you need to return more results, call this API function again, but increment the Page parameter.

Page Number Default: 1

If there are more results than MaxNumberOfResults, you can call this function again with an incremented Page value to get the next page of results. For example, if there are 700 results, but you're only requesting 500 at a time, you could call this function with Page=2 to get the remaining 200 results.

Response
{
"HasMoreResults": false,
"Results": [
{
"NoteId": "3952413127889016903187515684360",
"ContactId": "3952413127889016903187515388295",
"UserId": "123",
"DateCreated": "2024-04-25T15:59:19-07:00",
"DateDisplayedInHistory": "2024-04-25T15:59:19-07:00",
"Note": "I called and got their voicemail. I'll try again next week.",
"ContactMetaData": {
"Name": "John Doe",
"AssignedTo": "123456"
}
"UserMetaData": {
"FirstName": "Your",
"LastName": "Name"
}
"PipelineInfo": {
"PipelineId": "3952413127891322746196729909074",
"PipelineItemId": "3952413127891322746196728594310",
"StatusId": "3952413127891322746196728043492",
"PreviousStatusId": "3952413127891322746196729308352",
"PipelineMetaData": {
"Name": "Sales Leads"
}
"StatusMetaData": {
"Name": "Prospect"
}
}
"IsRichText": false
},
{...},
{...}
]
}

List all pipeline items

This function searches all the pipeline items on your account.

Note: Because fields can be customized, they're different on every account. This documentation shows fields for an example LACRM account. Please log in to see the fields for your specific account.
Showing fields for the
pipeline.
How to call this function
Function name
GetPipelineItems
Parameters
PipelineId Uid Required

The pipeline item you'd like to return pipeline items for.

UserFilter Array of Uids Default: []

If you'd like to only see pipeline items entered by specific users, pass their UserIds into this field and we'll filter the results to only show those users' pipeline items (based on the contact they are attached to). Passing an empty array will return results for all users whose contacts you have read access to.

StatusFilter Array of Uids Default: []

If you'd like to see pipeline items in a certain set of statuses, you can pass in the StatusId into this field we'll filter the results to only show pipeline items in those statuses. An empty array or NULL value will return all active statuses by default.

SortBy Enum Default: Status
Valid options: Status, DateCreated, LastUpdate

Which field to sort by; by default, will use status.

SortDirection Enum Default: Ascending
Valid options: Ascending, Descending

Direction for sort order.

MaxNumberOfResults Number Default: 500

How many results should be returned from a single API call? The max value is 10,000. If you need to return more results, call this API function again, but increment the Page parameter.

Page Number Default: 1

If there are more results than MaxNumberOfResults, you can call this function again with an incremented Page value to get the next page of results. For example, if there are 700 results, but you're only requesting 500 at a time, you could call this function with Page=2 to get the remaining 200 results.

Response
{
"HasMoreResults": false,
"Results": [
{
"PipelineItemId": "3952413127898240275224369403209",
"PipelineId": "3853178701634960990616937360520",
"StatusId": "3952413127900546118233583512602",
"ContactId": "3952413127900546118233583852769",
"LastUpdate": "2024-04-25T15:59:19-07:00",
"LastUpdatedBy": "3952413127902851961242796654191",
"NumberOfUpdates": 10,
"LastNote": "",
"PipelineMetaData": {
"Name": "Sales Leads"
}
"StatusMetaData": {
"Name": "Prospect"
}
"ContactMetaData": {
"Name": "John Doe",
"AssignedTo": "123456"
}
},
{...},
{...}
]
}

List all tasks

This function will get all tasks between a date range; will return all visible tasks by default, but can be filtered by contact or user.

How to call this function
Function name
GetTasks
Parameters
StartDate Text Required

The lower bound of dates to fetch.

EndDate Text Required

The upper bound of dates to fetch.

UserFilter Array of Uids

If you'd like to only see tasks assigned to specific users, pass their UserIds into this field and we'll filter the results to only show those users' tasks.

ContactId Uid Default: NULL

If you specify this parameter, only tasks attached to this contact will be returned. Alternatively, you can call GetTasksAttachedToContact to get the same results.

CompletionStatus Enum Default: Both
Valid options: Both, Incomplete, Complete

Get tasks based on task complete status

SortDirection Enum Default: Ascending
Valid options: Ascending, Descending

Whether the results should be sorted in ascending or descending order.

MaxNumberOfResults Number Default: 500

How many results should be returned from a single API call? The max value is 10,000. If you need to return more results, call this API function again, but increment the Page parameter.

Page Number Default: 1

If there are more results than MaxNumberOfResults, you can call this function again with an incremented Page value to get the next page of results. For example, if there are 700 results, but you're only requesting 500 at a time, you could call this function with Page=2 to get the remaining 200 results.

Response
{
"HasMoreResults": false,
"Results": [
{
"TaskId": "3952413127907463647261224678726",
"Name": "Follow-up with John",
"DueDate": "2024-05-02",
"AssignedTo": "3952413127909769490270438334875",
"Description": "We talked yesterday but they were busy and said to touch base next week.",
"ContactId": "3952413127909769490270438532549",
"IsCompleted": false,
"DateCompleted": "2024-04-24T23:59:19-07:00",
"CalendarId": "3952413127909769490270438825865",
"DateCreated": "2024-04-25T15:59:19-07:00",
"AssignedToMetaData": {
"FirstName": "Your",
"LastName": "Name"
}
"ContactMetaData": {
"Name": "John Doe",
"AssignedTo": "123456"
}
},
{...},
{...}
]
}