NAV
cURL C# JavaScript Python

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.

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"
    },
    "subscriptions": {
        "email": {
            "can_receive_emails": true
        },
        "text": {
            "can_receive_texts": true
        }
    },
    "roles": ["broker", "team_lead"],
    "company": {
        "name": "My company"
    }
}

The agent payload 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.
subscriptions Object Contains the agent subscriptions.
roles Array[String] Contains a list of roles representing individual permissions of the agent.
company Object Contains the agent company information 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.
url String The URL to the agent's advanced settings CRM page.

Agent Contact Info Structure

Example object: Agent Contact Info Structure

"contact": {
    "first_name": "Janis",
    "last_name": "A. Doe",
    "phone_numbers": {
        "cell_phone": "0000000000",
        "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:

Agent Company Structure

Example object: Agent Company Structure

"company": {
    "name": "My company"
}

The company payload is structured in the following manner:

Field Type Description
name String The name of the agent's company.

Agent Subscriptions Structure

Example object: Agent Subscriptions Structure

"subscriptions": {
    "email": {
        "can_receive_emails": true
    },
    "text": {
        "can_receive_texts": false
    }
}

The subscriptions payload is structured in the following manner:

Field Type Description
email Object The email subscriptions of the agent.
email.can_receive_emails Boolean Whether an agent is currently subscribed to receive emails from the CINC systems.
text Object The text subscriptions of the agent.
text.can_receive_texts Boolean Whether an agent is currently subscribed to receive text messages from the CINC systems.

Communication

Example object: Communication

{
    "communication": {
      "id": "TMS01",
      "type": "text",
      "origin": {
        "is_ai": true
      },
      "content": "Hey Jake, Alex here, your AI assistant for real estate. What type of house are you looking for?",
      "created_date": "2024-09-18T15:36:07.467Z",
      "from": {
        "phone_number": "6789999999",
        "id": "AGENT01"
      },
      "to": {
        "phone_number": "5555555555",
        "id": "LEAD01"
      }
    }
}

The communications payload is structured in the following manner:

Field Type Description
id String The unique identifier of the communication.
type String The type of communication, in this case, "text".
origin Object Contains information about the origin of the communication.
origin.is_ai Boolean Indicates if the communication is generated by AI or is a reply from an AI communication.
content String The content of the communication.
created_date String The timestamp of when the communication was created (ISO 8601).
from Object Contains information about the sender.
from.phone_number String The phone number of the sender participant.
from.id String The unique identifier of the sender participant.
to Object Contains information about the recipient.
to.phone_number String The phone number of the recipient participant.
to.id String The unique identifier of the recipient participant.

Leads

Example object: Leads

"lead": {
    "id": "LEAD0",
    "uuid": "ab6ff0c5-9e1b-40b6-91db-76544a29101a",
    "username": "jane.doe@email.com",
    "registered_date": "2022-04-14T09:21:43.289Z",
    "timezone": "America/New_York",
    "logged_in_date": "2022-04-14T09:21:43.289Z",
    "origin": {
        "referrer": {
            "name": "Site"
        },
        "classification": {
            "is_cinc_lead": true
        }
    },
    "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_pre_qualified": true
        },
        "is_seller": true,
        "seller": {
            "timeline":"4 to 6 weeks",
            "properties": [
                    {
                        "address": {
                            "street": "123 main st",
                            "city": "Issaquah",
                            "state": "WA",
                            "postal_or_zip": "98027"
                        },
                        "created_date": "2024-09-18T15:30:25.302Z",
                        "total_beds": 4,
                        "total_baths": 2,
                        "year_built": 1985,
                        "square_feet": 2250
                    }
                ]
        },
        "source": "Facebook",
        "status": "unworked",
        "contact" : {
            "first_name": "Janis",
            "last_name": "A. Doe",
            "phone_numbers": {
                "cell_phone": "0000000000"
            },
            "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"
    },
    "pipeline": {
        "stage": "Attempted Contact",
        "history": [
            {
                "stage": "Attempted Contact",
                "staged_date": "2022-11-22T22:01:20.800Z"
            },
            {
                "stage": "New Lead",
                "staged_date": "2022-08-16T13:24:48.127Z"
            }
        ]
    },
    "listings": {
        "favorited": [
            {
                "mls_number": "111111",
                "price": 365000.00,
                "favorited_date": "2024-11-01T15:26:03.993Z",
                "id": "mymls-03e22264c91911e91a16927d65df7eb6",
                "address": {
                    "street": "111 sesame st",
                    "city": "Acworth",
                    "state": "GA",
                    "postal_or_zip": "30102",
                    "county": "Cherokee"
                },
                "total_beds": 3,
                "total_baths": 2
            },
            {
                "mls_number": "222222",
                "price": 344900.00,
                "favorited_date": "2024-10-06T17:16:01.357Z",
                "id": "mymls-3befe6329abe01fab8ee9a3f53b547db",
                "address": {
                    "street": "222 sesame st",
                    "city": "Kennesaw",
                    "state": "GA",
                    "postal_or_zip": "30152",
                    "county": "Cobb"
                },
                "total_beds": 3,
                "total_baths": 2
            }
        ],
        "recommended": [
            {
                "mls_number": "333333",
                "price": 2800.00,
                "recommended_by": "AGENT3",
                "recommended_date": "2024-12-27T09:22:07.350Z",
                "id": "mymls-611b282ab9a74f7c4846e46ac8f5c22b",
                "address": {
                    "street": "333 sesame st",
                    "city": "Atlanta",
                    "state": "GA",
                    "postal_or_zip": "30329",
                    "county": "DeKalb"
                },
                "total_beds": 3,
                "total_baths": 3
            },
            {
                "mls_number": "333333",
                "price": 179900.00,
                "recommended_by": "AGENT3",
                "recommended_date": "2024-12-27T09:22:07.317Z",
                "id": "mymls-992b995d10b90a761fdd36adf2ccfc9c",
                "address": {
                    "street": "444 sesame st",
                    "city": "Warner Robins",
                    "state": "GA",
                    "postal_or_zip": "31093",
                    "county": "Houston"
                },
                "total_beds": 3,
                "total_baths": 2
            }
        ]
    },
    "labels": [
        {
            "id": "LLVLZZZ5ZQTLLJ3W",
            "name": "Saved Search Export Test",
            "color": "#1E8BC3",
            "created_by": "AGENT9",
            "applied_date": "2022-11-02T23:20:13.537Z",
            "group": {
                "id": "LGLABEL01",
                "name": "Label Group N"
            }
        },
        {
            "id": "LLVLZZZ3BDRD9DX1",
            "name": "Label Test",
            "color": "#F763B7",
            "created_by": "AGENT9",
            "applied_date": "2022-11-04T17:58:46.837Z",
            "group": {
                "id": "LGLABEL02",
                "name": "My Label Group"
            }
        }
    ],
    "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 payload is structured in the following manner:

Field Type Description
id String The unique identifier for the lead.
uuid String The universally unique identifier for the lead.
username String The username of the lead.
registered_date Date The timestamp of when the lead was registered (ISO 8601).
timezone String The name of the timezone of the lead (TZ identifier).
logged_in_date Date The timestamp of when the lead last logged in (ISO 8601).
origin Object Contains the origin information of the lead.
verification Object Contains the verification status of the lead.
info Object Contains the base level information of the lead.
pipeline Object Contains the pipeline data of the lead.
listings Object Contains listing information about a lead, but not seller properties.
labels Array[Object] Contains the list of applied lead labels on the lead.
assigned_agents Object Contains the assigned agent information of the lead.
toupp Object Contains the terms of use and privacy policy 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": "0000000000"
        },
        "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",
    "is_first_time": false,
    "is_pre_qualified": true
}

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 Indicates how soon the lead wants to buy.
is_first_time Boolean Indicates if the lead is a first-time buyer.
is_pre_qualified Boolean Indicates if the lead is pre-qualified for a mortgage.

