Returns all contacts of a specific type for your ConstructionOnline company account
https://api.constructiononline.com/api/v2/Contacts?type={type}
This endpoint facilitates communication between ConstructionOnline and third-party contact management or CRM software platforms. Using this endpoint, users can extract leads, clients, or subcontractors from ConstructionOnline and copy the data into another software platform, or simply store it as a collection or data table.
Requested contact types include Leads, ClientLink Users, and TeamLink Users. Users can choose to request a single contact type or a combination of more than one contact type.
Requests
PARAMETERS
type: string
- Represents a specific type of contact, such as a Lead, ClientLink User, or TeamLink User. Use LEAD for Lead, CLIENT for ClientLink, and SUB for TeamLink (type is case sensitive).
- More than one type can be requested at a time. If requesting more than one contact type, separate each contact type with a comma. For example: api/v2/Contacts?type=LEAD,CLIENT
Sample URL request:
- https://api.constructiononline.com/api/v2/Contacts?type=SUB
Example requests in cURL, C#, Python, and JavaScript can be found below:
cURL
# replace {email} with the email address for your ConstructionOnline account
# {password} with your ConstructionOnline password
# {apikey} with your provided API key
# {type} with the specific type(s)
curl https://api.constructiononline.com/api/v2/Contacts?type={type} -u {email}:{password} -H 'APIKey:{apikey}'
C#
/* replace {username} with the email address for your ConstructionOnline account
{password} with your ConstructionOnline password
{apikey} with your provided API key
{type} with the specific type(s) */
public string GetData(string endpoint) {
string username = "{username}";
string password = "{password}";
string apikey = "{apikey}";
HttpResponseMessage response = null;
HttpClientHandler handler = new HttpClientHandler() { AutomaticDecompression = System.Net.DecompressionMethods.GZip };
using (HttpClient client = new HttpClient(handler)) {
client.Timeout = new TimeSpan(0, 0, 30);
client.BaseAddress = new Uri("http://api.constructiononline.com");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(username + ":" + password)));
client.DefaultRequestHeaders.Add("APIKey", apikey);
client.DefaultRequestHeaders.Add("Accept-Encoding", "gzip");
response = client.GetAsync(endpoint).Result;
}
return response?.Content.ReadAsStringAsync().Result;
}
MessageBox.Show(GetData("api/v2/Contacts?type={type}"));
Python
#replace {username} with the email address for your ConstructionOnline account
#{password} with your ConstructionOnline password
#{apikey} with your provided API key
#{type} with the specific type(s)
import base64, requests, json
apikey = "{apikey}"
username = "{username}"
password = "{password}"
def makeRequest(endpoint):
url = "https://api.constructiononline.com/" + endpoint
userPass = username + ":" + password
headers = {
"APIKey": apikey,
"Accept-Encoding": "gzip, deflate, br",
"Authorization": "Basic " + base64.b64encode(userPass.encode()).decode(),
}
response = requests.get(url, headers=headers)
return json.dumps(json.loads(response.text), indent=2)
#Main Program
print(makeRequest("api/v2/Contacts?type={type}"))
JavaScript
/* replace {username} with the email address for your ConstructionOnline account
{password} with your ConstructionOnline password
{apikey} with the API key you were provided with
{type} with the specific type(s) */
username = '{username}';
password = '{password}';
apikey = '{apikey}';
function makeRequest(endpoint) {
auth = btoa('${username}:${password}');
var myHeaders = new Headers();
myHeaders.append("APIKey", apikey);
myHeaders.append("Accept-Encoding", "gzip, deflate, br");
myHeaders.append("Authorization", "Basic ${auth}");
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("https://api.constructiononline.com/" + endpoint, requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
return response;
};makeRequest("api/v2/Contacts?type={type}");
Responses
Responses
200: Success
A successful request will return a 200 response with the requested contact(s) in the body, as seen below. Definitions for all returned properties can be found here.
{
"ID": 29,
"FIRSTNAME": "Alice",
"LASTNAME": "Conway",
"EMAIL": "aconway@conwaypower.com",
"ACCOUNT": "999197",
"LACCESS": "2023-09-21T19:23:10.97",
"LMOD": "2023-04-21T13:51:13.673",
"DISPLAY_NAME": "",
"COMPANY": "Conway Power Equipment",
"ADDRESS": "",
"CITY": "Auburn",
"STATE": "AL",
"ZIP": "36830",
"PHONE": "",
"MOBILE_PHONE": "",
"MOBILE_PROVIDER": "",
"FAX": "",
"LMOD_CON_ID": 29,
"LMOD_NAME": "",
"ISCOMPANY": false,
"MIDDLENAME": "",
"WEBSITE": "",
"CREATOR_ID": 29,
"CREATOR_NAME": "",
"TIMEZONE_OFFSET": -5.0,
"AUTO_TIMEZONE": true,
"COMPANY_ID": 4332,
"COMPANY_NAME": "",
"COUNTRY_SETTING": 1,
"LANGUAGE_SETTING": 1,
"LAT": 32.538900,
"LON": -85.492100,
"COMPANY_PERMISSIONS": 0,
"IS_COMPANY_ADMIN": true,
"OFFLINE_FILES": null,
"FAVORITE_PROJECTS": null,
"DATE_FORMAT": 0,
"TIME_FORMAT": 0,
"TIMEZONE_ID": "America/Chicago",
"CONTACT_QUALITY": 0,
"CONTACT_REGION": 0,
"CONTACT_DIVISION": 0,
"CONTACT_OFFICE": 0,
"CONTACT_CATEGORY": 0,
"CONTACT_TRADE": 0,
"FIELD_ID": null,
"MESSAGE_SIGNATURE": "",
"GENERAL_CALENDAR_COLOR": "#FFA61B",
"IS_LEAD": 0,
"IS_SUB": 0,
"IS_CLIENT": 0
},
404: Error
The server was not able to locate the resource specified in the request. The type may have been entered incorrectly or contacts of the entered type do not exist.
429: Error
The user has surpassed the request rate limit for the hour, day, week, or month.
500: Error
There was an internal server error and the server was unable to complete the request.
Last updated: Dec 21, 2023