Less Annoying CRM logo Less Annoying CRM LACRM
Core API Functions

Contacts / Companies

Note: Less Annoying CRM has both contact and company records, but they’re all considered contacts by the API. Even though the function names all say “contact” you can call them to interact with companies in the exact same way.

Contacts are the main record type in Less Annoying CRM. Most other types of objects (tasks, events, relationships, files, etc.) can be attached to contacts, so regardless of what you’re building, you’ll probably need to interact with contacts.

One thing to look out for is that contacts can have custom fields, which means the specific parameters and return values for you account might be slightly different than what we show in the function definitions below.

Create a contact

This function creates a new contact or company in the CRM.

How to call this function
Function name
CreateContact
Parameters
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.
IsCompany Bool Required

Whether this record is a contact or company record. If true, it will create a company record.

AssignedTo Uid Required

The id of the user this contact should be assigned to.

Name Text Required

The full name of the contact or company record. If this is a company record, the name must be unique.

The email address(es) for this contact. Can be a single string, an array of strings, or an array of Email objects.

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

The actual email address (e.g. test@fake.com) for this contact.

Type Text

The type of this email address (e.g. Work, Personal, etc.). If you leave this blank, it will default to the first option available. If you pass a value, it must match one of the values in the CRM.

The phone number(s) for this contact. Can be a single string, an array of strings, or an array of Phone objects.

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

The actual phone number for this contact.

Type Text

The type of this phone number (e.g. Work, Mobile, etc.). If you leave this blank, it will default to the first option available. If you pass a value, it must match one of the values in the CRM.

Company Name Text

The name of the company this contact works at. If the company does not exist in the CRM, a new company record will be created.

Job Title Text

The text to store in this field.

The address(es) for this contact. Can be a single string, an array of strings, or an array of Address objects.

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

The street address for this contact.

City Text

The city for this contact.

State Text

The state for this contact.

Zip Text

The zip code for this contact.

Country Text

The country for this contact.

Type Text

The type of this address (e.g. Work, Home, etc.). If you leave this blank, it will default to the first option available. If you pass a value, it must match one of the values in the CRM.

Background Info Text

The text to store in this field.

The website(s) for this contact. Can be a single string, an array of strings, or an array of Website objects.

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

The actual website for this contact.

Birthday Date

The date value for this field. If the field is an annual date, 0000-M-D is preferred if no year is specified but M-D is also accepted.

IsCompany Bool Required

Whether this record is a contact or company record. If true, it will create a company record.

AssignedTo Uid Required

The id of the user this contact should be assigned to.

Company Name Text Required

The full name of the contact or company record. If this is a company record, the name must be unique.

The email address(es) for this contact. Can be a single string, an array of strings, or an array of Email objects.

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

The actual email address (e.g. test@fake.com) for this contact.

Type Text

The type of this email address (e.g. Work, Personal, etc.). If you leave this blank, it will default to the first option available. If you pass a value, it must match one of the values in the CRM.

The phone number(s) for this contact. Can be a single string, an array of strings, or an array of Phone objects.

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

The actual phone number for this contact.

Type Text

The type of this phone number (e.g. Work, Mobile, etc.). If you leave this blank, it will default to the first option available. If you pass a value, it must match one of the values in the CRM.

The address(es) for this contact. Can be a single string, an array of strings, or an array of Address objects.

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

The street address for this contact.

City Text

The city for this contact.

State Text

The state for this contact.

Zip Text

The zip code for this contact.

Country Text

The country for this contact.

Type Text

The type of this address (e.g. Work, Home, etc.). If you leave this blank, it will default to the first option available. If you pass a value, it must match one of the values in the CRM.

Background Info Text

The text to store in this field.

The website(s) for this contact. Can be a single string, an array of strings, or an array of Website objects.

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

The actual website for this contact.

Response
{
"ContactId": "3862523653295842723940054838360"
}

Edit a contact

This function edits a contact or company.