Lead Contact Info Structure

Example object: Lead Contact Info Structure

"contact": {
    "first_name": "Janis",
    "last_name": "A. Doe",
    "phone_numbers": {
        "cell_phone": "0000000000",
        "home_phone": "5555555555",
        "work_phone": "5555555555"
    },
    "email": "jane.doe@email.com",
    "is_validated_email": true,
    "is_validated_cell_phone": 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.
is_validated_cell_phone Boolean The validation status of the cell phone provided by the lead.
mailing_address Object The physical mailing address of 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 secondary 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[Object] A list of seller properties that the 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"
    },
    "created_date": "2024-04-14 19:44:14.576Z",
    "total_beds": 2,
    "total_baths": 3,
    "year_built": 2002,
    "square_feet": 2000
}
Field Type Description
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.
created_date Date The timestamp of when the property was added onto the lead. (ISO 8601).
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.
year_built Number The year the property was built.
square_feet Number The number of square feet for the property.

Lead Status

The status of the lead indicates where in the system 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:

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
mls_number String The identifier of the listing in the MLS.
price Number The listing price of the listing.
favorited_date Date The timestamp of when the listing was favorited by the lead.
id String The unique identifier for the listing in the CINC platform.
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.
total_beds Number The total number of bedrooms in the listing.
total_baths Number The total number of bathrooms in the listing.

