CRM API

Give your users access to customer data from any CRM service.

Quickly add integrations to many CRM services like Salesforce, Microsoft Dynamics, Oracle Sales Cloud, Hubspot, and more to your app.

big yellow left quotation mark

Kloudless allows you to develop against a core set of APIs to integrate faster, quicker, cheaper. It doesn’t make any sense to have to build each integration separately.

customer image
Kent Erickson

SVP Product Management @ Bigtincan

Write code once and reuse it for any service

Use Kloudless to integrate with many CRM services in the effort it takes you to build just one integration to Salesforce. We take care of all the Connector maintenance and updates, so you don’t have to.

Explore our API documentation
Salesforce
Microsoft Dynamics
Oracle Sales Cloud
Pipeliner CRM
Zoho
Hubspot CRM
SugarCRM
              
                  # Visit this URL for the bearer token:
# https://api.kloudless.com/v1/oauth?scope=any.storage&client_id=d5tecX5XUmc2dgnOwolR4WADXG4iMcXNhjxxjGsVRfavESi5&response_type=token&state=13373

$BEARER_TOKEN = "PASTE ACCESS TOKEN HERE"

# Retrieve a list of CRM accounts
curl "https://api.kloudless.com/v1/accounts/me/crm/accounts" \
    -H "Authorization: Bearer $BEARER_TOKEN"

# Retrieve a list of CRM contacts
curl "https://api.kloudless.com/v1/accounts/me/crm/contacts" \
    -H "Authorization: Bearer $BEARER_TOKEN"

# Retrieve a list of CRM leads
curl "https://api.kloudless.com/v1/accounts/me/crm/leads" \
    -H "Authorization: Bearer $BEARER_TOKEN"

              
            
              
                  
import webbrowser
import requests
import pprint

# Access Token
OAUTH_FLOW_URL = ("https://api.kloudless.com/v1/oauth?scope=any.storage"
                  "&client_id="
                  "d5tecX5XUmc2dgnOwolR4WADXG4iMcXNhjxxjGsVRfavESi5"
                  "&response_type=token&state=13373")
webbrowser.open(OAUTH_FLOW_URL)

# Authorization
BEARER_TOKEN = "PASTE ACCESS TOKEN HERE"
HEADERS = {
    "Authorization": "Bearer %s" % BEARER_TOKEN
}

# Retrieve a list of CRM accounts
LIST_ACCOUNTS_URL = ("https://api.kloudless.com/v1/accounts/me/"
                     "crm/accounts")

response = requests.get(LIST_ACCOUNTS_URL, headers=HEADERS)
# Pretty Print response
if response.ok:
    data = response.json()
    for child in data['objects'][:5]:
        pprint.pprint(child)

# Retrieve a list of CRM contacts
LIST_CONTACTS_URL = ("https://api.kloudless.com/v1/accounts/me/"
                     "crm/contacts")

response = requests.get(LIST_CONTACTS_URL, headers=HEADERS)
# Pretty Print response
if response.ok:
    data = response.json()
    for child in data['objects'][:5]:
        pprint.pprint(child)


# Retrieve a list of CRM leads
LIST_LEADS_URL = ("https://api.kloudless.com/v1/accounts/me/"
                     "crm/leads")
# Pretty Print response
if response.ok:
    data = response.json()
    for child in data['objects'][:5]:
        pprint.pprint(child)
response = requests.get(LIST_LEADS_URL, headers=HEADERS)
              
            
              
                  
import axios from 'axios';

// Access Token
const OAUTH_URL = "https://api.kloudless.com/v1/oauth?scope=any.storage" +
                  "&client_id=" +
                  "d5tecX5XUmc2dgnOwolR4WADXG4iMcXNhjxxjGsVRfavESi5" +
                  "&response_type=token&state=13373";

window.open(OAUTH_URL);

// Authorization
const BEARER_TOKEN = "PASTE ACCESS TOKEN HERE"
let config = {
  headers: {
    Authorization: "Bearer " + BEARER_TOKEN,
  }
}