How to call this function
Function name
EditContact
Parameters
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.
ContactId Uid Required

The id of the contact to edit.

AssignedTo Uid

The id of the user this contact should be assigned to.

Name Text

The full name of the contact or company record. If this is a company record, the name must be unique.

The email address(es) for this contact. Can be a single string, an array of strings, or an array of Email objects.

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

The actual email address (e.g. test@fake.com) for this contact.

Type Text

The type of this email address (e.g. Work, Personal, etc.). If you leave this blank, it will default to the first option available. If you pass a value, it must match one of the values in the CRM.

The phone number(s) for this contact. Can be a single string, an array of strings, or an array of Phone objects.

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

The actual phone number for this contact.

Type Text

The type of this phone number (e.g. Work, Mobile, etc.). If you leave this blank, it will default to the first option available. If you pass a value, it must match one of the values in the CRM.

Company Name Text

The name of the company this contact works at. If the company does not exist in the CRM, a new company record will be created.

Job Title Text

The text to store in this field.

The address(es) for this contact. Can be a single string, an array of strings, or an array of Address objects.

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

The street address for this contact.

City Text

The city for this contact.

State Text

The state for this contact.

Zip Text

The zip code for this contact.

Country Text

The country for this contact.

Type Text

The type of this address (e.g. Work, Home, etc.). If you leave this blank, it will default to the first option available. If you pass a value, it must match one of the values in the CRM.

Background Info Text

The text to store in this field.

The website(s) for this contact. Can be a single string, an array of strings, or an array of Website objects.

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

The actual website for this contact.

Birthday Date

The date value for this field. If the field is an annual date, 0000-M-D is preferred if no year is specified but M-D is also accepted.

ContactId Uid Required

The id of the contact to edit.

AssignedTo Uid

The id of the user this contact should be assigned to.

Company Name Text

The full name of the contact or company record. If this is a company record, the name must be unique.

The email address(es) for this contact. Can be a single string, an array of strings, or an array of Email objects.

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

The actual email address (e.g. test@fake.com) for this contact.

Type Text

The type of this email address (e.g. Work, Personal, etc.). If you leave this blank, it will default to the first option available. If you pass a value, it must match one of the values in the CRM.

The phone number(s) for this contact. Can be a single string, an array of strings, or an array of Phone objects.

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

The actual phone number for this contact.

Type Text

The type of this phone number (e.g. Work, Mobile, etc.). If you leave this blank, it will default to the first option available. If you pass a value, it must match one of the values in the CRM.

The address(es) for this contact. Can be a single string, an array of strings, or an array of Address objects.

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

The street address for this contact.

City Text

The city for this contact.

State Text

The state for this contact.

Zip Text

The zip code for this contact.

Country Text

The country for this contact.

Type Text

The type of this address (e.g. Work, Home, etc.). If you leave this blank, it will default to the first option available. If you pass a value, it must match one of the values in the CRM.

Background Info Text

The text to store in this field.

The website(s) for this contact. Can be a single string, an array of strings, or an array of Website objects.

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

The actual website for this contact.

Response
This function doesn't return anything. If there's no error message returned, that means the call was completed successfully.

Delete a contact

This function deletes a contact or company.

How to call this function
Function name
DeleteContact
Parameters
ContactId Uid Required

The Id for the contact you want to delete. If you don't already know the contact's Id, you can find it using GetContacts.

Response
This function doesn't return anything. If there's no error message returned, that means the call was completed successfully.

Get a contact

This function retrieves a contact or company record.

How to call this function
Function name
GetContact
Parameters
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.
ContactId Uid Required

The Id for the contact you want to get. If you don't already know the contacts's Id, you can get it using GetContacts.

