Introduction
Welcome to the CINC API! This API provides access to a CINC site through a REST API. Allowing developers to integrate applications with your CINC site. If the application is not a partner, have them signup. More documentation can be found on the CINC API Swagger page.
You can view code examples in the dark area to the right, and you can switch the programming language of the examples with the tabs in the top right. For more information on usage, see Examples.
Developer Sign Up
Authentication
Authentication Flow
Applications can use the authorization code grant type of the OAuth2 specification to obtain an access token by redirecting a user to the authorization endpoint of the CINC site. A user can then authorize your application with the allowed scopes. Obtained access tokens will give the application access to specific actions based on the scopes selected.
1. Obtain user's consent
You obtain a user's consent to make API calls on their behalf by redirecting their user-agent (browser, webview, etc) to the authorization endpoint with the parameters listed below.
Example request: Obtain user's consent
curl -X GET -G "https://authv2.cincapi.com/integrator/authorize" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "client_id=myclientid" \
-d "response_type=code" \
--data-urlencode "redirect_uri=https://myapp.com/callback" \
--data-urlencode "scope=api:read" \
-d "state=12345"
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("GET"), "https://authv2.cincapi.com/integrator/authorize?client_id=myclientid&response_type=code&redirect_uri=https://myapp.com/callback&scope=api:read&state=12345"))
{
var response = await httpClient.SendAsync(request);
}
}
fetch('https://authv2.cincapi.com/integrator/authorize?client_id=myclientid&response_type=code&state=12345', {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: 'redirect_uri=https://myapp.com/callback&scope=api:read'
})
.then(response => response.json())
.then(data => console.log(data));
import requests
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
}
params = {
'client_id': 'myclientid',
'response_type': 'code',
'state': '12345',
}
data = 'redirect_uri=https://myapp.com/callback&scope=api:read'
response = requests.get('https://authv2.cincapi.com/integrator/authorize', params=params, headers=headers, data=data)
Example response
{
"request": {
"responseURL": "https://myapp.com/callback?code=abcdefghijkl&scope=api:read&state=12345",
// ...
},
// ...
}
Parameters
Name | Type | Description |
---|---|---|
client_id |
String |
Required Unique client identifier obtained through the application registration process. |
response_type |
String |
Set to code to request that an authorization code be sent back to the application return URL. |
redirect_uri |
String |
Application callback URL where the authorization code is sent. This must match the URL registered for your application. |
scope |
String |
Space-delimited string of the scopes you would like. |
state |
String |
An opaque value used to maintain state between the authorize request and the callback. |
2. Process the authorize callback
Once the user authorizes your application, CINC redirects (HTTP 302
) the
user-agent to the return URL with the authorization code appended in the
code
query parameter.
3. Obtain an access token
The authorization code received above can then be exchanged for an access token.
Example request: Obtain an access token
curl -X POST "https://authv2.cincapi.com/integrator/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "client_id=myclientid" \
-d "client_secret=myclientsecret" \
-d "grant_type=authorization_code" \
-d "code=abcdefghijkl" \
--data-urlencode "redirect_uri=https://myapp.com/callback" \
--data-urlencode "scope=api:read"
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("POST"), "https://authv2.cincapi.com/integrator/token"))
{
var contentList = new List<string>();
contentList.Add("client_id=myclientid");
contentList.Add("client_secret=myclientsecret");
contentList.Add("grant_type=authorization_code");
contentList.Add("code=abcdefghijkl");
contentList.Add($"redirect_uri={Uri.EscapeDataString("https://myapp.com/callback")}");
contentList.Add($"scope={Uri.EscapeDataString("api:read")}");
request.Content = new StringContent(string.Join("&", contentList));
request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/x-www-form-urlencoded");
var response = await httpClient.SendAsync(request);
}
}
fetch('https://authv2.cincapi.com/integrator/token', {
method: 'POST',
body: new URLSearchParams({
'client_id': 'myclientid',
'client_secret': 'myclientsecret',
'grant_type': 'authorization_code',
'code': 'abcdefghijkl'
})
})
.then(response => response.json())
.then(data => console.log(data));
import requests
data = {
'client_id': 'myclientid',
'client_secret': 'myclientsecret',
'grant_type': 'authorization_code',
'code': 'abcdefghijkl',
}
response = requests.post('https://authv2.cincapi.com/integrator/token', data=data)
Example response
{
"access_token": "8jhsJD03mds92HDs9sl3Ld",
"token_type": "bearer",
"expires_in": 3600,
"refresh_token": "s982jXDpk20kasd0DK293ks",
"scope": "api:read"
}
Headers
Name | Value |
---|---|
content-type |
application/x-www-form-urlencoded |
Parameters
Name | Type | Description |
---|---|---|
grant_type |
String |
Required Value should be authorization_code . |
code |
String |
The authorization code that was sent to your application's return URL. |
redirect_uri |
String |
Application callback URL where the authorization code is sent. This must match the URL registered for your application. |
scope |
String |
Space-delimited string of the scopes you would like. |
All Scopes
api:create
Allows create access at the site level on behalf of the user. The creation of a new object (i.e. lead) is limited to just agents with broker level status.
api:delete
Allows for deleting or removing at the site level on behalf of the user. The current version only supports providing access for agents with broker level status.
api:event
Allows for registering and receiving events at the site level on behalf of the user.
Events can be read with the api:read
scope and will be properly restricted by permissions.
However, receiving asynchronous events is for agents with broker level status only.
api:read
Allows read access to the information at the site level on behalf of the user. The data is restricted per the permissions of the user that provided access. The current version only supports providing access for agents with broker level status.
api:update
Allows for updating information at the site level on behalf of the user. The current version only supports providing access for agents with broker level status.
Agents
Example object: Agents
"agent" : {
"id":"AGENT0",
"logged_in_date":"2022-05-06T17:01:49.322Z",
"registered_date":"2022-05-06T17:01:49.322Z",
"username":"buum@cu.com",
"info": {
"status": "active",
"contact": {
"first_name":"Rebecca",
"last_name":"Lejeune",
"phone_numbers": {
"cell_phone":"6109586760",
"office_phone":"5555555555",
"home_phone":"5555555555"
},
"email":"buum@cu.com"
},
"updated_date":"2022-06-06T17:01:49.866Z",
"url": "test.com/dashboard/spa#settings/profile/profile/AGENT0"
},
"roles":["broker", "team_lead"]
}
The agent information is structured in the following manner:
Field | Type | Description |
---|---|---|
id |
String |
The unique identifier for the agent. |
logged_in_date |
Date |
The timestamp of when the agent last logged in ISO 8601. |
registered_date |
Date |
The timestamp of when the agent was registered ISO 8601. |
username |
String |
The CINC username for the agent. |
info |
Object |
Contains the base level information of the agent. |
roles |
Array[String] |
Contains a list of roles representing individual permissions of the agent. |
Agent Roles
The following are the currently mapped roles that an agent can have:
Role | Description |
---|---|
agent |
The CINC client on the site has agent level permissions. |
broker |
The CINC client on the site has broker level permissions. |
listing_agent |
The CINC client on the site has listing agent level permissions. |
partner |
The CINC client on the site has partner level permissions. |
owner |
The CINC client on the site has owner level permissions. |
team_lead |
The CINC client on the site has team lead level permissions. |
Agent Info Structure
Example object: Agent Info Structure
"info": {
"status": "active",
"contact": {
"first_name":"Rebecca",
"last_name":"Lejeune",
"phone_numbers":{
"cell_phone":"6109586760",
"office_phone":"5555555555",
"home_phone":"5555555555"
},
"email":"buum@cu.com",
"mailing_address":{
"street":"444 Office St",
"city":"Marietta",
"state":"GA",
"postal_or_zip":"30067"
}
},
"updated_date":"2023-06-08T15:22:09.250Z",
"url": "test.com/dashboard/spa#settings/profile/profile/AGENT0"
}
The agent information is structured in the following manner:
Field | Type | Description |
---|---|---|
status |
String |
The current status of the agent. |
contact |
Object |
The general contact information of the agent. |
updated_date |
Date |
The timestamp of when the agent info was updated ISO 8601. |
Agent Contact Info Structure
Example object: Agent Contact Info Structure
"contact": {
"first_name": "Janis",
"last_name": "A. Doe",
"phone_numbers": {
"cell_phone": "9127562309",
"home_phone": "5555555555",
"office_phone": "1111111111"
},
"email": "jane.doe@email.com"
}
The contact information is structured in the following manner:
Field | Type | Description |
---|---|---|
first_name |
String |
The first name of the agent. |
last_name |
String |
The last name of the agent (This may include middle name). |
phone_numbers |
Object |
The registered phone numbers of the agent. |
phone_numbers.cell_phone |
String |
The registered primary phone number of the agent. |
phone_numbers.home_phone |
String |
The registered home phone number of the agent. |
phone_numbers.office_phone |
String |
The registered office phone number of the agent. |
email |
String |
The registered email of the agent. |
Agent Status
The status of the agent indicates to which capacity the user is within the CINC platform. If the status cannot be determined, it will not be present. The values are currently restricted through the CINC API to the following:
"active"
: The agent is an active user on this site."inactive"
: The agent is currently not active on this site though they may return."onvacation"
: The agent is currently not active on this site. They will return in short period of time."disabled"
: The agent is currently not active on this site. All functions the agent has on the site will not work. The record of the agent being on the site is still maintained."deleted"
: This user has been removed from the site and is no longer maintained.
Leads
Example object: Leads
"lead" : {
"id": "LEAD0",
"logged_in_date": "2022-04-14T09:21:43.289Z",
"username": "jane.doe@email.com",
"registered_date": "2022-04-14T09:21:43.289Z",
"verification": {
"status": "unprompted"
},
"info": {
"is_partial": false,
"is_buyer": true,
"buyer": {
"median_price": 0.00,
"average_price": 250000.00,
"favorite_city": "Dallas",
"timeline": "4 to 6 weeks"
},
"is_seller": true,
"seller": {
"timeline":"4 to 6 weeks"
},
"source": "Facebook",
"status": "unworked",
"contact" : {
"first_name": "Janis",
"last_name": "A. Doe",
"phone_numbers": {
"cell_phone": "9127562309"
},
"email": "jane.doe@email.com",
"is_validated_email":true,
"mailing_address": {
"street": "9390 Ford Ave",
"city": "Richmond Hill",
"state": "Georgia",
"postal_or_zip": "31324"
}
},
"updated_date": "2023-04-14T09:21:43.333Z",
"url": "test.com/dashboard/spa#leads/details/LEADID0"
},
"assigned_agents": {
"primary_agent": {
"id": "AGENT3"
},
"listing_agent": {
"id": "AGENT5"
},
"partner": {
"id": "AGENT7"
}
},
"toupp": {
"is_external": false,
"is_cinc": false
},
"regulations": {
"allows_phone_automation": true
},
"subscriptions": {
"email": {
"can_receive_emails": true,
"can_receive_property_alerts": false,
"can_receive_favorite_updates": true
},
"text": {
"can_receive_texts": true,
"has_ai_conversations_on": true
}
}
}
The lead information is structured in the following manner:
Field | Type | Description |
---|---|---|
id |
String |
The unique identifier for the lead. |
logged_in_date |
Date |
The timestamp of when the lead last logged in (ISO 8601). |
username |
String |
The username of the lead. |
registered_date |
Date |
The timestamp of when the lead was registered (ISO 8601). |
assigned_agents |
Object |
Contains the assigned agent information of the lead. |
info |
Object |
Contains the base level information of the lead. |
listings |
Object |
Contains listing information about a lead, but not seller properties. |
pipeline |
Object |
Contains the pipeline data of the lead. |
labels |
Array |
Contains the list of applied lead labels on the lead. |
verification |
Object |
Contains the verification status of the lead. |
toupp |
Object |
Contains the toupp information of the lead. |
regulations |
Object |
Contains the lead regulations of the lead. |
subscriptions |
Object |
Contains the lead subscriptions of the lead. |
Lead Assigned Agents
Example object: Assigned Agents Structure
"assigned_agents" : {
"primary_agent" : {
"id" : "AGENT3"
},
"listing_agent" : {
"id" : "AGENT5"
},
"partner" : {
"id" : "AGENT7"
}
}
The assigned agent information is structured in the following manner:
Field | Type | Description |
---|---|---|
primary_agent.id |
String |
ID of the assigned agent. |
listing_agent.id |
String |
ID of the assigned listing agent. |
partner.id |
String |
ID of the assigned partner. |
Lead Info
Example object: Lead Info Structure
"info" : {
"is_partial": false,
"is_buyer": true,
"buyer": {
"median_price": 0.00,
"average_price": 250000.00,
"favorite_city": "Dallas",
"timeline": "4 to 6 weeks"
},
"is_seller": true,
"seller": {
"timeline": "4 to 6 weeks"
},
"source": "Facebook",
"status": "unworked",
"contact": {
"first_name": "Janis",
"last_name": "A. Doe",
"phone_numbers": {
"cell_phone": "9127562309"
},
"email": "jane.doe@email.com",
"valid_email": "verified",
"mailing_address": {
"street": "9390 Ford Ave",
"city": "Richmond Hill",
"state": "Georgia",
"postal_or_zip" : "31324"
}
},
"updated_date" : "2023-06-15T12:04:11.268Z",
"url": "test.com/dashboard/spa#leads/details/LEADID0"
}
The user info information is structured in the following manner:
Field | Type | Description |
---|---|---|
buyer |
Object |
Contains the buyer information of the lead if they are a buyer. |
contact |
Object |
The general contact information of the lead. |
is_partial |
Boolean |
Check if the lead is a partial lead. |
is_buyer |
Boolean |
Check if the lead is a buyer. |
is_seller |
Boolean |
Check if the lead is a seller. |
seller |
Object |
Contains the seller information of the lead if they are a seller. |
secondary |
Object |
Contains the secondary contact information of the lead. |
source |
String |
The source from which the lead came into the CINC platform. |
status |
String |
The current status of the lead. |
updated_date |
Date |
The timestamp of when the lead info was updated ISO 8601. |
url |
String |
The URL to the lead's details CRM page. |
Lead Buyer Info Structure
Example object: Buyer Info Structure
"buyer":{
"median_price":0.00,
"average_price":250000.00,
"favorite_city":"Dallas",
"timeline":"4 to 6 weeks"
}
The buyer information is structured in the following manner:
Field | Type | Description |
---|---|---|
median_price |
Number |
Median price of housing that the lead is looking for. |
average_price |
Number |
Average price of housing that the lead is looking for. |
favorite_city |
String |
Lead's favorite city. |
timeline |
String |
The timeline when the lead wants to buy. |
Lead Contact Info Structure
Example object: Lead Contact Info Structure
"contact": {
"first_name": "Janis",
"last_name": "A. Doe",
"phone_numbers": {
"cell_phone": "9127562309"
},
"email": "jane.doe@email.com",
"is_validated_email":true,
"mailing_address": {
"street": "9390 Ford Ave",
"city": "Richmond Hill",
"state": "Georgia",
"postal_or_zip" : "31324"
}
}
The contact information is structured in the following manner:
Field | Type | Description |
---|---|---|
first_name |
String |
The first name of the lead. |
last_name |
String |
The last name of the lead (This may include middle name). |
phone_numbers |
Object |
The registered phone numbers provided by the lead. |
phone_numbers.cell_phone |
String |
The registered primary phone number provided by the lead. |
phone_numbers.home_phone |
String |
The registered home phone number provided by the lead. |
phone_numbers.work_phone |
String |
The registered work phone number provided by the lead. |
email |
String |
The registered email provided by the lead. |
is_validated_email |
Boolean |
The validation status of the email provided by the lead. |
mailing_address |
Object |
The address in order to send mail to the lead. |
mailing_address.street |
String |
The street for the mailing address of the lead. |
mailing_address.city |
String |
The city for the mailing address of the lead. |
mailing_address.state |
String |
The state for the mailing address of the lead. |
mailing_address.postal_or_zip |
String |
The postal/zip code for the mailing address of the lead. |
Lead Secondary Info Structure
Example object: Secondary Info Structure
"secondary":{
"relation": "wife",
"contact": {
"first_name": "Mary",
"last_name": "Smith",
"email": "mary.l.smith@email.com"
}
}
The seller information is structured in the following manner:
Field | Type | Description |
---|---|---|
relation |
String |
The relation to the lead of the secondary contact. |
contact |
Object |
The secondary contact information of the lead. |
Lead Seller Info Structure
Example object: Seller Info Structure
"seller":{
"timeline": "4 to 6 weeks",
"properties": [
{
"id": "PROPERTY1",
"address": {
"street": "191 Pioneer Trail",
"city": "Marietta",
"state": "GA",
"postal_or_zip": "30068"
},
"asking_price": 320999,
"total_beds": 2,
"total_baths": 4
}
]
}
The seller information is structured in the following manner:
Field | Type | Description |
---|---|---|
timeline |
String |
The timeline when the lead wants to sell. |
properties |
Array |
A list of seller properties that a lead has added. |
Lead Seller Property Structure
Example object: Seller Property Structure
{
"address": {
"street": "9390 Ford Ave",
"city": "Richmond Hill",
"state": "GA",
"postal_or_zip": "31324",
"unit": "ste 8"
},
"total_beds": 2,
"total_baths": 3,
"square_feet": 2,
"year_built": 2,
"created_date": "2024-04-14 19:44:14.576Z"
}
Field | Type | Description |
---|---|---|
total_beds |
Number |
The number of total bedrooms for the property. |
total_baths |
Number |
The number of total bathrooms for the property. Each partial or full bath is a plus one count to this field. |
address |
Object |
The address pertaining to the property. |
address.street |
String |
The street for the property of the lead. |
address.city |
String |
The city for the property of the lead. |
address.state |
String |
The state for the property of the lead. |
address.postal_or_zip |
String |
The postal/zip code for the property of the lead. |
address.unit |
String |
The unit for the property of the lead. |
square_feet |
Number |
The number of square footage for the property. |
year_built |
Number |
The year the property was built. |
created_date |
Date |
The timestamp of when the property was added onto the lead. (ISO 8601). |
Lead Status
The status of the lead indicates where in the system that the individual is being worked. If the status cannot be determined, it will not be present. The values are currently restricted through the CINC API to the following:
"unworked"
: The lead is new and has not been assigned any kind of workflow."inprogress"
: The lead is being worked within the CINC platform."closed"
: A lead that has closed in some regard within the CINC platform."trash"
: A deleted lead that is no longer valid within the system.
Lead Listings
Example object: Lead Listing
{
"listings": {
"favorited": [
{
"mls_number": "11223",
"price": 59900.00,
"favorited_date": "2023-09-20T14:17:20.940Z",
"id": "P05",
"address": {
"street": "139 Arlington Park Drive",
"city": "Hot Springs",
"state": "AR",
"postal_or_zip": "71901",
"county": "Garland",
"unit": "Unit B"
},
"total_beds": 2,
"total_baths": 5
},
{
"mls_number": "11224",
"price": 59900.00,
"favorited_date": "2023-09-21T14:17:20.940Z",
"id": "P04",
"address": {
"street": "209 Arlington Park Drive",
"city": "Hot Springs",
"state": "AR",
"postal_or_zip": "71901",
"county": "Garland"
},
"total_beds": 1,
"total_baths": 4
}
],
"recommended": [
{
"mls_number": "11125",
"price": 59900.00,
"recommended_by": "AGENT0",
"recommended_date": "2023-09-20T14:17:20.950Z",
"id": "P05",
"address": {
"street": "123 Arlington Park Drive",
"city": "Hot Springs",
"state": "AR",
"postal_or_zip": "71901",
"county": "Garland",
"unit": "ste K"
},
"total_beds": 2,
"total_baths": 5
},
{
"mls_number": "11126",
"price": 59900.00,
"recommended_by": "AGENT1",
"recommended_date": "2023-09-20T14:17:20.943Z",
"id": "P04",
"address": {
"street": "789 Arlington Park Drive",
"city": "Hot Springs",
"state": "AR",
"postal_or_zip": "71901",
"county": "Garland"
},
"total_beds": 1,
"total_baths": 4
}
]
}
}
The listing information is structured in the following manner:
Field | Type | Description |
---|---|---|
favorited |
Array[Object] |
An ordered list from newest to oldest of favorite listings that the lead has selected (only contains the five most recently favorited). |
recommended |
Array[Object] |
An ordered list from newest to oldest of listings that the lead has been recommended (only contains the five most recently recommended). |
Favorited Listings
Favorited listings are structured in the following manner:
Field | Type | Description |
---|---|---|
id |
String |
The unique identifier for the listing. |
price |
Number |
The listing price of the listing. |
mls_number |
String |
The identifier of the listing in the MLS. |
favorited_date |
Date |
The timestamp of when the listing was favorited by the lead. |
total_beds |
Number |
The total number of bedrooms in the listing. |
total_baths |
Number |
The total number of bathrooms in the listing. |
address |
Object |
The address of the listing. |
address.street |
String |
The street of the listing. |
address.city |
String |
The city of the listing. |
address.state |
String |
The state of the listing. |
address.postal_or_zip |
String |
The postal/zip code of the listing. |
address.county |
String |
The county of the listing. |
address.unit |
String |
The unit of the listing. |
Recommended Listings
Recommended listings are structured in the following manner:
Field | Type | Description |
---|---|---|
id |
String |
The unique identifier for the listing. |
price |
Number |
The listing price of the listing. |
mls_number |
String |
The identifier of the listing in the MLS. |
recommended_date |
Date |
The timestamp of when the listing was recommended to the lead. |
recommended_by |
String |
The user that recommended the liting to the lead. |
total_beds |
Number |
The total number of bedrooms in the listing. |
total_baths |
Number |
The total number of bathrooms in the listing. |
address |
Object |
The address of the listing. |
address.street |
String |
The street of the listing. |
address.city |
String |
The city of the listing. |
address.state |
String |
The state of the listing. |
address.postal_or_zip |
String |
The postal/zip code of the listing. |
address.county |
String |
The county of the listing. |
address.unit |
String |
The unit of the listing. |
Lead Labels
Example object: Lead Labels
{
"label": {
"id":"LDID0",
"created_date":"2023-06-01T10:02:12.297Z",
"updated_date": "2023-06-11T12:04:11.297Z",
"name":"Chimichanga",
"color":"#0B5C7A",
"created_by":"AGENT_MDID0",
"applied_date": "2023-04-14 19:44:14.347Z"
}
}
Lead labels are structured in the following manner:
Field | Type | Description |
---|---|---|
id |
String |
The unique identifier for the lead label. |
name |
String |
The custom display name for the lead label. |
color |
String |
The color for the lead label as (hex color code). |
created_date |
Date |
The timestamp of when the lead label was created (ISO 8601). |
updated_date |
Date |
The timestamp of when the lead label was updated (ISO 8601). |
applied_date |
Date |
The timestamp of when the lead label was applied (ISO 8601). This is a read only field available through the lead HTTP GET endpoints. |
created_by |
String |
The unique identifier of the agent who created the lead label. |
Valid Lead Label Hex Colors
List of label's color supported by CINC API:
#96281B |
#C0392B |
#CF000F |
#F22613 |
#D84642 |
#D84642 |
#E74C3C |
#E08283 |
#F1A9A0 |
#D2527E |
#D2527E |
#DB0A5B |
#F62459 |
#DCC6E0 |
#AEA8D3 |
#AEA8D3 |
#BE90D4 |
#BF55EC |
#9A12B3 |
#663399 |
#663399 |
#674172 |
#3A539B |
#446CB3 |
#1E8BC3 |
#1E8BC3 |
#19B5FE |
#34495E |
#336E7B |
#1BA39C |
#1BA39C |
#4ECDC4 |
#3FC380 |
#019875 |
#1E824C |
#1E824C |
#F4D03F |
#F4B350 |
#EB974E |
#F2784B |
#F2784B |
#F9690E |
#E67E22 |
#F89406 |
#6C7A89 |
#6C7A89 |
#95A5A6 |
#BDC3C7 |
#D2D8D4 |
#000000 |
Lead Notes
Example object: Lead Notes
"note": {
"id": "LN0001",
"content": "Nipugima rohubo uhebece revme acodeucu pecpuehi viok ugivepsuw ime ucho ja gefa kafhega tiwe. Zitatuwo dawvumka onzesda zuwek fuw ji hegmor med ohi lu tachobev lehlu fohiki no raduvu ta mulgot gofowo. Vutehnow re corhezte hepba zokozhih tot pujvuc badraiko rif pid vunujku onsiv otu subuka pa.",
"category": "call",
"created_by": "agentid",
"created_date": "2023-04-14 19:44:14.285Z",
"updated_date": "2023-04-14 21:53:25.748Z",
"is_pinned": true,
"notified_agents": ["AGENT_MDID6", "AGENT_MDID45", "AGENT_MDID11"]
}
The lead note information is structured in the following manner:
Field | Type | Description |
---|---|---|
id |
String |
The unique identifier for the note. |
content |
String |
The string content of the note. This field will NOT be available in the HTTP GET get all notes endpoint (#get-site-leads-lead_id-notes). Limit of 5,000 characters before trimming occurs. |
category |
String |
The CINC category for the different notes. |
creator_by |
String |
The unique identifier of the agent that created the note. |
created_date |
Date |
The timestamp of when the note was created (ISO 8601). |
updated_date |
Date |
The timestamp of when the note was last updated (ISO 8601). |
is_pinned |
Bool |
A flag indicating if the note stays static to the top of the notes. |
notified_agents |
Array[String] |
An optional field of an array of unique identifiers of agents that you want to be notified within the CINC platform that this note was created. This field will NOT be available in any HTTP GET endpoints. |
Lead Note Category
The following are valid lead note categories:
Category | Description |
---|---|
call |
The note contains info from an agent that has been on a phone/video call with a lead. |
general |
A general note that can be about anything. We will default to this category if there is no category provided. |
email |
An agent has emailed the lead. |
info |
The note contains information on a lead. For example, seller properties or listings a buyer is interested in. |
inquiry |
A lead has filled out an inquiry form and this note is the content of the form filled out. |
landing_page |
A lead has visited a landing page and this note usually has the lead name and the url of the landing page. |
other |
A note that can be about anything. This is usually used by integrators for actions that do not correlate to the categories. |
searching |
A lead has clicked the promo banner on a CINC lender site. This note usually contains the promo banner link and the amount of clicks the lead did on banners. |
Lead Pipeline
Example object: Pipeline Structure
"pipeline":{
"stage": "New Lead",
"history": [
{
"stage": "New Lead",
"staged_date": "2022-04-14T09:21:43Z"
}, //...
]
}
The pipeline information is structured in the following manner:
Field | Type | Description |
---|---|---|
stage |
String |
The name of the lead pipeline stage that the lead is currently in as shown in CINC. |
history |
Array[Object] |
An ordered list from newest to oldest of staged events tracking the name of the stage shown in CINC along with the date (ISO 8601) that the event occurred. |
Lead Pipeline History
Example object: Pipeline Structure
"history": [
{
"stage": "Attempted Contact",
"staged_date": "2022-04-15T13:13:36Z"
},
{
"stage": "New Lead",
"staged_date": "2022-04-14T09:21:43Z"
}, //...
]
The pipeline history events are structured in the following manner:
Field | Type | Description |
---|---|---|
stage |
String |
The name of the lead pipeline stage as shown in CINC. |
staged_date |
Date |
The timestamp of when the lead was placed in this stage (ISO 8601). |
Lead Verification
Example object: Lead Verification
"verification": {
"status": "unprompted"
}
The verification information is structured in the following manner:
Field | Type | Description |
---|---|---|
status |
String |
The current verification status of the lead. Possible values include: unprompted , verified , unverified . |
Lead Subscriptions
Example object: Lead Subscriptions
"subscriptions": {
"email": {
"can_receive_emails": true,
"can_receive_property_alerts": false,
"can_receive_favorite_updates": true
},
"text": {
"can_receive_texts": true,
"has_ai_conversations_on": true
}
}
The subscriptions information is structured in the following manner:
Field | Type | Description |
---|---|---|
can_receive_emails |
Boolean |
Indicates if the lead can receive emails. |
can_receive_property_alerts |
Boolean |
Indicates if the lead can receive property alerts via email. |
can_receive_favorite_updates |
Boolean |
Indicates if the lead can receive updates about their favorite properties via email. |
can_receive_texts |
Boolean |
Indicates if the lead can receive text messages. |
has_ai_conversations_on |
Boolean |
Indicates if the lead can have AI conversations via text. |
Lead Regulations
Example object: Lead Regulations
"regulations": {
"allows_phone_automation": true
}
The regulations information is structured in the following manner:
Field | Type | Description |
---|---|---|
allows_phone_automation |
Boolean |
Indicates if phone automation is allowed for the lead. |
Lead Toupp
Example object: Lead Toupp
"toupp": {
"is_external": false,
"is_cinc": false
}
The toupp information is structured in the following manner:
Field | Type | Description |
---|---|---|
is_external |
Boolean |
Indicates if the lead is external. |
is_cinc |
Boolean |
Indicates if the lead is from CINC. |
Webhooks
Welcome to our webhook registration page! Here, you can easily register your webhook URL to receive real-time updates and notifications. Here is the list of all webhook endpoints supported by our service.
By registering your webhook, you can receive updates from leads and agents as soon as they happen, without needing to constantly check for changes.
To get started, simply complete the request body with events you want to subscribe, optional customer headers you want to include in your webhook, and the URL of your webhook endpoint. You can specify which events should trigger the webhook from this event list, then use this endpoint to complete your registration. Your webhook will be active and ready to receive incoming data from our service once this step is completed successfully.
We understand that integrating webhooks can be complex, so we have provided helpful documentation and resources to guide you through the process. Our goal is to make the registration process as simple and user-friendly as possible, so that you can start receiving webhook updates and streamlining your workflows right away.
Webhook Event Meta Structure
Example object: Webhook Event Meta Structure
"meta": {
"webhook": {
"user_id": "MM123456",
"client_id": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6",
},
"site_id": "D1234567",
"event_id": "e1f2g3h4-i5j6-k7l8-m9n0-o1p2q3r4s5t6",
"published_date": "2023-12-12T04:03:34.529Z"
}
Field | Type | Description |
---|---|---|
meta |
Object |
Contains all the meta information on an event. |
meta.webhook |
Object |
Contains the meta information pertaining to the registered webhook. |
meta.webhook.user_id |
String |
The CINC agent identifier that the webhook was registered for. |
meta.webhook.client_id |
String |
The client credentials identifier used to register the webhook. |
meta.site_id |
String |
The CINC site identifier that the event occurred on. |
meta.event_id |
String |
The identifier of the event that was published within the CINC site. |
meta.published_date |
Date |
The time when the event was published within the CINC site (ISO 8601). |
Webhook Event Filters
The CINC API provides a way to filter events to reduce the traffic being called to the webhook. Events can be filtered explicitly by type or by using an expression.
Event Type Filters
The CINC API allows you to explicitly filter events by type by providing a list of event types to filter on.
Or, if all events of any type are desired, you can use the "*"
operator.
These types to support a single wildcard allowed within an event type (i.e. "lead.*.update"
which will match any event prefixed with lead.
and ends with .updated
).
Anything that matches the filter will be let through and behaves as a white-list.
Event Expression Filters
The CINC API allows you to filter events using an expression.
An expression is detected by starting with {
and ending with }
and is provided in the same list of event types.
Anything between the braces is considered an expression and will be evaluated as such.
The contents of an event can be accessed through the event
variable.
For ISO-8601 formatted dates, the parse_date
function can be used to convert it into the number of seconds since the epoch.
This is useful when comparing dates or tracking amount of time between dates.
Standard Webhook Headers
These are the standard headers included in every webhook request.
Example object: Standard Webhook Headers
{
"x-cinc-event-id": "e1f2g3h4-i5j6-k7l8-m9n0-o1p2q3r4s5t6",
"x-cinc-event-type": "lead.created",
"x-cinc-site-id": "D1234567",
"x-cinc-user-id": "MM123456"
}
Field | Type | Description |
---|---|---|
x-cinc-event-id |
String |
The identifier of the event that was published within the CINC site. |
x-cinc-event-type |
String |
The type of event that was sent. |
x-cinc-site-id |
String |
The identifier for the CINC site that the event occurred on. |
x-cinc-user-id |
String |
The identifier for the CINC agent that the webhook was registered for. |
Webhook Events
The following are the events that are supported:
Agent Events
agent.created
Triggered when a new agent has been created on the CINC site.
Field | Type | Description |
---|---|---|
meta |
Object |
Contains all the meta information on an event. |
type |
String |
Set to "agent.created" representing the type of the event. |
agent |
Object |
All information pertaining to the agent that was created that can be passed as an event. |
agent.id |
String |
The identifier of the agent that was created. |
Example Structure
{
"meta": {
"event_id": "EVENT01",
"published_date": "2023-04-15 21:39:16Z",
"site_id": "SITE001"
},
"type": "agent.created",
"agent": { "id": "AGENT01" }
}
agent.info.updated
Triggered when any data in the agent.info
structured has been updated on the CINC site.
Field | Type | Description |
---|---|---|
meta |
Object |
Contains all the meta information on an event. |
type |
String |
Set to "agent.info.updated" representing the type of the event. |
agent |
Object |
All information pertaining to the agent that was updated that can be passed as an event. |
agent.id |
String |
The identifier of the agent that was updated. |
Example Structure
{
"meta": {
"event_id": "EVENT01",
"published_date": "2023-04-15 21:39:16Z",
"site_id": "SITE002"
},
"type": "agent.info.updated",
"lead": { "id": "AGENT01" }
}
agent.logged_in
Triggered when an agent has logged in on the CINC site.
Example Structure
{
"meta": {
"event_id": "EVENT01",
"published_date": "2023-08-29 03:00:02Z",
"site_id": "SITE003"
},
"type": "agent.logged_in",
"agent": {
"id": "AGENT01",
"logged_in_date": "2023-08-29 02:59:44Z"
},
"last_logged_in_date": "2023-07-29 02:59:44Z"
}
Field | Type | Description |
---|---|---|
meta |
Object |
Contains all the meta information on an event. |
type |
String |
Set to "agent.logged_in" representing the type of the event. |
agent |
Object |
All information pertaining to the agent that had logged in that can be passed as an event. |
agent.id |
String |
The identifier of the agent that logged in. |
agent.logged_in_date |
Date |
The time when the agent logged in. |
last_logged_in_date |
Date |
The time when the agent had previously logged in. |
Lead Events
lead.created
Triggered when a new lead has been created on the CINC site.
Field | Type | Description |
---|---|---|
meta |
Object |
Contains all the meta information on an event. |
type |
String |
Set to "lead.created" representing the type of the event. |
lead |
Object |
All information pertaining to the lead that was created that can be passed as an event. |
lead.id |
String |
The identifier of the lead that was created. |
Example Structure
{
"meta": {
"event_id": "EVENT01",
"published_date": "2023-04-15 21:39:16Z",
"site_id": "SITE001"
},
"type": "lead.created",
"lead": { "id": "LEAD01" }
}
lead.inquired
Trigger when a lead has inquired on a property on the CINC site.
Field | Type | Description |
---|---|---|
meta |
Object |
Contains all the meta information on an event. |
type |
String |
Set to "lead.inquired" representing the type of the event. |
listing |
Object |
All information pertaining to the listing that was inquired on that can be passed as an event. |
listing.id |
String |
The unique identifier for the listing. |
listing.price |
Number |
The price of the listing that was inquired on. |
listing.mls_number |
String |
The MLS number of the listing that was inquired on. |
listing.address |
Object |
The address of the listing that was inquired on. |
listing.address.street |
String |
The street address of the listing that was inquired on. |
listing.address.city |
String |
The city of the listing that was inquired on. |
listing.address.state |
String |
The state of the listing that was inquired on. |
listing.address.postal_or_zip |
String |
The zip code of the listing that was inquired on. |
listing.address.unit |
String |
The unit of the listing that was inquired on. |
lead |
Object |
All information pertaining to the lead that inquired on the listing that can be passed as an event. |
lead.id |
String |
The identifier of the lead that inquired on the listing. |
inquiry |
Object |
All information pertaining to the inquiry that was made on the listing that can be passed as an event. |
inquiry.showing_date |
Date |
The date that the user chose to request a showing of the listing (for "showing" inquiry types). |
inquiry.type |
String |
The type of inquiry that was made on the listing. The current types are "showing" and "listing" . |
Example Structure
{
"meta": {
"event_id": "EVENT01",
"published_date": "2023-04-15 21:39:16Z",
"site_id": "SITE002"
},
"type": "lead.inquired",
"listing": {
"id": "P002",
"price": 4200000.00,
"mls_number":"8287212",
"address": {
"street": "123 Main St",
"city": "San Diego",
"state": "CA",
"postal_or_zip": "92101",
"unit": "Apt 1"
}
},
"lead": { "id": "LEAD01" },
"inquiry": {
"type": "listing"
}
},
{
"meta": {
"event_id": "EVENT02",
"published_date": "2023-04-15 22:39:16Z",
"site_id": "SITE003"
},
"type": "lead.inquired",
"listing": {
"price": 4200000.00,
"mls_number":"8287212",
"address": {
"street": "123 Main St",
"city": "San Diego",
"state": "CA",
"postal_or_zip": "92101",
"unit": "Apt 1"
}
},
"lead": { "id": "LEAD01" },
"inquiry": {
"type": "showing",
"showing_date" : "2023-04-17 00:00:00Z"
}
}
lead.info.updated
Triggered when any data in the lead.info
structured has been updated on the CINC site.
Example Structure
{
"meta": {
"event_id": "EVENT01",
"published_date": "2023-04-15 21:39:16Z",
"site_id": "SITE001"
},
"type": "lead.info.updated",
"lead": { "id": "LEAD01" }
}
Field | Type | Description |
---|---|---|
meta |
Object |
Contains all the meta information on an event. |
type |
String |
Set to "lead.info.updated" representing the type of the event. |
lead |
Object |
All information pertaining to the lead that was updated that can be passed as an event. |
lead.id |
String |
The identifier of the lead that was updated. |
lead.assigned_agents.primary_agent.updated
Triggered when any data in the lead.assigned_agents.primary_agent
structured has been updated on the CINC site.
Example Structure
{
"meta": {
"event_id": "EVENT01",
"published_date": "2023-04-15 21:39:16Z",
"site_id": "SITE003"
},
"type": "lead.assigned_agents.primary_agent.updated",
"lead": { "id": "LEAD01" },
"agent": { "id": "AGENT01"}
}
Field | Type | Description |
---|---|---|
meta |
Object |
Contains all the meta information on an event. |
type |
String |
Set to "lead.assigned_agents.primary_agent.updated" representing the type of the event. |
lead |
Object |
All information pertaining to the lead that was updated that can be passed as an event. |
lead.id |
String |
The identifier of the lead that was updated. |
agent |
Object |
All information pertaining to the agent that was assigned to the lead that can be passed as an event. |
agent.id |
String |
The identifier of the agent that was assigned. |
lead.assigned_agents.listing_agent.updated
Triggered when any data in the lead.assigned_agents.listing_agent
structured has been updated on the CINC site.
Example Structure
{
"meta": {
"event_id": "EVENT01",
"published_date": "2023-04-15 21:39:16Z",
"site_id": "SITE001"
},
"type": "lead.assigned_agents.listing_agent.updated",
"lead": { "id": "LEAD01" },
"agent": { "id": "AGENT01"}
}
Field | Type | Description |
---|---|---|
meta |
Object |
Contains all the meta information on an event. |
type |
String |
Set to "lead.assigned_agents.listing_agent.updated" representing the type of the event. |
lead |
Object |
All information pertaining to the lead that was updated that can be passed as an event. |
lead.id |
String |
The identifier of the lead that was updated. |
agent |
Object |
All information pertaining to the agent that was assigned to the lead that can be passed as an event. |
agent.id |
String |
The identifier of the agent that was assigned. |
lead.assigned_agents.partner.updated
Triggered when any data in the lead.assigned_agents.partner
structured has been updated on the CINC site.
Example Structure
{
"meta": {
"event_id": "EVENT01",
"published_date": "2023-04-15 21:39:16Z",
"site_id": "SITE002"
},
"type": "lead.assigned_agents.partner.updated",
"lead": { "id": "LEAD01" },
"agent": { "id": "AGENT01"}
}
Field | Type | Description |
---|---|---|
meta |
Object |
Contains all the meta information on an event. |
type |
String |
Set to "lead.assigned_agents.partner.updated" representing the type of the event. |
lead |
Object |
All information pertaining to the lead that was updated that can be passed as an event. |
lead.id |
String |
The identifier of the lead that was updated. |
agent |
Object |
All information pertaining to the agent that was assigned to the lead that can be passed as an event. |
agent.id |
String |
The identifier of the agent that was assigned. |
lead.label.applied
Triggered when a lead label has been applied to a lead on the CINC site.
Example Structure
{
"meta": {
"event_id": "EVENT01",
"published_date": "2023-04-15 21:39:16Z",
"site_id": "SITE002"
},
"type": "lead.label.applied",
"lead": { "id": "LEAD01" },
"label": {
"id": "LABEL01",
"name": "Hot Lead"
}
}
Field | Type | Description |
---|---|---|
meta |
Object |
Contains all the meta information on an event. |
type |
String |
Set to "lead.label.applied" representing the type of the event. |
lead |
Object |
All information pertaining to the lead where the label was applied to that can be passed as an event. |
lead.id |
String |
The identifier of the lead that the label was applied to. |
label |
Object |
All information pertaining to the applied label that can be passed as an event. |
label.id |
String |
The identifier of the label that was applied to the lead. |
label.name |
String |
The name of the label that was applied to the lead. |
lead.label.removed
Triggered when a lead label has been removed to a lead on the CINC site.
Example Structure
{
"meta": {
"event_id": "EVENT01",
"published_date": "2023-04-15 21:39:16Z",
"site_id": "SITE002"
},
"type": "lead.label.removed",
"lead": { "id": "LEAD01" },
"label": { "id": "LABEL01" }
}
lead.listing.viewed
Trigger when a lead has viewed on a property on the CINC site.
Field | Type | Description |
---|---|---|
meta |
Object |
Contains all the meta information on an event. |
type |
String |
Set to "lead.listing.viewed" representing the type of the event. |
listing |
Object |
All information pertaining to the listing that was viewed on that can be passed as an event. |
listing.id |
String |
The unique identifier for the listing. |
listing.price |
Number |
The price of the listing that the lead viewed. |
listing.mls_number |
String |
The MLS number of the listing that the lead viewed. |
listing.address |
Object |
The address of the listing tthat the lead viewed. |
listing.address.street |
String |
The street address of the listing that the lead viewed. |
listing.address.city |
String |
The city of the listing that the lead viewed. |
listing.address.state |
String |
The state of the listing tthat the lead viewed. |
listing.address.postal_or_zip |
String |
The zip code of the listing that the lead viewed. |
listing.address.unit |
String |
The unit of the listing that the lead viewed. |
lead |
Object |
All information pertaining to the lead that viewed the listing that can be passed as an event. |
lead.id |
String |
The identifier of the lead that viewed the listing. |
Example Structure
{
"meta": {
"event_id": "EVENT01",
"published_date": "2023-04-15 21:39:16Z",
"site_id": "SITE001"
},
"type": "lead.listing.viewed",
"listing": {
"id": "P001",
"price": 4200000.00,
"mls_number":"8287212",
"address": {
"street": "123 Main St",
"city": "San Diego",
"state": "CA",
"postal_or_zip": "92101",
"unit": "Apt 1"
}
},
"lead": { "id": "LEAD01" }
}
Field | Type | Description |
---|---|---|
meta |
Object |
Contains all the meta information on an event. |
type |
String |
Set to "lead.label.removed" representing the type of the event. |
lead |
Object |
All information pertaining to the lead where the label was removed from that can be passed as an event. |
lead.id |
String |
The identifier of the lead that the label was removed from. |
label |
Object |
All information pertaining to the removed label that can be passed as an event. |
label.id |
String |
The identifier of the label that was removed from the lead. |
lead.logged_in
Triggered when a lead has logged in on the CINC site.
Example Structure
{
"meta": {
"event_id": "EVENT01",
"published_date": "2023-08-29 03:00:02Z",
"site_id": "SITE001"
},
"type": "lead.logged_in",
"lead": {
"id": "LEAD01",
"logged_in_date": "2023-08-29 02:59:44Z"
},
"last_logged_in_date": "2023-07-29 02:59:44Z"
}
Field | Type | Description |
---|---|---|
meta |
Object |
Contains all the meta information on an event. |
type |
String |
Set to "lead.logged_in" representing the type of the event. |
lead |
Object |
All information pertaining to the lead that had logged in that can be passed as an event. |
lead.id |
String |
The identifier of the lead that logged in. |
lead.logged_in_date |
Date |
The time when the lead logged in. |
last_logged_in_date |
Date |
The time when the lead had previously logged in. |
lead.note.created
Triggered when a note has been created on a lead on the CINC site.
Example Structure
{
"meta": {
"event_id": "EVENT01",
"published_date": "2023-04-15 21:39:16Z",
"site_id": "SITE001"
},
"type": "lead.note.created",
"lead": { "id": "LEAD01" },
"note": {
"id": "NOTE01",
"category": "General",
"created_by": "AGENT_MDID0"
}
}
Field | Type | Description |
---|---|---|
meta |
Object |
Contains all the meta information on an event. |
type |
String |
Set to "lead.note.created" representing the type of the event. |
lead |
Object |
All information pertaining to the lead where the note was created on that can be passed as an event. |
lead.id |
String |
The identifier of the lead that the note was created on. |
note |
Object |
All information pertaining to the created note that can be passed as an event. |
note.id |
String |
The identifier of the note that was created on the lead. |
note.category |
String |
The category of the note that was created on the lead. |
note.created_by |
String |
The id of the agent that created the note. |
API Endpoints
The CINC API follows a simple HTTP API. Developers can integrate to this interface following the authorization requirements.
Agent Endpoints
GET site/me
version 2.0
This endpoint gets the current agent information that is making the request.
It is purely provided for testing and verifying that the current access token contains a valid user.
For more information, read the section on rate limits.
The required scope to access this endpoint is api:read
.
Example request: GET site/me
curl -X GET -G "https://public.cincapi.com/v2/site/me" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Authorization: Ad3Zjsd4tU209aJd"
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("GET"), "https://public.cincapi.com/v2/site/me"))
{
request.Headers.TryAddWithoutValidation("Authorization", "Ad3Zjsd4tU209aJd");
var response = await httpClient.SendAsync(request);
}
}
fetch('https://public.cincapi.com/v2/site/me', {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
'Authorization': 'Ad3Zjsd4tU209aJd'
}
})
.then(response => response.json())
.then(data => console.log(data));
import requests
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Ad3Zjsd4tU209aJd',
}
response = requests.get('https://public.cincapi.com/v2/site/me', headers=headers)
Example response
"body": {
"id": "AGENT0",
"username": "buum@cu.com",
"roles": ["client", "broker"]
},
"header": {
"x-rate-limit-limit" : 100,
"x-rate-limit-remaining" : 91,
"x-rate-limit-reset" : 1677130510
}
Response Object
Name | Type | Description |
---|---|---|
id |
String |
The identifier representing the agent. |
username |
String |
The username of the agent that authorized the access token. |
roles |
Array[String] |
Contains a list of roles representing individual permissions of the agent pertaining to the access token. |
GET site/agents
version 2.0
This endpoint allows for getting all existing agents based on their offset.
For more information, read the sections on pagination and rate limits.
The required scope to access this endpoint is api:read
.
Example request: GET site/agents
curl -X GET -G "https://public.cincapi.com/v2/site/agents" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Authorization: Ad3Zjsd4tU209aJd" \
-d "offset=0" \
-d "limit=2"
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("GET"), "https://public.cincapi.com/v2/site/agents?offset=0&limit=2"))
{
request.Headers.TryAddWithoutValidation("Authorization", "Ad3Zjsd4tU209aJd");
var response = await httpClient.SendAsync(request);
}
}
fetch('https://public.cincapi.com/v2/site/agents?offset=0&limit=2', {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
'Authorization': 'Ad3Zjsd4tU209aJd'
}
})
.then(response => response.json())
.then(data => console.log(data));
import requests
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Ad3Zjsd4tU209aJd',
}
params = {
'offset': '0',
'limit': '2',
}
response = requests.get('https://public.cincapi.com/v2/site/agents', params=params, headers=headers)
Example response
"body": {
"paging":{
"offset":0,
"next":"8",
"limit":2,
"count":2
},
"agents": [
{
"id": "AGENT1",
"logged_in_date": "2023-05-11T22:27:25.558Z",
"registered_date": "2022-12-18T20:27:25.558Z",
"username": "jane.doe@email.com",
"info": {
"status": "active",
"contact": {
"first_name": "Janis",
"last_name": "A. Doe",
"phone_numbers": {
"cell_phone":"4044041234"
},
"email": "jane.doe@email.com"
},
"updated_date": "2022-12-18T20:27:25.558Z"
},
"roles":["broker", "owner"]
},
{
"id": "AGENT0",
"logged_in_date": "2023-05-11T22:27:25.987Z",
"registered_date": "2022-01-11T09:32:05.987Z",
"username": "pume@efpu.bj",
"info": {
"status": "active",
"contact": {
"first_name": "Eddie",
"last_name": "Mellor",
"phone_numbers": {
"cell_phone":"4628874518"
},
"email":"pume@efpu.bj"
},
"updated_date": "2023-01-11T09:32:05.987Z",
"url": "https://test.com/dashboard/spa#settings/profile/profile/AGENT0"
},
"roles":["agent"]
}
]
},
"header": {
"x-rate-limit-limit" : 100,
"x-rate-limit-remaining" : 91,
"x-rate-limit-reset" : 1653051600
}
Query Parameters
Name | Type | Description |
---|---|---|
offset |
Number |
Optional The number of agents to skip before starting to return new agents result from the query. Without specifying, the default is 0 . |
limit |
Number |
Optional The max number of agents that should be returned. The default is 10 and the max is 500 . |
GET site/agents/{agent_id}
version 2.0
This endpoint gets the current specified agent's data.
For more information, read the section on rate limits.
The required scope to access this endpoint is api:read
.
Example request: GET site/agents/{agent_id}
curl -X GET -G "https://public.cincapi.com/v2/site/agents/AGENT0" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Authorization: Ad3Zjsd4tU209aJd"
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("GET"), "https://public.cincapi.com/v2/site/agents/AGENT0"))
{
request.Headers.TryAddWithoutValidation("Authorization", "Ad3Zjsd4tU209aJd");
var response = await httpClient.SendAsync(request);
}
}
fetch('https://public.cincapi.com/v2/site/agents/AGENT0', {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
'Authorization': 'Ad3Zjsd4tU209aJd'
}
})
.then(response => response.json())
.then(data => console.log(data));
import requests
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Ad3Zjsd4tU209aJd',
}
response = requests.get('https://public.cincapi.com/v2/site/agents/AGENT0', headers=headers)
Example response
"body": {
"agent": {
"id": "AGENT1",
"logged_in_date": "2023-05-11T22:27:25.258Z",
"registered_date": "2022-12-18T20:27:25.258Z",
"username": "jane.doe@email.com",
"info": {
"status": "active",
"contact": {
"first_name": "Janis",
"last_name": "A. Doe",
"phone_numbers": {
"cell_phone":"4044041234"
},
"email":"jane.doe@email.com"
},
"updated_date":"2023-05-11T22:27:25.258Z"
},
"roles":["agent", "team_lead"]
}
},
"header": {
"x-rate-limit-limit" : 100,
"x-rate-limit-remaining" : 91,
"x-rate-limit-reset" : 1653051600
}
Path Parameters
Name | Type | Description |
---|---|---|
agent_id |
String |
Required Unique agent identifier. |
Lead Endpoints
GET site/leads
version 2.0
This endpoint allows for getting all existing leads based on their offset.
For more information, read the sections on pagination and rate limits.
The required scope to access this endpoint is api:read
.
Example request: GET site/leads
curl -X GET -G "https://public.cincapi.com/v2/site/leads" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Authorization: Ad3Zjsd4tU209aJd" \
-d "offset=0" \
-d "limit=2"
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("GET"), "https://public.cincapi.com/v2/site/leads?offset=0&limit=2"))
{
request.Headers.TryAddWithoutValidation("Authorization", "Ad3Zjsd4tU209aJd");
var response = await httpClient.SendAsync(request);
}
}
fetch('https://public.cincapi.com/v2/site/leads?offset=0&limit=2', {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
'Authorization': 'Ad3Zjsd4tU209aJd'
}
})
.then(response => response.json())
.then(data => console.log(data));
import requests
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Ad3Zjsd4tU209aJd',
}
params = {
'offset': '0',
'limit': '2',
}
response = requests.get('https://public.cincapi.com/v2/site/leads', params=params, headers=headers)
Example response
"body": {
"paging":{
"offset":0,
"next":"9",
"limit":2,
"count":2
},
"leads": [
{
"id":"LEAD_ID0",
"logged_in_date": "2023-07-15T01:02:18.173Z",
"username": "anaheard@capi.test",
"registered_date":"2023-01-18T20:27:25.589Z",
"info": {
"is_partial": false,
"is_buyer": false,
"is_seller": true,
"seller": {
"timeline": "4 to 6 weeks"
},
"source" : "Facebook",
"status" : "unworked",
"contact": {
"first_name":"Ana",
"last_name":"Heard",
"phone_numbers": {
"cell_phone":"4706996288"
},
"email":"anaheard@capi.test",
"is_validated_email":true,
},
"updated_date":"2023-05-31T18:42:21.640Z",
"url": "test.com/dashboard/spa#leads/details/LEADID0"
},
"pipeline":{
"stage":"New Lead",
"history":[
{
"stage":"New Lead",
"staged_date":"2023-01-18T20:27:25.244Z"
}
]
},
"assigned_agents": {
"primary_agent": {
"id": "AGENT1"
},
"listing_agent": {
"id": "AGENT4"
},
"partner": {
"id": "AGENT9"
}
}
},
{
"id":"LEAD0",
"logged_in_date": "2023-07-15T01:02:18.173Z",
"username": "mo@rijegmo.fk",
"registered_date":"2022-11-06T21:41:00.345Z",
"info":{
"is_partial": false,
"is_buyer": true,
"buyer": {
"median_price" : 0.00,
"average_price" : 250000.00,
"favorite_city" : "Dallas",
"timeline" : "4 to 6 weeks"
},
"is_seller": false,
"source" : "Facebook",
"status" : "unworked",
"contact": {
"first_name":"Devin",
"last_name":"Norton",
"phone_numbers": {
"cell_phone":"3703089435"
},
"email":"mo@rijegmo.fk",
"is_validated_email":true,
},
"updated_date":"2021-07-22T09:23:10.547Z"
},
"assigned_agents": {
"primary_agent": {
"id": "AGENT3"
},
"listing_agent": {
"id": "AGENT5"
},
"partner": {
"id": "AGENT7"
}
}
}
]
},
"header": {
"x-rate-limit-limit" : 100,
"x-rate-limit-remaining" : 91,
"x-rate-limit-reset" : 1653051600
}
Query Parameters
Name | Type | Description |
---|---|---|
offset |
Number |
Optional The number of leads to skip before starting to return new leads result from the query. Without specifying, the default is 0 . |
limit |
Number |
Optional The max number of leads that should be returned. The default is 10 and the max is 500 . |
next |
String |
Optional The next page of leads. |
from=id:{lead_id} |
String |
Optional The lead ID to start from. |
Lead Searching
This endpoint also supports searching for leads based on specific fields in the payload. The format for sending a request as a query string parameter is attributename:operator=value
. If the operator is an equal, it can be shortened to attributename=value
.
attributename
is the name of the field in the payload, operator
is the comparison operator, and value
is the value to compare against.
Here are the supported operators:
Operator | Description |
---|---|
eq |
Equal to |
gte |
Greater than or equal to |
lte |
Less than or equal to |
gt |
Greater than |
lt |
Less than |
contains |
Contains substring within the string (case-insensitive). |
atleast |
At least have a certain number in a list |
For example, to search for leads where is_seller
is true
and username
contains the substring @myexample.com
, the URL would be: baseurl?info.is_seller=true&username:contains=@myexample.com
.
GET site/leads/{lead_id}
version 2.0
This endpoint gets the current specified lead's data.
For more information, read the section on rate limits.
The required scope to access this endpoint is api:read
.
Example request: GET site/leads/{lead_id}
curl -X GET -G "https://public.cincapi.com/v2/site/leads/LEAD0" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Authorization: Ad3Zjsd4tU209aJd"
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("GET"), "https://public.cincapi.com/v2/site/leads/LEAD0"))
{
request.Headers.TryAddWithoutValidation("Authorization", "Ad3Zjsd4tU209aJd");
var response = await httpClient.SendAsync(request);
}
}
fetch('https://public.cincapi.com/v2/site/leads/LEAD0', {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
'Authorization': 'Ad3Zjsd4tU209aJd'
}
})
.then(response => response.json())
.then(data => console.log(data));
import requests
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Ad3Zjsd4tU209aJd',
}
response = requests.get('https://public.cincapi.com/v2/site/leads/LEAD0', headers=headers)
Example response
"body": {
"lead": {
"id": "LEAD_MDID0",
"logged_in_date": "2023-07-15T01:02:18.173Z",
"username": "89yguibnjokl@iuy87.com",
"registered_date": "2023-03-22T13:24:07.543Z",
"verification": {
"status": "unprompted"
},
"info": {
"is_partial": false,
"is_buyer": false,
"is_seller": true,
"seller": {
"properties": [
{
"asking_price": 0.00,
"id": "SP04",
"address": {
"street": "15151 San Fernando Mission Boulevard",
"city": "Los Angeles",
"state": "CA",
"postal_or_zip": "91345"
},
"total_beds": 0,
"total_baths": 0
},
{
"asking_price": 0.00,
"id": "SP03",
"address": {
"street": "15151 San Fernando Mission Boulevard",
"city": "Los Angeles",
"state": "CA",
"postal_or_zip": "91345"
},
"total_beds": 0,
"total_baths": 0
}
]
},
"source": "www.test.com",
"status": "unworked",
"contact": {
"first_name": "Devin",
"last_name": "Norton",
"phone_numbers": {
"cell_phone": "12312312333"
},
"email": "89yguibnjokl@iuy87.com",
"is_validated_email":true,
},
"updated_date": "2023-07-15T01:02:18.173Z",
"url": "https://test.com/dashboard/spa#leads/details/LEAD_MDID0"
},
"pipeline": {
"stage": "Attempted Contact",
"history": [
{
"stage": "Attempted Contact",
"staged_date": "2023-07-15T01:02:18.300Z"
},
{
"stage": "New Lead",
"staged_date": "2023-07-15T01:02:18.300Z"
}
]
},
"listings": {
"favorited": [
{
"mls_number": "11123",
"price": 59900.0000,
"favorited_date": "2023-09-20T14:17:20.940Z",
"id": "P05",
"address": {
"street": "139 Arlington Park Drive",
"city": "Hot Springs",
"state": "AR",
"postal_or_zip": "71901",
"county": "Garland"
},
"total_beds": 2,
"total_baths": 5
},
{
"mls_number": "11124",
"price": 59900.0000,
"favorited_date": "2023-09-22T14:17:20.940Z",
"id": "P04",
"address": {
"street": "209 Arlington Park Drive",
"city": "Hot Springs",
"state": "AR",
"postal_or_zip": "71901",
"county": "Garland"
},
"total_beds": 1,
"total_baths": 4
}
],
"recommended": [
{
"mls_number": "11125",
"price": 59900.00,
"recommended_by": "AGENT0",
"recommended_date": "2023-09-20T14:17:20.950Z",
"id": "P05",
"address": {
"street": "123 Arlington Park Drive",
"city": "Hot Springs",
"state": "AR",
"postal_or_zip": "71901",
"county": "Garland"
},
"total_beds": 2,
"total_baths": 5
},
{
"mls_number": "11126",
"price": 59900.00,
"recommended_by": "AGENT1",
"recommended_date": "2023-09-20T14:17:20.943Z",
"id": "P04",
"address": {
"street": "789 Arlington Park Drive",
"city": "Hot Springs",
"state": "AR",
"postal_or_zip": "71901",
"county": "Garland"
},
"total_beds": 1,
"total_baths": 4
}
]
},
"labels": [
{
"id": "LDID0",
"name": "Chimichanga",
"color": "#0B5C7A",
"created_by": "AGENT_MDID0",
"applied_date": "2023-07-15T01:02:18.320Z"
},
{
"id": "LDID1",
"name": "Guacamole",
"color": "#0B5C7A",
"created_by": "AGENT_MDID0",
"applied_date": "2023-07-15T01:02:18.323Z"
}
],
"assigned_agents": {
"primary_agent": {
"id": "AGENT_MDID0"
},
"agent": {
"id": "AGENT_MDID1"
}
},
"toupp": {
"is_external": false,
"is_cinc": false
},
"regulations": {
"allows_phone_automation": true
},
"subscriptions": {
"email": {
"can_receive_emails": true,
"can_receive_property_alerts": false,
"can_receive_favorite_updates": true
},
"text": {
"can_receive_texts": true,
"has_ai_conversations_on": true
}
}
}
},
"header": {
"x-rate-limit-limit" : 100,
"x-rate-limit-remaining" : 91,
"x-rate-limit-reset" : 1653051600
}
Path Parameters
Name | Type | Description |
---|---|---|
lead_id |
String |
Required Unique lead identifier. |
Query Parameters
Name | Type | Description |
---|---|---|
fields |
String |
Optional Comma-separated list of fields to include in the response. Please read below for more detail about lead filtering. |
Lead Filtering
This endpoint supports filtering the information returned from a lead. You can specify the fields you want to include in the response using the fields
query parameter. Comma separatation is required when filtering by multiple fields.
Here are the supported fields:
info
assigned_agents
pipeline
labels
toupp
regulations
subscriptions
verification
listings.favorited
listings.recommended
For example, to only include the info
and assigned_agents
fields in the response, the URL would be: baseurl?fields=info,assigned_agents
.
POST site/leads
version 2.0
This endpoint can be used as an upsert function to create or update a lead.
If the id
is not provided, the function will attempt to create a new lead. In this case, either username
and email
must be provided as a unique identifier for the lead.
If the id
is provided, the function will attempt to update the existing lead with that id
. In this case, the username
field will be considered for an email change. If the username
does not match an existing email
in the system, the lead's email
will be updated to the new username
. If the username
matches an existing email, the function will throw an error.
Please note that the upsert
function assumes that the id
is a unique identifier for a lead, and that the username
and email
are unique among all leads. If these assumptions are not met, the function may not behave as expected.
The call is currently a synchronous creation.
For more information, read the section on rate limits.
The required scope to access this endpoint is api:create
.
Example request: POST site/leads
curl -X POST -G "https://public.cincapi.com/v2/site/leads" \
-H "Content-Type: application/json" \
-H "Authorization: Ad3Zjsd4tU209aJd" \
-d '{
"registered_date": "2022-04-14T09:21:43.371Z",
"created_by": "AGENT11",
"info": {
"contact": {
"first_name": "Janis",
"last_name": "A. Doe",
"phone_numbers": {
"cell_phone": "9127562309"
},
"email": "jane.doe@email.com",
"mailing_address": {
"street": "9390 Ford Ave",
"city": "Richmond Hill",
"state": "Georgia",
"postal_or_zip": "31324"
}
},
"is_buyer": true,
"buyer": {
"median_price": 0,
"average_price": 250000,
"favorite_city": "Dallas",
"timeline": "4 to 6 weeks"
},
"is_seller": false,
"seller": {
"timeline": "4 to 6 weeks"
}
}
"assigned_agents": {
"primary_agent": {
"id": "AGENT3"
},
"listing_agent": {
"id": "AGENT5"
},
"partner": {
"id": "AGENT7"
}
},
"notes": [
{
"content": "Note Content 1",
"category": "call",
"created_by": "AGENT_MDID0",
"is_pinned": true,
"notified_agents": ["AGENT_MDID2", "AGENT_MDID3"]
},
{
"content": "Note Content 2",
"category": "email",
"created_by": "AGENT_MDID0",
"is_pinned": true,
"notified_agents": ["AGENT_MDID2"]
}
]
}'
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("POST"), "https://public.cincapi.com/v2/site/leads"))
{
request.Headers.TryAddWithoutValidation("Authorization", "Ad3Zjsd4tU209aJd");
request.Content = new StringContent(@"{
""registered_date"" : ""2022-04-14T09:21:43.371Z"",
""created_by"": ""AGENT11"",
""info"" : {
""contact"" : {
""first_name"" : ""Janis"",
""last_name"" : ""A. Doe"",
""phone_numbers"" : {
""cell_phone"" : ""9127562309""
},
""email"" : ""jane.doe@email.com"",
""mailing_address"" : {
""street"" : ""9390 Ford Ave"",
""city"" : ""Richmond Hill"",
""state"" : ""Georgia"",
""postal_or_zip"" : ""31324""
}
},
""is_buyer"" : true,
""buyer"" : {
""median_price"" : 0,
""average_price"" : 250000,
""favorite_city"" : ""Dallas"",
""timeline"" : ""4 to 6 weeks""
},
""is_seller"" : false,
""seller"" : {
""timeline"":""4 to 6 weeks""
}
},
""assigned_agents"" : {
""primary_agent"" : {
""id"" : ""AGENT3""
},
""listing_agent"" : {
""id"" : ""AGENT5""
},
""partner"" : {
""id"" : ""AGENT7""
}
},
""notes"": [
{
""content"": ""Note Content 1"",
""category"": ""call"",
""created_by"": ""AGENT_MDID0"",
""is_pinned"": true,
""notified_agents"": [""AGENT_MDID2"", ""AGENT_MDID3""]
},
{
""content"": ""Note Content 2"",
""category"": ""email"",
""created_by"": ""AGENT_MDID0"",
""is_pinned"": true,
""notified_agents"": [""AGENT_MDID2""]
}
]
}
",
Encoding.UTF8,
"application/json")
}
}
const data = {
registered_date: '2022-04-14T09:21:43.371Z',
created_by: "AGENT11",
info: {
is_buyer: true,
buyer: {
median_price: 0,
average_price: 250000,
favorite_city: "Dallas",
timeline: "4 to 6 weeks"
},
is_seller: true,
seller: {
timeline: "4 to 6 weeks"
},
contact: {
first_name: "Janis",
last_name: "A. Doe",
phone_numbers: {
cell_phone: "9127562309"
},
email: "jane.doe@email.com",
mailing_address: {
street: "9390 Ford Ave",
city: "Richmond Hill",
state: "Georgia",
postal_or_zip: "31324"
}
}
},
assigned_agents: {
primary_agent: {
id: "AGENT3"
},
listing_agent: {
id: "AGENT5"
},
partner: {
id: "AGENT7"
}
},
notes: [
{
content: "Note Content 1",
category: "call",
created_by: "AGENT_MDID0",
is_pinned: true,
notified_agents: ["AGENT_MDID2", "AGENT_MDID3"]
},
{
content: "Note Content 2",
category: "email",
created_by: "AGENT_MDID0",
is_pinned: true,
notified_agents: ["AGENT_MDID2"]
}
]
}
fetch('https://public.cincapi.com/v2/site/leads', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
'Authorization': 'Ad3Zjsd4tU209aJd'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data));
import requests
data = {
"registered_date": "2022-04-14T09:21:43.371Z",
"created_by": "AGENT11",
"is_buyer": True,
"buyer": {
"median_price": 0,
"average_price": 250000,
"favorite_city": "Dallas",
"timeline": "4 to 6 weeks"
},
"is_seller": True,
"seller": {
"timeline": "4 to 6 weeks"
},
"info": {
"contact": {
"first_name": "Janis",
"last_name": "A. Doe",
"phone_numbers": {
"cell_phone": "9127562309"
},
"email": "jane.doe@email.com",
"mailing_address": {
"street": "9390 Ford Ave",
"city": "Richmond Hill",
"state": "Georgia",
"postal_or_zip": "31324"
}
}
},
"assigned_agents": {
"primary_agent": {
"id": "AGENT3"
},
"listing_agent": {
"id": "AGENT5"
},
"partner": {
"id": "AGENT7"
}
},
"notes": [
{
"content": "Note Content 1",
"category": "call",
"created_by": "AGENT_MDID0",
"is_pinned": True,
"notified_agents": ["AGENT_MDID2", "AGENT_MDID3"]
},
{
"content": "Note Content 2",
"category": "email",
"created_by": "AGENT_MDID0",
"is_pinned": True,
"notified_agents": ["AGENT_MDID2"]
}
]
}
headers = {
'Content-Type': 'application/json',
'Authorization': 'Ad3Zjsd4tU209aJd',
}
response = requests.post('https://public.cincapi.com/v2/site/leads', headers=headers, json=data)
Example response
"body": {
{
"id": "LEAD0"
}
},
"header": {
"x-rate-limit-limit" : 100,
"x-rate-limit-remaining" : 91,
"x-rate-limit-reset" : 1677130510
}
Request Body
The request body is a lead object structured as a JSON object.
The field id
will be ignored and not respected when generating a lead.
The only required field when creating a new lead is lead.info.contact.email
.
This value is used to register the lead uniquely on that site.
Response Body
The response will contain the lead object with the newly constructed identifier. This identifier can immediately be used to get the lead. The response code will be an HTTP 201 (Created) if the lead was created and an HTTP 200 (Success) if the lead already exists.
Create Lead Request Body
Field | Type | ||
---|---|---|---|
registered_date |
Date |
The timestamp of when the lead was registered (ISO 8601). | current date |
created_by |
String |
The user that created the lead. | the user from the access token |
assigned_agents |
Object |
Contains the assigned agent information of the lead. | |
assigned_agents.primary_agent.id |
String |
Sets the ID of the assigned agent. | N/A |
assigned_agents.listing_agent.id |
String |
Sets the ID of the assigned listing agent. | N/A |
assigned_agents.partner.id |
String |
Sets the ID of the assigned partner. | N/A |
info |
Object |
Contains the base level information of the lead. | |
info.buyer |
Object |
Contains the buyer information of the lead if they are a buyer. | |
info.buyer.median_price |
Number |
Sets the median price of housing that the lead is looking for. | N/A |
info.buyer.average_price |
Number |
Sets the average price of housing that the lead is looking for. | N/A |
info.buyer.favorite_city |
String |
Sets the lead's favorite city. | N/A |
info.buyer.timeline |
String |
Sets the timeline when the lead wants to buy. | N/A |
info.contact |
Object |
The general contact information of the lead. | |
info.contact.first_name |
String |
Sets the first name of the lead. | N/A |
info.contact.last_name |
String |
Sets the last name of the lead (This may include middle name). | N/A |
info.contact.phone_numbers |
Object |
The registered phone numbers provided by the lead. | |
info.contact.phone_numbers.cell_phone |
String |
Sets the registered primary phone number provided by the lead. | N/A |
info.contact.phone_numbers.home_phone |
String |
Sets the registered home phone number provided by the lead. | N/A |
info.contact.phone_numbers.work_phone |
String |
Sets the registered work phone number provided by the lead. | N/A |
info.contact.email |
String |
Sets the registered email provided by the lead and is the only required field. | N/A |
info.contact.mailing_address |
Object |
The address in order to send mail to the lead. | N/A |
info.contact.mailing_address.street |
String |
Sets the street for the mailing address of the lead. | N/A |
info.contact.mailing_address.city |
String |
Sets the city for the mailing address of the lead. | N/A |
info.contact.mailing_address.state |
String |
Sets the state for the mailing address of the lead. | N/A |
info.contact.mailing_address.postal_or_zip |
String |
Sets the postal/zip code for the mailing address of the lead. | N/A |
info.is_buyer |
Boolean |
Sets whether or not a lead is a buyer. | false |
info.is_seller |
Boolean |
Sets whether or not a lead is a seller. | false |
info.seller |
Object |
Contains the seller information of the lead if they are a seller. | |
info.seller.timeline |
String |
Sets the timeline when the lead wants to sell. | N/A |
info.secondary |
Object |
Contains the secondary contact information of the lead. | |
info.secondary.relation |
String |
Sets the secondary relation to the lead. | N/A |
info.secondary.contact |
Object |
The secondary contact information of the lead. | |
info.secondary.contact.first_name |
String |
Sets the first name of the secondary contact. | N/A |
info.secondary.contact.last_name |
String |
Sets the last name of the secondary contact (This may include middle name). | N/A |
info.secondary.contact.phone_numbers |
Object |
The registered phone numbers provided by the lead for the secondary contact. | |
info.secondary.contact.phone_numbers.cell_phone |
String |
Sets the registered primary phone number for the secondary contact. | N/A |
info.secondary.contact.email |
String |
Sets the email for the secondary contact. | N/A |
info.secondary.contact.mailing_address |
Object |
The address in order to send mail to the lead. | N/A |
info.secondary.contact.mailing_address.street |
String |
Sets the street for the mailing address of the secondary contact. | N/A |
info.secondary.contact.mailing_address.city |
String |
Sets the city for the mailing address of the secondary contact. | N/A |
info.secondary.contact.mailing_address.state |
String |
Sets the state for the mailing address of the secondary contact. | N/A |
info.secondary.contact.mailing_address.postal_or_zip |
String |
Sets the postal/zip code for the mailing address of the secondary contact. | N/A |
info.source |
String |
The source to set the lead as to where it is from. | the client name from the token |
info.status |
String |
The status to change the lead to if it is not already. | N/A |
pipeline |
Object |
Contains the pipeline data of the lead. | |
pipeline.stage |
String |
The name of the lead pipeline stage to move the lead into if it is not already in. | "New Lead" |
Update Lead Request Body
Field | Type | |
---|---|---|
id |
String |
The lead to be updated and is required if email is not provided. |
registered_date |
Date |
The timestamp of when the lead was registered (ISO 8601). |
assigned_agents |
Object |
Contains the assigned agent information of the lead. |
assigned_agents.primary_agent.id |
String |
Sets the ID of the assigned agent. |
assigned_agents.listing_agent.id |
String |
Sets the ID of the assigned listing agent. |
assigned_agents.partner.id |
String |
Sets the ID of the assigned partner. |
info |
Object |
Contains the base level information of the lead. |
info.buyer |
Object |
Contains the buyer information of the lead if they are a buyer. |
info.buyer.median_price |
Number |
Sets the median price of housing that the lead is looking for. |
info.buyer.average_price |
Number |
Sets the average price of housing that the lead is looking for. |
info.buyer.favorite_city |
String |
Sets the lead's favorite city. |
info.buyer.timeline |
String |
Sets the timeline when the lead wants to buy. |
info.contact |
Object |
The general contact information of the lead. |
info.contact.first_name |
String |
Sets the first name of the lead. |
info.contact.last_name |
String |
Sets the last name of the lead (This may include middle name). |
info.contact.phone_numbers |
Object |
The registered phone numbers provided by the lead. |
info.contact.phone_numbers.cell_phone |
String |
Sets the registered primary phone number provided by the lead. |
info.contact.phone_numbers.home_phone |
String |
Sets the registered home phone number provided by the lead. |
info.contact.phone_numbers.work_phone |
String |
Sets the registered work phone number provided by the lead. |
info.contact.email |
String |
Cannot be changed and is required if the id is not provided. |
info.contact.mailing_address |
Object |
The address in order to send mail to the lead. |
info.contact.mailing_address.street |
String |
Sets the street for the mailing address of the lead. |
info.contact.mailing_address.city |
String |
Sets the city for the mailing address of the lead. |
info.contact.mailing_address.state |
String |
Sets the state for the mailing address of the lead. |
info.contact.mailing_address.postal_or_zip |
String |
Sets the postal/zip code for the mailing address of the lead. |
info.is_buyer |
Boolean |
Sets whether or not a lead is a buyer. |
info.is_seller |
Boolean |
Sets whether or not a lead is a seller. |
info.seller |
Object |
Contains the seller information of the lead if they are a seller. |
info.seller.timeline |
String |
Sets the timeline when the lead wants to sell. |
info.secondary |
Object |
Contains the secondary contact information of the lead. |
info.secondary.relation |
String |
Sets the secondary relation to the lead. |
info.secondary.contact |
Object |
The secondary contact information of the lead. |
info.secondary.contact.first_name |
String |
Sets the first name of the secondary contact. |
info.secondary.contact.last_name |
String |
Sets the last name of the secondary contact (This may include middle name). |
info.secondary.contact.phone_numbers |
Object |
The registered phone numbers provided by the lead for the secondary contact. |
info.secondary.contact.phone_numbers.cell_phone |
String |
Sets the registered primary phone number for the secondary contact. |
info.secondary.contact.email |
String |
Sets the email for the secondary contact. |
info.secondary.contact.mailing_address |
Object |
The address in order to send mail to the lead. |
info.secondary.contact.mailing_address.street |
String |
Sets the street for the mailing address of the secondary contact. |
info.secondary.contact.mailing_address.city |
String |
Sets the city for the mailing address of the secondary contact. |
info.secondary.contact.mailing_address.state |
String |
Sets the state for the mailing address of the secondary contact. |
info.secondary.contact.mailing_address.postal_or_zip |
String |
Sets the postal/zip code for the mailing address of the secondary contact. |
info.source |
String |
The source to set the lead as to where it is from. |
info.status |
String |
The status to change the lead to if it is not already. |
pipeline |
Object |
Contains the pipeline data of the lead. |
pipeline.stage |
String |
The name of the lead pipeline stage to move the lead into if it is not already in. |
Create Lead Notes Request Body
Notes will always be created if appended to the body of either the lead update or lead create request. The only required fields are either the lead's email or identifier.
Field | Type | |
---|---|---|
id |
String |
The lead to add notes to and is required if email is not provided. |
info |
Object |
Contains the base level information of the lead. |
info.contact |
Object |
The general contact information of the lead. |
info.contact.email |
String |
Cannot be changed and is required if the id is not provided. |
notes |
Array[Object] |
A list of note objects that will be added to the lead upon creation or after updates. |
notes[#] |
Object |
An individual lead note object. |
notes[#].content |
String |
The string content for the note. Limit of 5,000 characters before trimming occurs. |
notes[#].category |
String |
The note category. |
notes[#].created_by |
String |
An optional field for the agent that placed the note on the lead. |
notes[#].is_pinned |
Boolean |
Pins the note to the top of the lead activities. |
notes[#].notified_agents |
Array[String] |
An optional field of an array of unique identifiers of agents that you want to be notified within the CINC platform that this note was created. |
POST site/leads/{lead_id}
version 2.0
This endpoint can be used to update the current specified lead's data.
The call is currently a synchronous request.
For more information, read the section on rate limits.
The required scope to access this endpoint is api:update
.
Example request: GET site/leads/{lead_id}
curl -X POST -G "https://public.cincapi.com/v2/site/leads/LEAD0" \
-H "Content-Type: application/json" \
-H "Authorization: Ad3Zjsd4tU209aJd" \
-d '{
"registered_date": "2022-04-14T09:21:43.371Z",
"created_by": "AGENT11",
"info": {
"contact": {
"first_name": "Janis",
"last_name": "A. Doe",
"phone_numbers": {
"cell_phone": "9127562309"
},
"email": "jane.doe@email.com",
"mailing_address": {
"street": "9390 Ford Ave",
"city": "Richmond Hill",
"state": "Georgia",
"postal_or_zip": "31324"
}
},
"is_buyer": true,
"buyer": {
"median_price": 0,
"average_price": 250000,
"favorite_city": "Dallas",
"timeline": "4 to 6 weeks"
},
"is_seller": false,
"seller": {
"timeline": "4 to 6 weeks"
}
}
}'
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("POST"), "https://public.cincapi.com/v2/site/leads/LEAD0"))
{
request.Headers.TryAddWithoutValidation("Authorization", "Ad3Zjsd4tU209aJd");
request.Content = new StringContent(@"{
""registered_date"" : ""2022-04-14T09:21:43.371Z"",
""created_by"": ""AGENT11"",
""info"" : {
""contact"" : {
""first_name"" : ""Janis"",
""last_name"" : ""A. Doe"",
""phone_numbers"" : {
""cell_phone"" : ""9127562309""
},
""email"" : ""jane.doe@email.com"",
""mailing_address"" : {
""street"" : ""9390 Ford Ave"",
""city"" : ""Richmond Hill"",
""state"" : ""Georgia"",
""postal_or_zip"" : ""31324""
}
},
""is_buyer"" : true,
""buyer"" : {
""median_price"" : 0,
""average_price"" : 250000,
""favorite_city"" : ""Dallas"",
""timeline"" : ""4 to 6 weeks""
},
""is_seller"" : false,
""seller"" : {
""timeline"":""4 to 6 weeks""
}
}
}
",
Encoding.UTF8,
"application/json")
}
}
const data = {
registered_date: '2022-04-14T09:21:43.371Z',
created_by: "AGENT11",
info: {
is_buyer: true,
buyer: {
median_price: 0,
average_price: 250000,
favorite_city: "Dallas",
timeline: "4 to 6 weeks"
},
is_seller: true,
seller: {
timeline: "4 to 6 weeks"
},
contact: {
first_name: "Janis",
last_name: "A. Doe",
phone_numbers: {
cell_phone: "9127562309"
},
email: "jane.doe@email.com",
mailing_address: {
street: "9390 Ford Ave",
city: "Richmond Hill",
state: "Georgia",
postal_or_zip: "31324"
}
}
}
}
fetch('https://public.cincapi.com/v2/site/leads/LEAD0', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
'Authorization': 'Ad3Zjsd4tU209aJd'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data));
import requests
data = {
"registered_date": "2022-04-14T09:21:43.371Z",
"created_by": "AGENT11",
"is_buyer": True,
"buyer": {
"median_price": 0,
"average_price": 250000,
"favorite_city": "Dallas",
"timeline": "4 to 6 weeks"
},
"is_seller": True,
"seller": {
"timeline": "4 to 6 weeks"
},
"info": {
"contact": {
"first_name": "Janis",
"last_name": "A. Doe",
"phone_numbers": {
"cell_phone": "9127562309"
},
"email": "jane.doe@email.com",
"mailing_address": {
"street": "9390 Ford Ave",
"city": "Richmond Hill",
"state": "Georgia",
"postal_or_zip": "31324"
}
}
}
}
headers = {
'Content-Type': 'application/json',
'Authorization': 'Ad3Zjsd4tU209aJd',
}
response = requests.post('https://public.cincapi.com/v2/site/leads/LEAD0', headers=headers, json=data)
Example response
"body": {
{
"id": "LEAD0"
}
},
"header": {
"x-rate-limit-limit" : 100,
"x-rate-limit-remaining" : 91,
"x-rate-limit-reset" : 1677130510
}
Request Body
The request body is a lead object structured as a JSON object.
The field email
is required to uniquely identify the lead on that site and cannot be changed.
Response Body
The response code will be a HTTP 200 (Success) if the lead is updated successfully.
Update Lead Request Body
Field | Type | |
---|---|---|
id |
String |
The lead to be updated and is required if email is not provided. |
registered_date |
Date |
The timestamp of when the lead was registered (ISO 8601). |
assigned_agents |
Object |
Contains the assigned agent information of the lead. |
assigned_agents.primary_agent.id |
String |
Sets the ID of the assigned agent. |
assigned_agents.listing_agent.id |
String |
Sets the ID of the assigned listing agent. |
assigned_agents.partner.id |
String |
Sets the ID of the assigned partner. |
info |
Object |
Contains the base level information of the lead. |
info.buyer |
Object |
Contains the buyer information of the lead if they are a buyer. |
info.buyer.median_price |
Number |
Sets the median price of housing that the lead is looking for. |
info.buyer.average_price |
Number |
Sets the average price of housing that the lead is looking for. |
info.buyer.favorite_city |
String |
Sets the lead's favorite city. |
info.buyer.timeline |
String |
Sets the timeline when the lead wants to buy. |
info.contact |
Object |
The general contact information of the lead. |
info.contact.first_name |
String |
Sets the first name of the lead. |
info.contact.last_name |
String |
Sets the last name of the lead (This may include middle name). |
info.contact.phone_numbers |
Object |
The registered phone numbers provided by the lead. |
info.contact.phone_numbers.cell_phone |
String |
Sets the registered primary phone number provided by the lead. |
info.contact.phone_numbers.home_phone |
String |
Sets the registered home phone number provided by the lead. |
info.contact.phone_numbers.work_phone |
String |
Sets the registered work phone number provided by the lead. |
info.contact.email |
String |
Cannot be changed. |
info.contact.mailing_address |
Object |
Sets the full mailing address of the lead. |
info.contact.mailing_address.street |
String |
Sets the street for the mailing address of the lead. |
info.contact.mailing_address.city |
String |
Sets the city for the mailing address of the lead. |
info.contact.mailing_address.state |
String |
Sets the state for the mailing address of the lead. |
info.contact.mailing_address.postal_or_zip |
String |
Sets the postal/zip code for the mailing address of the lead. |
info.is_buyer |
Boolean |
Sets whether or not a lead is a buyer. |
info.is_seller |
Boolean |
Sets whether or not a lead is a seller. |
info.seller |
Object |
Contains the seller information of the lead if they are a seller. |
info.seller.timeline |
String |
Sets the timeline when the lead wants to sell. |
info.secondary |
Object |
Contains the secondary contact information of the lead. |
info.secondary.relation |
String |
Sets the secondary relation to the lead. |
info.secondary.contact |
Object |
The secondary contact information of the lead. |
info.secondary.contact.first_name |
String |
Sets the first name of the secondary contact. |
info.secondary.contact.last_name |
String |
Sets the last name of the secondary contact (This may include middle name). |
info.secondary.contact.phone_numbers |
Object |
The registered phone numbers provided by the lead for the secondary contact. |
info.secondary.contact.phone_numbers.cell_phone |
String |
Sets the registered primary phone number for the secondary contact. |
info.secondary.contact.email |
String |
Sets the email for the secondary contact. |
info.secondary.contact.mailing_address |
Object |
Sets the full mailing address of the secondary contact. |
info.secondary.contact.mailing_address.street |
String |
Sets the street for the mailing address of the secondary contact. |
info.secondary.contact.mailing_address.city |
String |
Sets the city for the mailing address of the secondary contact. |
info.secondary.contact.mailing_address.state |
String |
Sets the state for the mailing address of the secondary contact. |
info.secondary.contact.mailing_address.postal_or_zip |
String |
Sets the postal/zip code for the mailing address of the secondary contact. |
info.source |
String |
The source to set the lead as to where it is from. |
info.status |
String |
The status to change the lead to if it is not already. |
pipeline |
Object |
Contains the pipeline data of the lead. |
pipeline.stage |
String |
The name of the lead pipeline stage to move the lead into if it is not already in. |
Create Lead Notes Request Body
Notes will always be created if appended to the body of the lead update request.
Field | Type | |
---|---|---|
id |
String |
The lead to add notes to and is required if email is not provided. |
info |
Object |
Contains the base level information of the lead. |
info.contact |
Object |
The general contact information of the lead. |
info.contact.email |
String |
Cannot be changed and is required if the id is not provided. |
notes |
Array[Object] |
A list of note objects that will be added to the lead upon creation or after updates. |
notes[#] |
Object |
An individual lead note object. |
notes[#].content |
String |
The string content for the note. Limit of 5,000 characters before trimming occurs. |
notes[#].category |
String |
The note category. |
notes[#].created_by |
String |
An optional field for the agent that placed the note on the lead. |
notes[#].is_pinned |
Boolean |
Pins the note to the top of the lead activities. |
notes[#].notified_agents |
Array[String] |
An optional field of an array of unique identifiers of agents that you want to be notified within the CINC platform that this note was created. |
Lead Note Endpoints
GET site/leads/{lead_id}/notes
version 2.1
This endpoint gets all the notes from a specified lead ignoring the content of the note to reduce the size.
For more information, read the section on rate limits.
The required scope to access this endpoint is api:read
.
Example request: GET site/leads/{lead_id}/notes
curl -X GET -G "https://public.cincapi.com/v2/site/leads/LEAD0/notes" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Authorization: Ad3Zjsd4tU209aJd"
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("GET"), "https://public.cincapi.com/v2/site/leads/LEAD0/notes"))
{
request.Headers.TryAddWithoutValidation("Authorization", "Ad3Zjsd4tU209aJd");
var response = await httpClient.SendAsync(request);
}
}
fetch('https://public.cincapi.com/v2/site/leads/LEAD0/notes', {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
'Authorization': 'Ad3Zjsd4tU209aJd'
}
})
.then(response => response.json())
.then(data => console.log(data));
import requests
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Ad3Zjsd4tU209aJd',
}
response = requests.get('https://public.cincapi.com/v2/site/leads/LEAD0/notes', headers=headers)
Example response
"body": {
"paging":{
"limit":500,
"count":5,
"offset":0
},
"notes":[
{
"id":"LN0001",
"category":"call",
"created_by":"agentid",
"created_date":"2023-04-14 19:44:14.576Z",
"is_pinned":true
},
{
"id":"LN0002",
"category":"info",
"created_by":"agentid",
"created_date":"2023-04-14 19:44:14.576Z",
"is_pinned":true
},
{
"id":"LN0003",
"category":"general",
"created_by":"agentid",
"created_date":"2023-04-14 19:44:14.576Z",
"is_pinned":true
},
{
"id":"LN0004",
"category":"call",
"created_by":"agentid",
"created_date":"2023-04-14 19:44:14.576Z",
"is_pinned":true
},
{
"id":"LN0005",
"category":"email",
"created_by":"agentid",
"created_date":"2023-04-14 19:44:14.576Z",
"is_pinned":true
}
]
},
"header": {
"x-rate-limit-limit" : 100,
"x-rate-limit-remaining" : 91,
"x-rate-limit-reset" : 1653051600
}
Path Parameters
Name | Type | Description |
---|---|---|
lead_id |
String |
Required Unique lead identifier. |
GET site/leads/notes/{note_id}
version 2.1
This endpoint gets the specified note's data.
For more information, read the section on rate limits.
The required scope to access this endpoint is api:read
.
This is the only endpoint where the [content] field is available to view.
Example request: GET site/leads/notes/{note_id}
curl -X GET -G "https://public.cincapi.com/v2/site/leads/notes/LN0001" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Authorization: Ad3Zjsd4tU209aJd"
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("GET"), "https://public.cincapi.com/v2/site/leads/notes/LN0001"))
{
request.Headers.TryAddWithoutValidation("Authorization", "Ad3Zjsd4tU209aJd");
var response = await httpClient.SendAsync(request);
}
}
fetch('https://public.cincapi.com/v2/site/leads/notes/LN0001', {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
'Authorization': 'Ad3Zjsd4tU209aJd'
}
})
.then(response => response.json())
.then(data => console.log(data));
import requests
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Ad3Zjsd4tU209aJd',
}
response = requests.get('https://public.cincapi.com/v2/site/leads/notes/LN0001', headers=headers)
Example response
"body": {
"note":{
"id":"LN0001",
"content":"Nipugima rohubo uhebece revme acodeucu pecpuehi viok ugivepsuw ime ucho ja gefa kafhega tiwe. Zitatuwo dawvumka onzesda zuwek fuw ji hegmor med ohi lu tachobev lehlu fohiki no raduvu ta mulgot gofowo. Vutehnow re corhezte hepba zokozhih tot pujvuc badraiko rif pid vunujku onsiv otu subuka pa.",
"category":"call",
"created_by": "agentid",
"created_date":"2023-04-14 19:44:14.286Z",
"is_pinned":true
}
},
"header": {
"x-rate-limit-limit" : 100,
"x-rate-limit-remaining" : 91,
"x-rate-limit-reset" : 1653051600
}
Path Parameters
Name | Type | Description |
---|---|---|
note_id |
String |
Required Unique note identifier. |
Lead Label Endpoints
GET /site/leads/labels
version 2.2
This endpoint gets all the labels from the site in the access token.
The required scope to access this endpoint is api:read
.
Example request: GET /site/leads/labels
curl -X GET -G "https://public.cincapi.com/v2/site/leads/labels" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Authorization: Ad3Zjsd4tU209aJd"
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("GET"), "https://public.cincapi.com/v2/site/leads/labels"))
{
request.Headers.TryAddWithoutValidation("Authorization", "Ad3Zjsd4tU209aJd");
var response = await httpClient.SendAsync(request);
}
}
fetch('https://public.cincapi.com/v2/site/leads/labels', {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
'Authorization': 'Ad3Zjsd4tU209aJd'
}
})
.then(response => response.json())
.then(data => console.log(data));
import requests
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Ad3Zjsd4tU209aJd',
}
response = requests.get('https://public.cincapi.com/v2/site/leads/labels', headers=headers)
Example response
"body": {
"paging":{
"limit":500,
"count":5,
"offset":0
},
"labels":[
{
"id":"LDID0",
"created_date":"2023-06-01T10:02:12.297Z",
"updated_date":"2023-06-11T14:19:16.000Z",
"name":"Chimichanga",
"color":"#0B5C7A",
"created_by":"AGENT_MDID0"
},
{
"id":"LDID1",
"created_date":"2023-06-01T10:02:12.297Z",
"updated_date":"2023-06-11T14:19:16.000Z",
"name":"Guacamole",
"color":"#0B5C7A",
"created_by":"AGENT_MDID0"
},
{
"id":"LDID2",
"created_date":"2023-06-01T10:02:12.297Z",
"updated_date":"2023-06-11T14:19:16.000Z",
"name":"Horchata",
"color":"#0B5C7A",
"created_by":"AGENT_MDID0"
},
{
"id":"LDID3",
"created_date":"2023-06-01T10:02:12.297Z",
"updated_date":"2023-06-11T14:19:16.000Z",
"name":"Churros",
"color":"#0B5C7A",
"created_by":"AGENT_MDID0"
},
{
"id":"LDID4",
"created_date":"2023-06-01T10:02:12.323Z",
"updated_date":"2023-06-11T14:19:16.000Z",
"name":"Chicken Biryani",
"color":"#0B5C7A",
"created_by":"AGENT_MDID0"
}
]
},
"header": {
"x-rate-limit-limit" : 100,
"x-rate-limit-remaining" : 91,
"x-rate-limit-reset" : 1653051600
}
GET site/leads/labels/{label_id}
version 2.2
This endpoint gets the specified label's data.
For more information, read the section on rate limits.
The required scope to access this endpoint is api:read
.
Example request: GET site/leads/labels/{label_id}
curl -X GET -G "https://public.cincapi.com/v2/site/leads/labels/LDID0" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Authorization: Ad3Zjsd4tU209aJd"
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("GET"), "https://public.cincapi.com/v2/site/leads/labels/LDID0"))
{
request.Headers.TryAddWithoutValidation("Authorization", "Ad3Zjsd4tU209aJd");
var response = await httpClient.SendAsync(request);
}
}
fetch('https://public.cincapi.com/v2/site/leads/labels/LDID0', {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
'Authorization': 'Ad3Zjsd4tU209aJd'
}
})
.then(response => response.json())
.then(data => console.log(data));
import requests
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Ad3Zjsd4tU209aJd',
}
response = requests.get('https://public.cincapi.com/v2/site/leads/labels/LDID0', headers=headers)
Example response
"body": {
"label": {
"id" :"LDID0",
"created_date" :"2023-06-01T10:02:12.297Z",
"updated_date" :"2023-06-21T10:02:12.297Z",
"name" :"Chimichanga",
"color" :"#0B5C7A",
"created_by" :"AGENT_MDID0"
}
},
"header": {
"x-rate-limit-limit" : 100,
"x-rate-limit-remaining" : 91,
"x-rate-limit-reset" : 1653051600
}
Path Parameters
Name | Type | Description |
---|---|---|
label_id |
String |
Required Unique label identifier. |
POST /site/leads/labels
version 2.2
This endpoint is used to create a new label.
The required scope to access this endpoint is api:create
.
Example request: POST /site/leads/labels
curl -X POST -G "https://public.cincapi.com/v2/site/leads/labels" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Authorization: Ad3Zjsd4tU209aJd" \
-d '{
"name": "VALUE",
"color": "#DB0A5B"
}
'
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("POST"), "https://public.cincapi.com/v2/site/leads/labels"))
{
request.Headers.TryAddWithoutValidation("Authorization", "Ad3Zjsd4tU209aJd");
request.Content = new StringContent(@"
{
""name"": ""VALUE"",
""color"": ""#DB0A5B""
}
",
Encoding.UTF8,
"application/json")
var response = await httpClient.SendAsync(request);
}
}
const data = {
name: "VALUE",
color: "#DB0A5B"
}
fetch('https://public.cincapi.com/v2/site/leads/labels', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
'Authorization': 'Ad3Zjsd4tU209aJd'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data));
import requests
data = {
"name": "VALUE",
"color": "#DB0A5B"
}
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Ad3Zjsd4tU209aJd',
}
response = requests.POST('https://public.cincapi.com/v2/site/leads/labels', headers=headers, json=data)
Example response
"body": {
{
"id": "LDID0"
}
},
"header": {
"x-rate-limit-limit" : 100,
"x-rate-limit-remaining" : 91,
"x-rate-limit-reset" : 1677130510
}
Query Parameters
Parameter | Type | Description |
---|---|---|
is_name_distinct |
Boolean |
An optional flag that determines how the label name is handled. If the flag is set to true , the system will first check if a label with the given name already exists. If it does, the newest existing label will be returned. If it does not, a new label will be created. If the flag is set to false , a new label will always be created regardless of whether a label with the same name already exists. The default is false . |
Request Body
The request body is a label object structured as a JSON object.
The field name
is required for creating a new label.
Response Body
The response will contain the unique identifier of the new label. The response code will be an HTTP 201 (Created) if the label was created successfully.
Request Body
Field | Type | ||
---|---|---|---|
name |
String |
A required field that will be the display name of the label and is not unique. | N/A |
color |
String |
An optional field that must be a valid lead label hex color. | N/A |
POST /site/leads/{lead_id}/labels/apply
version 2.2
This endpoint is used to apply labels to a specified lead.
The required scope to access this endpoint is api:update
.
Example request: POST /site/leads/{lead_id}/labels/apply
curl -X POST -G "https://public.cincapi.com/v2/site/leads/LEAD_MDID0/labels/apply" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Authorization: Ad3Zjsd4tU209aJd" \
-d '{
"labels": [
{
"id":"LDID0"
},
{
"id":"LDID1"
},
{
"id":"LDID2"
}
]
}
'
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("POST"), "https://public.cincapi.com/v2/site/leads/LEAD_MDID0/labels/apply"))
{
request.Headers.TryAddWithoutValidation("Authorization", "Ad3Zjsd4tU209aJd");
request.Content = new StringContent(@"
{
""labels"": [
{
""id"":""LDID0""
},
{
""id"":""LDID1""
},
{
""id"":""LDID2""
}
]
}
",
Encoding.UTF8,
"application/json")
var response = await httpClient.SendAsync(request);
}
}
const data = {
labels: [
{
id:"LDID0"
},
{
id:"LDID1"
},
{
id:"LDID2"
}
]
}
fetch('https://public.cincapi.com/v2/site/leads/LEAD_MDID0/labels/apply', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
'Authorization': 'Ad3Zjsd4tU209aJd'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data));
import requests
data = {
"labels": [
{
"id":"LDID0"
},
{
"id":"LDID1"
},
{
"id":"LDID2"
}
]
}
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Ad3Zjsd4tU209aJd',
}
response = requests.POST('https://public.cincapi.com/v2/site/leads/LEAD_MDID0/labels/apply', headers=headers, json=data)
Request Body
The request body is a list of label objects structured as a JSON object.
The field id
is required and used for applying the lead label to a lead.
Response Body The response code will be an HTTP 200 (OK) if the labels were applied successfully. Otherwise, the error message will be shown with a proper HTTP status code.
Request Body
Field | Type | ||
---|---|---|---|
labels |
Array[Object] |
A list of label objects with label ids to be applied to the lead. | |
labels[#].id |
String |
The unique identifier for the lead label. |
Example response
"body": {
"message": "All given labels have been applied on leadid LEAD_MDID0"
}
Path Parameters
Name | Type | Description |
---|---|---|
lead_id |
String |
Required Unique lead identifier. |
POST /site/leads/{lead_id}/labels/remove
version 2.2
This endpoint is used to remove labels from a specified lead.
The required scope to access this endpoint is api:update
.
Example request: POST /site/leads/{lead_id}/labels/remove
curl -X POST -G "https://public.cincapi.com/v2/site/leads/LEAD_MDID0/labels/remove" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Authorization: Ad3Zjsd4tU209aJd" \
-d '{
"labels": [
{
"id":"LDID0"
},
{
"id":"LDID1"
},
{
"id":"LDID2"
}
]
}
'
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("POST"), "https://public.cincapi.com/v2/site/leads/LEAD_MDID0/labels/remove"))
{
request.Headers.TryAddWithoutValidation("Authorization", "Ad3Zjsd4tU209aJd");
request.Content = new StringContent(@"
{
""labels"": [
{
""id"":""LDID0""
},
{
""id"":""LDID1""
},
{
""id"":""LDID2""
}
]
}
",
Encoding.UTF8,
"application/json")
var response = await httpClient.SendAsync(request);
}
}
const data = {
labels: [
{
id:"LDID0"
},
{
id:"LDID1"
},
{
id:"LDID2"
}
]
}
fetch('https://public.cincapi.com/v2/site/leads/LEAD_MDID0/labels/remove', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
'Authorization': 'Ad3Zjsd4tU209aJd'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data));
import requests
data = {
"labels": [
{
"id":"LDID0"
},
{
"id":"LDID1"
},
{
"id":"LDID2"
}
]
}
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Ad3Zjsd4tU209aJd',
}
response = requests.POST('https://public.cincapi.com/v2/site/leads/LEAD_MDID0/labels/remove', headers=headers, json=data)
Request Body
The request body is a list of label objects structured as a JSON object.
The field id
is required and used for removing the lead label from the lead.
Response Body {#webhook-post-request-body} The response code will be an HTTP 200 (OK) if the labels were removed successfully. Otherwise, the error message will be shown with a proper HTTP status code.
Request Body
Field | Type | ||
---|---|---|---|
labels |
Array[Object] |
A list of label objects with label ids to be removed from the lead. | |
labels[#].id |
String |
The unique identifier for the lead label. |
Example response
"body": {
"message": "All given labels have been removed on leadid LEAD_MDID0"
}
Path Parameters
Name | Type | Description |
---|---|---|
lead_id |
String |
Required Unique lead identifier. |
DELETE /site/leads/labels/{label_id}
version 2.2
This endpoint status deletes a label. It will no longer be visible inside the CINC crm dashboard user interface.
The required scope to access this endpoint is api:delete
.
Example request: DELETE /site/leads/labels
curl -X DELETE -G "https://public.cincapi.com/v2/site/leads/labels/LDID0" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Authorization: Ad3Zjsd4tU209aJd" \
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("DELETE"), "https://public.cincapi.com/v2/site/leads/labels/LDID0"))
{
request.Headers.TryAddWithoutValidation("Authorization", "Ad3Zjsd4tU209aJd");
var response = await httpClient.SendAsync(request);
}
}
fetch('https://public.cincapi.com/v2/site/leads/labels/LDID0', {
method: 'DELETE',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
'Authorization': 'Ad3Zjsd4tU209aJd'
}
})
.then(response => response.json())
import requests
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Ad3Zjsd4tU209aJd',
}
response = requests.DELETE('https://public.cincapi.com/v2/site/leads/labels', headers=headers)
Response Body
The response code will be an HTTP 200 (OK) if the label was deleted successfully. Otherwise, the error message will be shown with a proper HTTP status code.
Example response
"body": {
"message": "Deletion of labelID LDID0 is successful"
}
Path Parameters
Name | Type | Description |
---|---|---|
label_id |
String |
Required Unique label identifier. |
Webhook Endpoints
GET site/webhook
version 2.1
This endpoint gets the registered webhook information for the site. If the request is successful, the response body will include the url, headers' values, event filters, and whether or not the webhook is enabled.
Example request: GET site/webhook
curl -X GET -G "https://public.cincapi.com/v2/site/webhook" \
-H "Authorization: Ad3Zjsd4tU209aJd"
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("GET"), "https://public.cincapi.com/v2/site/webhook"))
{
request.Headers.TryAddWithoutValidation("Authorization", "Ad3Zjsd4tU209aJd");
var response = await httpClient.SendAsync(request);
}
}
fetch('https://public.cincapi.com/v2/site/webhook', {
headers: {
'Authorization': 'Ad3Zjsd4tU209aJd'
}
})
.then(response => response.json())
.then(data => console.log(data));
import requests
headers = {
'Authorization': 'Ad3Zjsd4tU209aJd',
}
response = requests.get('https://public.cincapi.com/v2/site/webhook', headers=headers)
Example response
"body": {
"event_filters":[
"lead.created",
"lead.info.updated",
"agent.created"
],
"headers":{
"header_name1":"header_value1",
"header_name2":"header_value2"
},
"is_enabled":true
}
POST site/webhook
version 2.1
This endpoint can be used as upsert operation given the request body. If the webhook already existed, it will be updated; otherwise, a new webhook will be created. Users can specify headers they want to include when sending events and events to receive through the webhook.
Example request: POST site/webhook
curl -X POST -G "https://public.cincapi.com/v2/site/webhook" \
-H "Content-Type: application/json" \
-H "Authorization: Ad3Zjsd4tU209aJd" \
-d '{
"url": "test.com",
"event_filters":[
"lead.label.applied",
"lead.label.removed"
],
"headers":{
"XX_XX":"somevalue",
"YY_YY":"anothervalue"
}
}'
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("POST"), "https://public.cincapi.com/v2/site/webhook"))
{
request.Headers.TryAddWithoutValidation("Authorization", "Ad3Zjsd4tU209aJd");
request.Content = new StringContent(@"
{
""url"": ""test.com"",
""event_filters"":[
""lead.label.applied"",
""lead.label.removed""
],
""headers"":{
""XX_XX"":""somevalue"",
""YY_YY"":""anothervalue""
}
}
",
Encoding.UTF8,
"application/json")
}
}
const data = {
url: "test.com",
event_filters:[
"lead.label.applied",
"lead.label.removed"
],
headers:{
XX_XX:"somevalue",
YY_YY:"anothervalue"
}
}
fetch('https://public.cincapi.com/v2/site/webhook', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
'Authorization': 'Ad3Zjsd4tU209aJd'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(data => console.log(data));
import requests
data = {
"url": "test.com",
"event_filters":[
"lead.label.applied",
"lead.label.removed"
],
"headers":{
"XX_XX":"somevalue",
"YY_YY":"anothervalue"
}
}
headers = {
'Content-Type': 'application/json',
'Authorization': 'Ad3Zjsd4tU209aJd',
}
response = requests.post('https://public.cincapi.com/v2/site/webhook', headers=headers, json=data)
Example response
"body": {
"message": "Updated webhook successfully."
}
Request Body
Field | Type | ||
---|---|---|---|
url |
String |
The webhook url to send events to. | N/A |
event_filters |
Array[String] |
A list of filters to check. | N/A |
headers |
Object |
All header values to be included when sending out webhook events. | N/A |
is_enabled |
Boolean |
Whether or not the webhook will be enabled. | true |
Response Body
The response message will simply a message let users know if the upsert operation is successful or not.
POST site/webhook/enable
version 2.1
In order to start receiving events after disabling, use an empty POST request to enable the registered webhook.
Example request: POST site/webhook/enable
curl -X POST -G "https://public.cincapi.com/v2/site/webhook/enable" \
-H "Authorization: Ad3Zjsd4tU209aJd"
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("POST"), "https://public.cincapi.com/v2/site/webhook/enable"))
{
request.Headers.TryAddWithoutValidation("Authorization", "Ad3Zjsd4tU209aJd");
var response = await httpClient.SendAsync(request);
}
}
fetch('https://public.cincapi.com/v2/site/webhook/enable', {
method: 'POST',
headers: {
'Authorization': 'Ad3Zjsd4tU209aJd'
}
})
.then(response => response.json())
.then(data => console.log(data));
import requests
headers = {
'Authorization': 'Ad3Zjsd4tU209aJd',
}
response = requests.post('https://public.cincapi.com/v2/site/webhook/enable', headers=headers)
Example response
"body": {
"message": "Enabled webhook successfully."
}
POST site/webhook/disable
version 2.1
In order to stop receiving events, use an empty POST request to disable the registered webhook.
Example request: POST site/webhook/disable
curl -X POST -G "https://public.cincapi.com/v2/site/webhook/disable" \
-H "Authorization: Ad3Zjsd4tU209aJd"
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("POST"), "https://public.cincapi.com/v2/site/webhook/disable"))
{
request.Headers.TryAddWithoutValidation("Authorization", "Ad3Zjsd4tU209aJd");
var response = await httpClient.SendAsync(request);
}
}
fetch('https://public.cincapi.com/v2/site/webhook/disable', {
method: 'POST',
headers: {
'Authorization': 'Ad3Zjsd4tU209aJd'
}
})
.then(response => response.json())
.then(data => console.log(data));
import requests
headers = {
'Authorization': 'Ad3Zjsd4tU209aJd',
}
response = requests.post('https://public.cincapi.com/v2/site/webhook/disable', headers=headers)
Example response
"body": {
"message": "Disabled webhook successfully."
}
Pagination
All successful API responses upon paginated requests will include the field paging
.
The query parameters that were present in the request, will also be included under the paging
field unless overridden by the call.
The following table describes the common attributes associated with pagination.
Name | Type | Description |
---|---|---|
offset |
Number |
The number of rows to skip before starting to return rows from the query. |
limit |
Number |
Either the max limit allowed by the endpoint or the limit provided in the query parameters. |
next |
String |
A hash code that represents the starting point for the next page. |
count |
Number |
The amount of resources returned by the endpoint. The number has a ceiling up to the max limit. |
Rate Limits
Every response will include the current available rate for that endpoint in the header.
Header Name | Description |
---|---|
x-rate-limit-limit |
The maximum number of requests you are permitted to make per 20 seconds. |
x-rate-limit-remaining |
The number of requests remaining in the current rate limit window. |
x-rate-limit-reset |
The time at which the current rate limit window resets in UTC epoch milliseconds. |
Endpoint Limits
The following table lists the starting rate limits for each endpoint per CINC site.
Endpoint | Action | Limit per 20 Seconds |
---|---|---|
site/webhook |
GET | 256 |
site/webhook |
POST | 256 |
site/webhook/enable |
POST | 256 |
site/webhook/disable |
POST | 256 |
site/agents |
GET | 256 |
site/agents |
GET | 256 |
site/agents/{agent_id} |
GET | 256 |
site/leads |
GET | 256 |
site/leads |
POST | 256 |
site/leads/{lead_id} |
GET | 256 |
site/leads/{lead_id} |
POST | 256 |
site/leads/{lead_id}/notes |
GET | 256 |
site/leads/notes/{note_id} |
GET | 256 |
site/leads/labels |
GET | 256 |
site/leads/labels/{label_id} |
GET | 256 |
site/leads/labels |
POST | 256 |
site/leads/{lead_id}/labels/apply |
POST | 256 |
site/leads/{lead_id}/labels/remove |
POST | 256 |
site/leads/labels/{label_id} |
DELETE | 256 |
site/me |
GET | 256 |
Too Many Requests
The HTTP error 429 (Too Many Requests) will be returned if the your request limits have been exhausted. It is standard and good practice to always properly handle and respond to this status code. Even if the returned values are indicating that some bandwidth in a previous request remained. This ensures that your requests are not ever lost. In some cases, this response may occur due to a high volume of requests hitting the API and the rates are temporarily lowered to investigate root cause.
Examples
The following examples demonstrate how to use the CINC API.
Authentication
CINC API utilizes the OAuth 2.0 protocol for authentication and authorization. To use the API, you must first obtain an access token. For more information, see Authentication.
Creating and Updating Leads
CINC API provides an "upsert" operation for managing lead creation and updates. For more information, see Upsert a Lead.