Recommended listings are structured in the following manner:

Field Type Description
mls_number String The identifier of the listing in the MLS.
price Number The listing price of the listing.
recommended_by String The user that recommended the listing to the lead.
recommended_date Date The timestamp of when the listing was recommended to the lead.
id String The unique identifier for 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.
total_beds Number The total number of bedrooms in the listing.
total_baths Number The total number of bathrooms in the listing.

Lead Labels

Example object: Lead Labels

{
    "label": {
        "id": "LDID0",
        "name": "Chimichanga",
        "color": "#0B5C7A",
        "created_by": "AGENT_MDID0",
        "applied_date": "2023-04-14 19:44:14.347Z",
        "group": {
            "id": "LG01",
            "name": "My Label Group",
            "created_date": "2022-01-13T23:28:25.803Z",
            "created_by": "AGENT_MDID0",
            "updated_date": "2022-01-13T23:28:25.803Z"
        },
        "created_date": "2023-06-01T10:02:12.297Z",
        "updated_date": "2023-06-11T12:04:11.297Z"
    }
}

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).
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.
group Object The label group to which the lead label belongs. If the label is in the uncategorized group then the object will not be present on the label.

Valid Lead Label Hex Colors

List of label colors supported by CINC API:

#96281B #96281B #C0392B #C0392B #CF000F #CF000F #F22613 #F22613 #D84642 #D84642
#D84642 #D84642 #E74C3C #E74C3C #E08283 #E08283 #F1A9A0 #F1A9A0 #D2527E #D2527E
#D2527E #D2527E #DB0A5B #DB0A5B #F62459 #F62459 #DCC6E0 #DCC6E0 #AEA8D3 #AEA8D3
#AEA8D3 #AEA8D3 #BE90D4 #BE90D4 #BF55EC #BF55EC #9A12B3 #9A12B3 #663399 #663399
#663399 #663399 #674172 #674172 #3A539B #3A539B #446CB3 #446CB3
#1E8BC3 #1E8BC3 #19B5FE #19B5FE #34495E #34495E #336E7B #336E7B #1BA39C #1BA39C
#1BA39C #1BA39C #4ECDC4 #4ECDC4 #3FC380 #3FC380 #019875 #019875 #1E824C #1E824C
#1E824C #1E824C #F4D03F #F4D03F #F4B350 #F4B350 #EB974E #EB974E #F2784B #F2784B
#F2784B #F2784B #F9690E #F9690E #E67E22 #E67E22 #F89406 #F89406 #6C7A89 #6C7A89
#6C7A89 #6C7A89 #95A5A6 #95A5A6 #BDC3C7 #BDC3C7 #D2D8D4 #D2D8D4 #000000 #000000

Lead Label Groups

Example object: Lead Labels Groups

