
Simplify your integration strategy
Build with our Universal APIs to integrate your apps with File Storage, CRM, Email, Help Desk, IT Service Management, and many other business applications.
WE HELP THOUSANDS OF DEVELOPERS WITH INTEGRATIONS
Code once, integrate many
Develop once with Kloudless’s universal API and connect your application to many services. We maintain the integrations so you don’t have to.

Varying documentation, object data, features, data formatting, and more make it challenging to navigate API integrations.
Kloudless manages all the complexities while making sure that you have a feature and data rich experience.
You (and your developer team) only need to build with our clean, universal API in order to get all the integrations you want.
Built by developers for developers
Kloudless provides a clean, RESTful API with all the features and data you need. We take care of the heavy lifting so you can focus on building great products.
- Files
- Folders
- Links
- Access Controls
- Search
- Python
- NodeJS
- Java/Android
- iOS
- cURL
import kloudless; kloudless.configure(api_key=API_KEY)
account = kloudless.Account.all()[0]
# Retrieve metadata on a file
kfile = account.files.retrieve(file_id)
# Download the file's contents
data = kfile.contents().content
# Move the file to the root folder of a different account
kfile.parent_id = "root"
kfile.account = kloudless.Account.all()[1].id
kfile.save()
import kloudless; kloudless.configure(api_key=API_KEY)
account = kloudless.Account.all()[0]
# Retrieve the root folder's contents
items = account.folders().contents()
# Create a folder within the root folder.
new_folder = account.folders.create(name="New Folder", parent_id="root")
# Rename the folder
new_folder.name = "Not-so-new Folder"
new_folder.save()
import kloudless; kloudless.configure(api_key=API_KEY)
account = kloudless.Account.all()[0]
# Create a link
link = account.links.create(file_id=file_id)
# Update a link to be inactive
link = account.links.retrieve(link_id)
link.active = False
link.save()
# Delete a link
link.delete()
import kloudless; kloudless.configure(api_key=API_KEY)
account = kloudless.Account(id=account_id)
# Create a link with a password
link = account.links.create(file_id=file_id, password="p4ssw0rd")
# Update the link's expiration date to 24 hours from now.
from datetime import datetime, timedelta
link.expiration = datetime.utcnow() + timedelta(days=1)
link.save()
# Print the URL of the link
print link.url
import kloudless; kloudless.configure(api_key=API_KEY)
account = kloudless.Account(id=account_id)
# Retrieve metadata of search results for 'pdf'.
items = account.search.all(q="pdf")
# Search across multiple accounts simultaneously
accounts = kloudless.Account(id="id_1,id_2,id_3")
items = accounts.search.all(q="test")
var kloudless = require('kloudless')('your-api-key-goes-here!');
var kloudless = require('kloudless')(api_key);
// Retrieve metadata on a file
kloudless.files.get({
"account_id": account_id,
"file_id": file_id,
}, function(err, res) {
metadata = res;
}
);
// Download file contents
kloudless.files.contents({
"account_id": account_id,
"file_id": file_id,
}, function(err, filestream) {
filecontents = "";
filestream.on('data', function(chunk){
filecontents += chunk;
});
filestream.on('end',function(){
console.log("finished reading file!");
});
}
);
// Move the file to the root folder of a different account
kloudless.files.move({
"account_id": account_id,
"new_account_id": other_account_id,
"parent_id": "root"
});
var kloudless = require('kloudless')(api_key);
// Retrieve the root folder's contents
kloudless.folders.contents({
"account_id": account_id,
"folder_id": "root"
}, function(err, res) {
contents = res;
}
);
// Create a folder within the root folder.
var new_folder_id;
kloudless.folders.create({
"account_id": account_id,
"name": "New Folder",
"parent_id": "root"
}, function(err, res) {
new_folder_id = res['id'];
}
);
// Rename the folder
kloudless.folders.rename({
"account_id": account_id,
"folder_id": new_folder_id,
"name": "Not-so-new Folder",
});
var kloudless = require('kloudless')(api_key);
// Create a link
var link_id;
kloudless.links.create({
"account_id": account_id,
"file_id": file_id
}, function(err, res){
link_id = res['id'];
}
);
// Update a link to be inactive
kloudless.links.update({
"account_id": account_id,
"link_id": link_id,
"active": false
}
);
// Delete a link
kloudless.links.delete({
"account_id": account_id,
"link_id": link_id
});
// Create a link with a password
var link_id;
var link_url;
kloudless.links.create({
"account_id": account_id,
"file_id": file_id,
"password": "p4ssw0rd",
}, function(err, res){
link_id = res['id'];
link_url = res['url'];
}
);
// 24 hours from right now
var expiration_milliseconds = Date.now() + 86400000;
// Update the link's expiration date to 24 hours from now
kloudless.links.update({
"account_id": account_id,
"link_id": link_id,
"expiration": expiration_milliseconds
}
);
// Print the URL of the link
console.log(link_url);
var kloudless = require('kloudless')(api_key);
// Retrieve metadata of search results for 'pdf'
kloudless.accounts.search({
"account_id": account_id
"q": "pdf"
}, function(err, res) {
metadata = res;
}
);
// Search across multiple accounts simultaneously
kloudless.accounts.search({
"account_id": "id_1,id_2,id_3",
"q": "test"
});
Kloudless.apiKey = "API KEY";
// Retrieve metadata on a file
File fileInfo = File.retrieve(fileId, accountId, params);
// Download the file's contents to a path
KloudlessResponse response = File.contents(fileId, accountId,
params);
ByteArrayOutputStream outputStream = response.getResponseStream();
FileOutputStream out = new FileOutputStream(path);
outputStream.writeTo(out);
out.close();
Kloudless.apiKey = "API KEY";
// Retrieve folder's contents
MetadataCollection contents = Folder.contents(folderId, accountId,
params);
// Create a folder within the root folder
HashMap params = new HashMap();
params.put("name", "new new folder");
params.put("parent_id", "root");
Folder folderInfo = Folder.create(accountId, params);
// Rename the folder
String newFolderId = folderInfo.id;
params.put("name", "new folder name");
Folder newFolderInfo = Folder.save(newFolderId, accountId, params);
Kloudless.apiKey = "API KEY";
// Create a link
params.put("file_id", fileId);
Link linkInfo = Link.create(accountId, params);
// Update a link to be inactive
String linkId = linkInfo.id;
params.put("active", false);
linkInfo = Link.save(linkId, accountId, params);
// Delete a link
Link.delete(linkId, accountId, params);
Kloudless.apiKey = "API KEY"; // Create a link with a password HashMapparams = new HashMap (); params.put("file_id", fileId); params.put("password", "p4ssw0rd"); Link linkInfo = Link.create(accountId, params); // Print the URL of the link System.out.println(linkInfo.url);
Kloudless.apiKey = "API KEY"; // Retrieve metadata of search results for 'pdf' HashMapparams = new HashMap (); params.put("query", "pdf"); MetadataCollection results = Account.search(accountId, params); // Search across multiple accounts simultaneously String accountIds = "123,456"; MetadataCollection multipleResults = Account.search(accountId, params);
- (void)getFileMetadata
{
// Retrieve Metadata on a file
NSString *fileId = "abcdef";
- (void)testGetFolderContents:(id)sender
{
// Retrieve the contents of the folder 'root'
NSString *folderId = @"root";
- (void)testCreateLink:(id)sender
{
// Create a link from the file with id "12345"
NSString *fileId = @"12345";
NSDictionary *params = [NSDictionary dictionaryWithObject:
fileId forKey:@"file_id"];
- (void)testCreateLink:(id)sender
{
// Create a link from the file with id "12345" with a password
NSString *fileId = @"12345";
NSString *password = @"p4ssw0rd";
NSDictionary *params = [NSDictionary
dictionaryWithObjectsAndKeys:fileId, @"file_id",
password, @"password", nil];
- (void)searchAccount
{
// Retrieve metadata of search results for 'pdf'
NSString *query = "pdf";
# Retrieve metadata on a file
curl https://api.kloudless.com/v1/accounts/$ACCT_ID/storage/files/$FILE_ID \
-H "Authorization: ApiKey $API_KEY"
# Download the file's contents
curl https://api.kloudless.com/v1/accounts/$ACCT_ID/storage/files/$FILE_ID/contents \
-H "Authorization: ApiKey $API_KEY"
# Move the file to the root folder of another account
curl -X PATCH https://api.kloudless.com/v1/accounts/$ACCT_ID/storage/files/$FILE_ID \
-d '{"parent_id": "root", "account": $NEW_ACCT_ID}' \
-H "Authorization: ApiKey $API_KEY" \
-H "Content-Type: application/json"
# Retrieve the root folder's contents
curl https://api.kloudless.com/v1/accounts/$ACCT_ID/storage/folders/root/contents \
-H "Authorization: ApiKey $API_KEY"
# Create a folder within the root folder.
curl -X POST https://api.kloudless.com/v1/accounts/$ACCT_ID/storage/folders \
-d '{"parent_id": "root", "name": "New Folder"}' \
-H "Authorization: ApiKey $API_KEY" \
-H "Content-Type: application/json"
# Rename the folder
curl -X PATCH https://api.kloudless.com/v1/accounts/$ACCT_ID/storage/folders/$FOLDER_ID \
-d '{"name": "Not-so-new Folder"}' \
-H "Authorization: ApiKey $API_KEY" \
-H "Content-Type: application/json"
# Create a link
curl -X POST https://api.kloudless.com/v1/accounts/$ACCT_ID/storage/links \
-d '{"file_id": "$FILE_ID"}' \
-H "Authorization: ApiKey $API_KEY" \
-H "Content-Type: application/json"
# Update a link to be inactive
curl -X PATCH https://api.kloudless.com/v1/accounts/$ACCT_ID/storage/links/$LINK_ID \
-d '{"active": false}' \
-H "Authorization: ApiKey $API_KEY" \
-H "Content-Type: application/json"
# Delete a link
curl -X DELETE https://api.kloudless.com/v1/accounts/$ACCT_ID/storage/links/$LINK_ID \
-H "Authorization: ApiKey $API_KEY"
# Create a link with a password
curl -X POST https://api.kloudless.com/v1/accounts/$ACCT_ID/storage/links \
-d '{"file_id": "$FILE_ID", "password": "p4ssw0rd"}' \
-H "Authorization: ApiKey $API_KEY" \
-H "Content-Type: application/json"
# Update the link's expiration date to 24 hours from now.
curl -X PATCH https://api.kloudless.com/v1/accounts/$ACCT_ID/storage/links/$LINK_ID \
-d "{\"expiration\": \"$(date -v'+1d' -u +'%Y-%m-%dT%H:%M:%SZ')\"}" \
-H "Authorization: ApiKey $API_KEY" \
-H "Content-Type: application/json"
# Retrieve metadata of search results for 'pdf'.
curl "https://api.kloudless.com/v1/accounts/$ACCT_ID/storage/search?q=pdf" \
-H "Authorization: ApiKey $API_KEY"
# Search across multiple accounts simultaneously
curl "https://api.kloudless.com/v1/accounts/$ID1,$ID2,$ID3/storage/search?q=pdf" \
-H "Authorization: ApiKey $API_KEY"
Our integration products
Tools built to reduce engineering overhead and accelerate your time to market.
Loved by developers, trusted by enterprises
We’re passionate about developer support and serious about data security. Run Kloudless wherever you’d like.
Sensitive data encrypted at rest with 4096-bit RSA keys.
![]()
All data encrypted in transit. Files are never stored on our servers.
![]()
Multiple security tiers, with hardened servers and locked-down firewalls.
![]()
Dedicated ops team on call 24/7.
On-premises, hosted in your own private infrastructure.
![]()
No data ever passes through Kloudless infrastructure.
![]()
Inherits your security and regulatory compliance promises.
![]()
24/7 support and Service Level Agreement available.
We’re your partners
Our entire team is dedicated to helping you build your integration strategy, accelerate development, and increase your solution’s market coverage.

“Kloudless lets us serve a broad range of customers without needing to devote our resources to behind-the-scenes integration work. It lets us focus on what we do best. It’s a win for everyone!”