// CRM

// Retrieve a list of CRM accounts
let LIST_ACCOUNTS_URL = "https://api.kloudless.com/v1/accounts/me/" +
                        "crm/accounts";
axios.get(LIST_ACCOUNTS_URL, {}, config)
  .then(function (response) {
    // handle success
    console.log(response);
  })
  .catch(function (error) {
    // handle error
    console.log(error);
  })
  .then(function () {
    // always executed
  });

// Retrieve a list of CRM contacts
let LIST_CONTACTS_URL = "https://api.kloudless.com/v1/accounts/me/" +
                        "crm/contacts";
axios.get(LIST_CONTACTS_URL, {}, config)
  .then(function (response) {
    // handle success
    console.log(response);
  })
  .catch(function (error) {
    // handle error
    console.log(error);
  })
  .then(function () {
    // always executed
  });

// Retrieve a list of CRM leads
let LIST_LEADS_URL = "https://api.kloudless.com/v1/accounts/me/" +
                     "crm/leads";
axios.get(LIST_LEADS_URL, {}, config)
  .then(function (response) {
    // handle success
    console.log(response);
  })
  .catch(function (error) {
    // handle error
    console.log(error);
  })
  .then(function () {
    // always executed
  });
              
            
              
                  # Retrieve access token
open "https://api.kloudless.com/v1/oauth/?&scope=any.storage&client_id=d5tecX5XUmc2dgnOwolR4WADXG4iMcXNhjxxjGsVRfavESi5&response_type=token&state=13373"

$BEARER_TOKEN = "PASTE ACCESS TOKEN HERE"

# Search with KQL
curl -H 'Authorization: Bearer $BEARER_TOKEN' \
--data '{"lang": "KQL", "q": "SELECT id, name, opportunity_type, amount_usdollar
    FROM Opportunities WHERE amount_usdollar >= 36000}"' \
    'https://api.kloudless.com/v1/accounts/me/crm/search'
              
            
              
                  
import webbrowser
import requests
import pprint

# Access Token
OAUTH_FLOW_URL = ("https://api.kloudless.com/v1/oauth?scope=any.storage"
                  "&client_id="
                  "d5tecX5XUmc2dgnOwolR4WADXG4iMcXNhjxxjGsVRfavESi5"
                  "&response_type=token&state=13373")
webbrowser.open(OAUTH_FLOW_URL)

# Authorization
BEARER_TOKEN = "PASTE ACCESS TOKEN HERE"
HEADERS = {
    "Authorization": "Bearer %s" % BEARER_TOKEN
}

# Search with KQL
SEARCH_URL = ("https://api.kloudless.com/v1/accounts/me/crm/search")
params = {"lang": "KQL", "q": ("SELECT id, name, opportunity_type, "
        "amount_usdollar FROM Opportunities WHERE amount_usdollar >= 36000")}

response = requests.get(SEARCH_URL, headers=HEADERS, params=params)
# Pretty Print response
if response.ok:
    data = response.json()
    for child in data['objects'][:5]:
        pprint.pprint(child)
              
            
              
                  
# Retrieve access token
open "https://api.kloudless.com/v1/oauth/?&scope=any.storage&client_id=d5tecX5XUmc2dgnOwolR4WADXG4iMcXNhjxxjGsVRfavESi5&response_type=token&state=13373"

$BEARER_TOKEN = "PASTE ACCESS TOKEN HERE"

## Retrieve the latest cursor
curl -H 'Authorization: Bearer $BEARER_TOKEN' \
    'https://api.kloudless.com/v1/accounts/me/events/latest'

## TODO: It would be best to perform some actions, so that
## there will be events to retrieve

## Retrieve the latest events using the latest cursor
curl -H 'Authorization: Bearer $BEARER_TOKEN' \
    'https://api.kloudless.com/v1/accounts/me/events?cursor=$CURSOR'
              
            
              
                  
import webbrowser
import requests
import pprint