"group" : {
    "id": "LG01",
    "name": "My Label Group",
    "created_date": "2022-01-13T23:28:25.803Z",
    "created_by": "AGENT_MDID0",
    "updated_date": "2022-01-13T23:28:25.803Z",
    "is_deleted": false
}
Field Type Description
id String The unique identifier for the label group.
name String The name of the label group.
created_date Date The timestamp of when the label group was created (ISO 8601).
created_by String The unique identifier of the agent who created the label group.
updated_date Date The timestamp of when the label group was updated (ISO 8601).
is_deleted Boolean Indicates if the label on the site has been deleted.

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.
created_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 at the top of the lead's Activity page.
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 are structured in the following manner:

Field Type Description
email Object Contains email subscription preferences.
email.can_receive_emails Boolean Indicates whether the lead can receive emails.
email.can_receive_property_alerts Boolean Indicates whether the lead can receive property alerts via email.
email.can_receive_favorite_updates Boolean Indicates whether the lead can receive updates about their favorite properties via email.
text Object Contains text message subscription preferences.
text.can_receive_texts Boolean Indicates whether the lead can receive text messages.
text.has_ai_conversations_on Boolean Indicates whether 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 whether phone automation is allowed for the lead. This is caused by legal regulations in the lead's area or state.

Lead Toupp

Example object: Lead Toupp

"toupp": {
    "is_external": false,
    "is_cinc": false
}

The toupp (terms of use and privacy policy) is structured in the following manner:

Field Type Description
is_external Boolean Indicates whether the lead has accepted an approved external partner's terms of use and privacy policy.
is_cinc Boolean Indicates whether the lead has accepted the CINC terms of use and privacy policy.

Lead Origin

Example object: Lead Origin

"origin": {
    "referrer": {
        "name": "Site"
    },
    "classification": {
        "is_cinc_lead": true
    }
}

The origin information is structured in the following manner:

Field Type Description
referrer Object Information about the source that referred the lead.
referrer.name String The name of the source that referred the lead.
classification Object Classification details of the lead.
classification.is_cinc_lead Boolean Indicates whether the lead was created by CINC's client marketing lead generation department.

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 retrieves the information of the agent making the request. It is 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 "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(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)
print(response.json())

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)
print(response.json())

Example response

{
  "body": {
    "paging": {
      "offset": 0,
      "next": 8,
      "limit": 2,
      "count": 2
    },
    "agents": [
      {
        "id": "AGENT0",
        "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",
          "url": "test.com/dashboard/spa#settings/profile/profile/AGENT0"
        },
        "subscriptions": {
          "email": {
            "can_receive_emails": false
          },
          "text": {
            "can_receive_texts": true
          }
        },
        "roles": ["agent", "team_lead"],
        "company": {
          "name": "This company"
        }
      },
      {
        "id": "AGENT1",
        "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",
              "office_phone": "5555555555"
            },
            "email": "pume@efpu.bj"
          },
          "updated_date": "2023-01-11T09:32:05.987Z",
          "url": "https://test.com/dashboard/spa#settings/profile/profile/AGENT1"
        },
        "subscriptions": {
          "email": {
            "can_receive_emails": true
          },
          "text": {
            "can_receive_texts": true
          }
        },
        "roles": ["agent"],
        "company": {
          "name": "that company"
        }
      }
    ]
  },
  "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 results 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 retrieves the 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);
        // Handle response
    }
}
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)
print(response.json())

Example response

{
  "body": {
    "agent": {
      "id": "AGENT0",
      "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",
        "url": "test.com/dashboard/spa#settings/profile/profile/AGENT0"
      },
      "subscriptions": {
        "email": {
          "can_receive_emails": false
        },
        "text": {
          "can_receive_texts": true
        }
      },
      "roles": ["agent", "team_lead"],
      "company": {
        "name": "This company"
      }
    }
  },
  "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.

Communication Endpoints

GET site/leads/{lead_id}/communications?type=text

This endpoint retrieves the specified lead's text communication data. The required scope to access this endpoint is api:read. For more information on rate limiting, read the section on rate limits.

Example request: GET /site/leads/{lead_id}/communications?type=text

