You can add file sharing to any application with a single HTTP request. No API key, no OAuth, no signup. This tutorial walks through uploading, downloading and managing files via the EasySend API.
Upload a File (One Line)
curl -F 'files[][email protected]' https://easysend.co/api/v1/upload
Response:
{
"success": true,
"short_code": "Ab3Kz",
"share_url": "/Ab3Kz",
"upload_token": "abc123...def456",
"files": [{"id": 42, "name": "report.pdf", "size": 1048576, "mime_type": "application/pdf"}]
}
The share link is https://easysend.co/Ab3Kz. The upload token lets you manage the bundle later.
Python Example
import requests
# Upload
with open('report.pdf', 'rb') as f:
r = requests.post('https://easysend.co/api/v1/upload', files={'files[]': f})
data = r.json()
print(f"Share: https://easysend.co/{data['short_code']}")
# Get bundle info
info = requests.get(f"https://easysend.co/api/v1/bundle/{data['short_code']}").json()
for f in info['files']:
print(f" {f['name']} ({f['size']} bytes) - {f['download_count']} downloads")
# Download a file
file_id = info['files'][0]['id']
content = requests.get(f"https://easysend.co/api/v1/download/{file_id}").content
with open('downloaded.pdf', 'wb') as f:
f.write(content)
JavaScript / Node.js Example
import fs from 'fs';
import FormData from 'form-data';
// Upload
const form = new FormData();
form.append('files[]', fs.createReadStream('report.pdf'));
const res = await fetch('https://easysend.co/api/v1/upload', { method: 'POST', body: form });
const { short_code, upload_token } = await res.json();
console.log(`Share: https://easysend.co/${short_code}`);
// Get bundle info
const info = await fetch(`https://easysend.co/api/v1/bundle/${short_code}`).then(r => r.json());
console.log(`${info.file_count} files, ${info.view_count} views`);
// Delete a file
await fetch(`https://easysend.co/api/v1/file/${info.files[0].id}`, {
method: 'DELETE',
headers: { 'Authorization': `Bearer ${upload_token}` }
});
API Reference
- POST /api/v1/upload - upload files, create bundle
- POST /api/v1/upload/{token} - add files to existing bundle
- GET /api/v1/bundle/{code} - get bundle info and file list
- GET /api/v1/bundle/{code}/status - quick status check
- GET /api/v1/download/{id} - download a file
- GET /api/v1/check/{code} - check if a custom code is available
- DELETE /api/v1/file/{id} - delete a file (requires upload_token)
Optional Fields
Add these POST fields when uploading:
description- note visible to recipientsnotify_email- get emailed on downloadsaccess_password- require a password to viewcustom_code- choose your own short URL (3-30 chars)
Rate Limits
10 uploads per hour, 60 API requests per minute per IP. More than enough for normal integration. Contact us if you need higher limits.
Full documentation: easysend.co/api. Integration guide: easysend.co/integrate.
View Full API DocsRelated Guides
- File Sharing API for Developers - full overview with code examples
- Add File Sharing to Your App - integration guide in 5 minutes
- Claude Code Plugin - MCP integration for AI-assisted file sharing
- File Sharing for Developers - CLI, API and paste workflows
- Developer Guide to the API - in-depth API walkthrough