Response
{
"ContactId": "3862523653302760252967696256781",
"AssignedTo": 483823,
"IsCompany": false,
"CompanyId": "3862523653302760252967696316442",
"Name": {
"Salutation": "Mr.",
"FirstName": "John",
"MiddleName": "",
"LastName": "Doe",
"Suffix": ""
}
"Email": [
{
"Text": "john.doe@email.com",
"Type": "Work",
"TypeId": "3862523653305066095976910312227"
},
{...},
{...}
]
"Phone": [
{
"Text": "(314) 555-5555",
"Type": "Work",
"TypeId": "3862523653305066095976909307841"
},
{...},
{...}
]
"Company Name": "",
"Job Title": "",
"Address": [
{
"Street": "123 Main Street",
"City": "St. Louis",
"State": "MO",
"Zip": "63101",
"Country": "USA",
"Type": "Work",
"TypeId": "3862523653305066095976909075281"
},
{...},
{...}
]
"Background Info": "",
"Website": [
{
"Text": "www.lessannoyingcrm.com"
},
{...},
{...}
]
"Birthday": "2023-01-30",
"CompanyMetaData": {
"CompanyName": ""
}
"DateCreated": "2023-01-30T10:16:54-08:00",
"LastUpdate": "2023-01-30T10:16:54-08:00",
"UserMetaData": {
"FirstName": "Your",
"LastName": "Name"
}
}
{
"ContactId": "3862523653307371938986123513019",
"AssignedTo": 483823,
"IsCompany": true,
"Company Name": "B&B Enterprises",
"Email": [
{
"Text": "john.doe@email.com",
"Type": "Work",
"TypeId": "3862523653307371938986124426377"
},
{...},
{...}
]
"Phone": [
{
"Text": "(314) 555-5555",
"Type": "Work",
"TypeId": "3862523653307371938986124043592"
},
{...},
{...}
]
"Address": [
{
"Street": "123 Main Street",
"City": "St. Louis",
"State": "MO",
"Zip": "63101",
"Country": "USA",
"Type": "Work",
"TypeId": "3862523653309677781995337712548"
},
{...},
{...}
]
"Background Info": "",
"Website": [
{
"Text": "www.lessannoyingcrm.com"
},
{...},
{...}
]
"DateCreated": "2023-01-30T10:16:54-08:00",
"LastUpdate": "2023-01-30T10:16:54-08:00",
"UserMetaData": {
"FirstName": "Your",
"LastName": "Name"
}
}

Get a batch of contacts

This function retrieves a set of contact or company records from a user's account.

How to call this function
Function name
GetContactsById
Parameters
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.
ContactIds Array of Uids Required

List of Ids for the contacts you want to get. If you don't already know the contacts' Ids, you can get them using ListContacts.

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": "3862523653311983625004549972357",
"AssignedTo": 483823,
"IsCompany": false,
"CompanyId": "3862523653311983625004551387833",
"Name": {
"Salutation": "Mr.",
"FirstName": "John",
"MiddleName": "",
"LastName": "Doe",
"Suffix": ""
}
"Email": [
{
"Text": "john.doe@email.com",
"Type": "Work",
"TypeId": "3862523653311983625004550857576"
},
{...},
{...}
]
"Phone": [
{
"Text": "(314) 555-5555",
"Type": "Work",
"TypeId": "3862523653314289468013764102851"
},
{...},
{...}
]
"Company Name": "",
"Job Title": "",
"Address": [
{
"Street": "123 Main Street",
"City": "St. Louis",
"State": "MO",
"Zip": "63101",
"Country": "USA",
"Type": "Work",
"TypeId": "3862523653314289468013765603509"
},
{...},
{...}
]
"Background Info": "",
"Website": [
{
"Text": "www.lessannoyingcrm.com"
},
{...},
{...}
]
"Birthday": "2023-01-30",
"CompanyMetaData": {
"CompanyName": ""
}
"DateCreated": "2023-01-30T10:16:54-08:00",
"LastUpdate": "2023-01-30T10:16:54-08:00",
"UserMetaData": {
"FirstName": "Your",
"LastName": "Name"
}
}
Multi-type. Example output for type Company:
{
"ContactId": "3862523653314289468013765192439",
"AssignedTo": 483823,
"IsCompany": true,
"Company Name": "B&B Enterprises",
"Email": [
{
"Text": "john.doe@email.com",
"Type": "Work",
"TypeId": "3862523653314289468013764800172"
},
{...},
{...}
]
"Phone": [
{
"Text": "(314) 555-5555",
"Type": "Work",
"TypeId": "3862523653314289468013764962578"
},
{...},
{...}
]
"Address": [
{
"Street": "123 Main Street",
"City": "St. Louis",
"State": "MO",
"Zip": "63101",
"Country": "USA",
"Type": "Work",
"TypeId": "3862523653314289468013764906703"
},
{...},
{...}
]
"Background Info": "",
"Website": [
{
"Text": "www.lessannoyingcrm.com"
},
{...},
{...}
]
"DateCreated": "2023-01-30T10:16:54-08:00",
"LastUpdate": "2023-01-30T10:16:54-08:00",
"UserMetaData": {
"FirstName": "Your",
"LastName": "Name"
}
}
},
{...},
{...}
]
}

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.