curl -X GET "https://public.cincapi.com/v2/site/leads/LEAD01/communications?type=text" \
  -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/LEAD01/communications?type=text"))
    {
        request.Headers.TryAddWithoutValidation("Authorization", "Ad3Zjsd4tU209aJd");

        var response = await httpClient.SendAsync(request);
    }
}
fetch('https://public.cincapi.com/v2/site/leads/LEAD01/communications?type=text', {
    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/LEAD01/communications?type=text', headers=headers)

Example response

{
  "paging": {
    "limit": 500,
    "count": 3,
    "offset": 0
  },
  "communications": [
    {
      "id": "TMS01",
      "type": "text",
      "origin": {
        "is_ai": true
      },
      "content": "Hey Jake, Alex here, your AI assistant for real estate. What type of house are you looking for?",
      "created_date": "2024-09-18T15:36:07.467Z",
      "from": {
        "phone_number": "6789999999",
        "id": "AGENT01"
      },
      "to": {
        "phone_number": "5555555555",
        "id": "LEAD01"
      }
    },
    {
      "id": "TMS02",
      "type": "text",
      "origin": {
        "is_ai": true
      },
      "content": "Is there specific criteria you wanted in a house?",
      "created_date": "2024-09-21T14:11:12.500Z",
      "from": {
        "phone_number": "6789999999",
        "id": "AGENT01"
      },
      "to": {
        "phone_number": "5555555555",
        "id": "LEAD01"
      }
    },
    {
      "id": "TMS03",
      "type": "text",
      "origin": {
        "is_ai": false
      },
      "content": "Yes. I was looking for a 1 bedroom house",
      "created_date": "2024-09-21T14:13:25.700Z",
      "from": {
        "phone_number": "5555555555",
        "id": "LEAD01"
      },
      "to": {
        "phone_number": "6789999999",
        "id": "AGENT01"
      }
    }
  ]
}

Path Parameters

Name Type Description
lead_id String Required The unique identifier of the lead.

Query Parameters

Name Type Description
type String Required Must be a valid communication type. To retrieve text messages, the string text must be used.
origin.is_ai Boolean Optional Indicates whether AI communications should be returned for the specified lead.
limit Integer Optional The maximum number of records to return. Default is 500.
offset Integer Optional The number of records to skip before starting to return results. Default is 0.
next String Optional The token to retrieve the next page of results.

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"
          }
        },
        "toupp": {
          "is_external": false,
          "is_cinc": true
        },
        "regulations": {
          "allows_phone_automation": false
        },
        "subscriptions": {
          "email": {
            "can_receive_emails": true,
            "can_receive_property_alerts": false,
            "can_receive_favorite_updates": false
          },
          "text": {
            "can_receive_texts": true,
            "has_ai_conversations_on": true
          }
        }
      },
      {
        "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_first_time": false,
            "is_pre_qualified": true
          },
          "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"
          }
        },
        "toupp": {
          "is_external": false,
          "is_cinc": true
        },
        "regulations": {
          "allows_phone_automation": false
        },
        "subscriptions": {
          "email": {
            "can_receive_emails": true,
            "can_receive_property_alerts": false,
            "can_receive_favorite_updates": false
          },
          "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
  }
}

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 retrieves the 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.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"
            },
            "total_beds": 2,
            "total_baths": 5
          },
          {
            "mls_number": "11124",
            "price": 59900.00,
            "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 separation is required when filtering by multiple fields.

Here are the supported fields:

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 or 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 "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": "0000000000"
            },
            "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": true,
        "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": []
        }
    ]
}'
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""   : ""0000000000""
                        },
                        ""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""  : true,
                    ""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"": []
                    }
                ]
            }",
            Encoding.UTF8,
            "application/json");
        await httpClient.SendAsync(request);
    }
}
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: "0000000000"
            },
            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: []
        }
    ]
};
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",
    "info": {
        "contact": {
            "first_name": "Janis",
            "last_name": "A. Doe",
            "phone_numbers": {
                "cell_phone": "0000000000"
            },
            "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": true,
        "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": []
        }
    ]
}

headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Ad3Zjsd4tU209aJd'
}

response = requests.post('https://public.cincapi.com/v2/site/leads', headers=headers, json=data)
print(response.json())

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 Description Default
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 Description
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 Description
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: POST site/leads/{lead_id}