# Access Token
OAUTH_FLOW_URL = ("https://api.kloudless.com/v1/oauth?scope=any.storage"
                  "&client_id="
                  "d5tecX5XUmc2dgnOwolR4WADXG4iMcXNhjxxjGsVRfavESi5"
                  "&response_type=token&state=13373")
webbrowser.open(OAUTH_FLOW_URL)

# Authorization
BEARER_TOKEN = "PASTE ACCESS TOKEN HERE"
HEADERS = {
    "Authorization": "Bearer %s" % BEARER_TOKEN
}

## Retrieve the latest cursor
CURSOR_URL = ("https://api.kloudless.com/v1/accounts/me/"
              "events/latest")
response = requests.get(CURSOR_URL, headers=HEADERS)

# Pretty Print response
if response.ok:
    data = response.json()
    pprint.pprint(data)

## TODO: It would be best to perform some actions, so that
## there will be events to retrieve

## Retrieve the latest events using the latest cursor
EVENTS_URL = ("https://api.kloudless.com/v1/accounts/me/"
              "events")
params = {"cursor": LATEST_CURSOR}

response = requests.get(EVENTS_URL, headers=HEADERS, params=params)
# Pretty Print response
if response.ok:
    data = response.json()
    for child in data['objects'][:5]:
        pprint.pprint(child)

              
            
              
                  
import axios from 'axios';

// Access Token
const OAUTH_URL = "https://api.kloudless.com/v1/oauth?scope=any.storage" +
                  "&client_id=" +
                  "d5tecX5XUmc2dgnOwolR4WADXG4iMcXNhjxxjGsVRfavESi5" +
                  "&response_type=token&state=13373";

window.open(OAUTH_URL);

// Authorization
const BEARER_TOKEN = "PASTE ACCESS TOKEN HERE"
let config = {
  headers: {
    Authorization: "Bearer " + BEARER_TOKEN,
  }
}

// Retrieve the latest cursor
let CURSOR_URL = "https://api.kloudless.com/v1/accounts/me/" +
                 "events/latest";
axios.get(CURSOR_URL, {}, config)
  .then(function (response) {
    // handle success
    console.log(response);
  })
  .catch(function (error) {
    // handle error
    console.log(error);
  })
  .then(function () {
    // always executed
  });

// Retrieve the latest events using the latest cursor
let EVENTS_URL = "https://api.kloudless.com/v1/accounts/me/" +
                 "storage/search";
axios.get(SEARCH_URL, {cursor: LATEST_CURSOR}, config)
  .then(function (response) {
    // handle success
    console.log(response);
  })
  .catch(function (error) {
    // handle error
    console.log(error);
  })
  .then(function () {
    // always executed
  });
              
            

Built by developers, for developers

All the CRM features you need from CRUD to real-time webhooks. Here are some example use cases.

Records management

Sync data to any CRM

Query for sales data

Unified search with Kloudless Query Language

Monitor for changes

Get real time events for CRM data changes

View more code samples

Bigtincan’s AI-powered sales enablement automation platform uses Kloudless’ Unified CRM API to provide out-of-the-box data sync capability to any of their customers’ CRM services. By expanding their integrations portfolio, Kloudless gave Bigtincan a competitive differentiator, which enabled them to close key deals and increase revenue by 53%.

blackboard title copy

Deployment Options

Take advantage of our flexible hosting options to run Kloudless according to your business’ requirements.

Cloud

Securely and reliably hosted by Kloudless — the quickest way to start building integrations.

  • Fully managed by Kloudless
  • Pre-configured connectors to get started quickly
  • 99.9% uptime
  • Bank-level encryption both in transit and at rest
Self-hosted

Kloudless Enterprise is a Docker container, AWS AMI, or OVA to deploy in private infrastructure in your network or on-premises.

  • Complete data privacy and regulatory compliance
  • On-prem connectors, such as Exchange and Oracle
  • Clustering for high availability
  • Custom performance configuration
  • Custom SLAs including 24/7 support

Enough reading — let’s code.
Try our CRM API today.

Not a developer? Talk to an expert.

An arrow pointing to the 'get your api key' button