100+ SaaS integrations
for your product

Kloudless is your SaaS integration strategy. We abstract away the differences between many APIs for software categories like Cloud Storage, Calendar, CRM, and Construction. Use our Unified APIs to quickly embed integrations right into your commercial product.

Click on an API to learn more

Integration products that accelerate your time to market

Building with our Unified APIs means that you can integrate with many services at once without learning how to use each individual API. See all of our Connectors!

Learn more about our Unified APIs
Cloud Storage
Calendar
CRM
Dropbox
Box
Google Drive
OneDrive
Alfresco
SharePoint
Egnyte
Amazon S3
CalDAV
Google Calendar
Outlook
Office 365
iCloud
Exchange Server
Hubspot
Salesforce
Microsoft Dynamics
SugarCRM
Pipeliner CRM
Oracle Sales Cloud
Zoho
              
                  # 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 = "COPY ACCESS TOKEN HERE"

# Retrieve the metadata of the "root" folder
curl "https://api.kloudless.com/v1/accounts/me/storage/folders/root/" \
    -H "Authorization: Bearer $BEARER_TOKEN"

# Retrieve contents of "root" folder
curl "https://api.kloudless.com/v1/accounts/me/storage/folders/root/contents" \
    -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 contents of "root" folder
FOLDER_CONTENTS_URL = ("https://api.kloudless.com/v1/accounts/me/"
                       "storage/folders/root/contents")
response = requests.get(FOLDER_CONTENTS_URL, headers=HEADERS)

# 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 contents of "root" folder
let FOLDER_CONTENTS_URL = "https://api.kloudless.com/v1/accounts/me/" +
                          "storage/folders/root/contents";
let data = {}
axios.get(FOLDER_CONTENTS_URL, data, config)
  .then(function (response) {
    // handle success
    console.log(response);
  })
  .catch(function (error) {
    // handle error
    console.log(error);
  })
  .then(function () {
    // always executed
  });

              
            
              
                  
import com.squareup.moshi.JsonAdapter;
import com.squareup.moshi.Moshi;
import java.io.IOException;
import java.util.Map;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

import java.awt.Desktop;
import java.net.URI;

public class KloudlessExample {
  private final OkHttpClient client = new OkHttpClient();
  private final Moshi moshi = new Moshi.Builder().build();
  private final JsonAdapter gistJsonAdapter = moshi.adapter(Gist.class);

  public void run() throws Exception {

    // Visit this URL for the bearer token
    // "https://api.kloudless.com/v1/oauth?scope=any.storage" +
    // "&client_id=" +
    // "d5tecX5XUmc2dgnOwolR4WADXG4iMcXNhjxxjGsVRfavESi5" +
    // "&response_type=token&state=13373";

    Request request = new Request.Builder()
        .url("https://api.kloudless.com/v1/accounts/me/storage/folders/root/contents")
        .header("Authorization", "Bearer PASTE ACCESS TOKEN HERE")
        .addHeader("Accept", "application/json; q=0.5")
        .build();

    try (Response response = client.newCall(request).execute()) {
      if (!response.isSuccessful()) {
        throw new IOException("Unexpected code " + response);
      }

      Gist gist = gistJsonAdapter.fromJson(response.body().source());

      for (Map.Entry entry : gist.files.entrySet()) {
        System.out.println(entry.getKey());
        System.out.println(entry.getValue().content);
      }
    }
  }

  static class Gist {
    Map files;
  }

  static class GistFile {
    String content;
  }

  public static void main(String[] args) throws IOException {
    KloudlessExample example = new KloudlessExample();
    example.run();
  }
}
              
            
              
                  # 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 all the calendars
curl "https://api.kloudless.com/v1/accounts/me/cal/calendars" \
    -H "Authorization: Bearer $BEARER_TOKEN"

# Retrieve the metadata of the primary calendar
curl "https://api.kloudless.com/v1/accounts/me/cal/calendars/primary" \
    -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 all the calendars

LIST_CALENDARS_URL = ("https://api.kloudless.com/v1/accounts/me/"
                      "cal/calendars")
response = requests.get(LIST_CALENDARS_URL, headers=HEADERS)

# Pretty Print response
if response.ok:
    data = response.json()
    for child in data['objects'][:5]:
        pprint.pprint(child)

# Retrieve the metadata of the primary calendar

CALENDAR_METADATA_URL = ("https://api.kloudless.com/v1/accounts/me/"
                         "cal/calendars/primary")
response = requests.get(CALENDAR_METADATA_URL, headers=HEADERS)

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

              
            
              
                  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,
  }
}

let LIST_CALENDARS_URL = "https://api.kloudless.com/v1/accounts/me/" +
                          "cal/calendars";
axios.get(LIST_CALENDARS_URL, {}, config)
  .then(function (response) {
    // handle success
    console.log(response);
  })
  .catch(function (error) {
    // handle error
    console.log(error);
  })
  .then(function () {
    // always executed
  });

// Retrieve the metadata of the primary calendar
let CALENDAR_METADATA_URL = "https://api.kloudless.com/v1/accounts/me/" +
                             "cal/calendars/primary";
axios.get(CALENDAR_METADATA_URL, {}, config)
  .then(function (response) {
    // handle success
    console.log(response);
  })
  .catch(function (error) {
    // handle error
    console.log(error);
  })
  .then(function () {
    // always executed
  });
              
            
              
                  # 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
  });
              
            

Built to help developers get ahead

Kloudless is designed for developers. Our Unified APIs give you everything you need to build and deliver powerful customer experiences in your product.

Cloud Storage

Calendar

CRM

Explore all features

With over 100 million learners on their platform, Blackboard integrated Kloudless to power document collaboration workflows from any cloud storage service. Blackboard is saving over 5,000 developer hours and as much as $150,000 a year by using Kloudless to scale the way they build and maintain integrations.

blackboard title copy

Supporting 1,100+ customers in 150+ countries, O.C. Tanner uses Kloudless’ Unified Calendar API to streamline intercompany meeting scheduling and empower positive ways to build personal connections within a company. With Kloudless, O.C. Tanner has saved over 6 months of development time and over $75,000 a year.

blackboard title copy

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

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

Not a developer? Talk to an expert.

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