curl -X POST "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": "0000000000"
            },
            "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": true,
        "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"": ""0000000000""
                        },
                        ""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"": true,
                    ""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: "0000000000"
            },
            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",
    "info": {
        "contact": {
            "first_name": "Janis",
            "last_name": "A. Doe",
            "phone_numbers": {
                "cell_phone": "0000000000"
            },
            "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": true,
        "seller": {
            "timeline": "4 to 6 weeks"
        }
    }
}

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 Description
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 Description
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 for unique identifiers of agents to be notified within the CINC platform that this note was created. If left blank, the assigned agent of the lead will be notified. If empty, no agent will be notified.

Lead Note Endpoints

GET site/leads/{lead_id}/notes

version 2.1

This endpoint retrieves all the notes from a specified lead while omitting the content of the note. To get the content for a specific note use the GET Site Leads Note Id endpoint.

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)
print(response.json())

Example response

{
  "body": {
    "paging": {
      "limit": 500,
      "count": 5,
      "offset": 0
    },
    "notes": [
      {
        "id": "LN0001",
        "category": "call",
        "created_by": "agentid",
        "created_date": "2023-04-14T19:44:14.576Z",
        "is_pinned": true
      },
      {
        "id": "LN0002",
        "category": "info",
        "created_by": "agentid",
        "created_date": "2023-04-14T19:44:14.576Z",
        "is_pinned": true
      },
      {
        "id": "LN0003",
        "category": "general",
        "created_by": "agentid",
        "created_date": "2023-04-14T19:44:14.576Z",
        "is_pinned": true
      },
      {
        "id": "LN0004",
        "category": "call",
        "created_by": "agentid",
        "created_date": "2023-04-14T19:44:14.576Z",
        "is_pinned": true
      },
      {
        "id": "LN0005",
        "category": "email",
        "created_by": "agentid",
        "created_date": "2023-04-14T19: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 retrieves 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 "https://public.cincapi.com/v2/site/leads/notes/LN0001" \
  -H "Content-Type: application/json" \
  -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);
        // Handle response
    }
}
fetch('https://public.cincapi.com/v2/site/leads/notes/LN0001', {
    method: 'GET',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': 'Ad3Zjsd4tU209aJd'
    }
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));
import requests

headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Ad3Zjsd4tU209aJd'
}

response = requests.get('https://public.cincapi.com/v2/site/leads/notes/LN0001', headers=headers)
print(response.json())

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-14T19: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 retrieves 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);
        // Handle response
    }
}
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)
print(response.json())

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",
        "group": {
          "id": "LGDID0",
          "name": "Buyer Labels",
          "created_date": "2022-01-13T23:28:25.803Z",
          "created_by": "AGENT_MDID0",
          "updated_date": "2022-01-13T23:28:25.803Z"
        }
      },
      {
        "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",
        "group": {
          "id": "LGDID0",
          "name": "Buyer Labels",
          "created_date": "2022-01-13T23:28:25.803Z",
          "created_by": "AGENT_MDID0",
          "updated_date": "2022-01-13T23:28:25.803Z"
        }
      },
      {
        "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",
        "group": {
          "id": "LGDID0",
          "name": "Buyer Labels",
          "created_date": "2022-01-13T23:28:25.803Z",
          "created_by": "AGENT_MDID0",
          "updated_date": "2022-01-13T23:28:25.803Z"
        }
      },
      {
        "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",
        "group": {
          "id": "LGDID0",
          "name": "Buyer Labels",
          "created_date": "2022-01-13T23:28:25.803Z",
          "created_by": "AGENT_MDID0",
          "updated_date": "2022-01-13T23:28:25.803Z"
        }
      },
      {
        "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
  }
}

Query Parameters

Name Type Description
limit Integer Optional The maximum number of records to return. Default is 500.
offset Integer Optional The number of records to skip before starting to return results. Default is 0.
next String Optional The token to retrieve the next page of results.

GET site/leads/labels/{label_id}

version 2.2