How to call this function
Function name
GetContacts
Parameters
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.
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 Text Default: NULL

Contacts, Companies, or omit to return all.

OwnerFilter Array of Uids Default: NULL

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

AdvancedFilters Array of objects

List of filters to apply to search results.

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": "3862523653318901154032192601029",
"AssignedTo": 483823,
"IsCompany": false,
"CompanyId": "3862523653318901154032191978100",
"Name": {
"Salutation": "Mr.",
"FirstName": "John",
"MiddleName": "",
"LastName": "Doe",
"Suffix": ""
}
"Email": [
{
"Text": "john.doe@email.com",
"Type": "Work",
"TypeId": "3862523653318901154032191577548"
},
{...},
{...}
]
"Phone": [
{
"Text": "(314) 555-5555",
"Type": "Work",
"TypeId": "3862523653318901154032192393703"
},
{...},
{...}
]
"Company Name": "",
"Job Title": "",
"Address": [
{
"Street": "123 Main Street",
"City": "St. Louis",
"State": "MO",
"Zip": "63101",
"Country": "USA",
"Type": "Work",
"TypeId": "3862523653318901154032192793831"
},
{...},
{...}
]
"Background Info": "",
"Website": [
{
"Text": "www.lessannoyingcrm.com"
},
{...},
{...}
]
"Birthday": "2023-01-30",
"CompanyMetaData": {
"CompanyName": ""
}
"DateCreated": "2023-01-30T10:16:54-08:00",
"LastUpdate": "2023-01-30T10:16:54-08:00",
"UserMetaData": {
"FirstName": "Your",
"LastName": "Name"
}
}
Multi-type. Example output for type Company:
{
"ContactId": "3862523653321206997041405445263",
"AssignedTo": 483823,
"IsCompany": true,
"Company Name": "B&B Enterprises",
"Email": [
{
"Text": "john.doe@email.com",
"Type": "Work",
"TypeId": "3862523653321206997041406761264"
},
{...},
{...}
]
"Phone": [
{
"Text": "(314) 555-5555",
"Type": "Work",
"TypeId": "3862523653321206997041405355860"
},
{...},
{...}
]
"Address": [
{
"Street": "123 Main Street",
"City": "St. Louis",
"State": "MO",
"Zip": "63101",
"Country": "USA",
"Type": "Work",
"TypeId": "3862523653321206997041405984516"
},
{...},
{...}
]
"Background Info": "",
"Website": [
{
"Text": "www.lessannoyingcrm.com"
},
{...},
{...}
]
"DateCreated": "2023-01-30T10:16:54-08:00",
"LastUpdate": "2023-01-30T10:16:54-08:00",
"UserMetaData": {
"FirstName": "Your",
"LastName": "Name"
}
}
},
{...},
{...}
]
}
Next page: Events