This endpoint retrieves the specified label's data. The required scope to access this endpoint is api:read. For more information, read the section on rate limits.

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);
        // Handle response
    }
}
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)
print(response.json())

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",
      "is_deleted": false,
      "group": {
        "id": "LGDID0",
        "name": "Buyer Labels",
        "created_date": "2022-01-13T23:28:25.803Z",
        "created_by": "AGENT_MDID0",
        "updated_date": "2022-01-13T23:28:25.803Z"
      }
    }
  },
  "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 "https://public.cincapi.com/v2/site/leads/labels" \
  -H "Content-Type: application/json" \
  -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/json',
        '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/json',
    'Authorization': 'Ad3Zjsd4tU209aJd'
}

response = requests.post('https://public.cincapi.com/v2/site/leads/labels', headers=headers, json=data)
print(response.json())

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 Description Default
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 "https://public.cincapi.com/v2/site/leads/LEAD_MDID0/labels/apply" \
  -H "Content-Type: application/json" \
  -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/json',
        '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/json',
    'Authorization': 'Ad3Zjsd4tU209aJd'
}

response = requests.post('https://public.cincapi.com/v2/site/leads/LEAD_MDID0/labels/apply', headers=headers, json=data)
print(response.json())

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 Description Default
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 "https://public.cincapi.com/v2/site/leads/LEAD_MDID0/labels/remove" \
  -H "Content-Type: application/json" \
  -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/json',
        '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/json',
    'Authorization': 'Ad3Zjsd4tU209aJd'
}

response = requests.post('https://public.cincapi.com/v2/site/leads/LEAD_MDID0/labels/remove', headers=headers, json=data)
print(response.json())

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 Description Default
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 will status delete the given 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 "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())
  .then(data => console.log(data));
import requests

headers = {
    'Content-Type': 'application/x-www-form-urlencoded',
    'Authorization': 'Ad3Zjsd4tU209aJd'
}

response = requests.delete('https://public.cincapi.com/v2/site/leads/labels/LDID0', headers=headers)
print(response.json())

Response Body

The response code will be an HTTP 200 (OK) if the label was deleted successfully. Otherwise, an error message will be shown with a proper HTTP status code.

Example response

{
   "message": "The label LDID0 was deleted successfully."
}

Path Parameters

Name Type Description
label_id String Required Unique label identifier.

Webhook Endpoints

POST site/webhook

version 2.1

This endpoint can be used as an upsert operation given the request body. If the webhook already exists, it will be updated; otherwise, a new webhook will be created. Users have the ability to specify custom headers when they recieve events. Additionally, they can select which events they wish to receive through the webhook.

Example request: POST site/webhook

curl -X POST "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");
        var response = await httpClient.SendAsync(request);
    }
}
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)
print(response.json())

Example response

{
    "message": "Updated webhook successfully."
}

Request Body

Field Type Description Default
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 indicate whether or not the upsert operation was successful.

POST site/webhook/enable

version 2.1

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 "https://public.cincapi.com/v2/site/webhook/enable" \
  -H "Authorization: Ad3Zjsd4tU209aJd"
using (var httpClient = new HttpClient())
{
    using (var request = new HttpRequestMessage(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)
print(response.json())

Example response

{
   "message": "Enabled webhook successfully."
}

POST site/webhook/disable

version 2.1

To stop receiving events, use an empty POST request to disable the registered webhook.

Example request: POST site/webhook/disable

curl -X POST "https://public.cincapi.com/v2/site/webhook/disable" \
  -H "Authorization: Ad3Zjsd4tU209aJd"
using (var httpClient = new HttpClient())
{
    using (var request = new HttpRequestMessage(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)
print(response.json())

Example response

{
   "message": "Disabled webhook successfully."
}

GET site/webhook

version 2.1

This endpoint retrieves 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 "https://public.cincapi.com/v2/site/webhook" \
  -H "Authorization: Ad3Zjsd4tU209aJd"
using (var httpClient = new HttpClient())
{
    using (var request = new HttpRequestMessage(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)
data = response.json()
print(data)

Example response

{
   "event_filters": [
      "lead.created",
      "lead.info.updated",
      "agent.created"
   ],
   "headers": {
      "header_name1": "header_value1",
      "header_name2": "header_value2"
   },
   "is_enabled": true
}

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.