Latest Update: v1.3 – November 03, 2025
Major improvements:
- Files are now unlimited in time — no expiration
- Maximum file size increased to 5 GB
- Improved reliability and security
Overview
Upload.am provides a RESTful API for secure file upload, storage, and sharing with S3-backed storage and JWT authentication.
Key Features:
- Up to 5 GB per file
- No file expiration — files stay until manually deleted
- Optional password protection
- Folder organization
- QR code generation for sharing
- JWT authentication with refresh tokens
Authentication
All protected endpoints require a JWT Bearer token:
Authorization: Bearer <your_jwt_token>
Login
POST /api/v1/auth/login
| Param | Required | Description |
|---|---|---|
login | Yes | Email or username |
password | Yes | User password |
Refresh Token
POST /api/v1/auth/refresh
| Param | Required | Description |
|---|---|---|
refresh_token | Yes | Token from login response |
Get User Info
GET /api/v1/auth/user
Endpoints
1. Precheck File
POST /api/v1/precheck
Validates file before upload. Max size: 5 GB.
| Param | Required | Description |
|---|---|---|
fileName | Yes | File name with extension |
fileSize | Yes | Size in bytes (max 5368709120) |
Example:
curl -X POST https://upload.am/api/v1/precheck \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "fileName=photo.jpg&fileSize=5242880000"
Response:
{
"success": true,
"data": {
"fileId": "temp_a1b2c3d4"
}
}
2. Upload File
POST /api/v1/upload
| Param | Required | Description |
|---|---|---|
file | Yes | File to upload |
fileId | Yes | From precheck response |
password | No | Optional password |
folder_id | No | Folder ID |
Example:
curl -X POST https://upload.am/api/v1/upload \
-F "file=@photo.jpg" \
-F "fileId=temp_a1b2c3d4" \
-F "password=secure123" \
-F "folder_id=1" \
-H "Authorization: Bearer <token>"
Response:
{
"success": true,
"data": {
"fileName": "photo.jpg",
"fileSize": "218.94 KB",
"fileLink": "https://upload.am/d/abc123.jpg",
"presignedUrl": "https://upload.de-fra.i3storage.com/2025/11/03/abc123.jpg?...",
"uploadDate": "2025-11-03 10:00:00",
"folderId": 1
}
}
3. Download File
GET /api/v1/download?key=abc123.jpg
| Param | Required | Description |
|---|---|---|
key | Yes | File short key |
password | No | If file is protected |
Example:
curl -X GET "https://upload.am/api/v1/download?key=abc123.jpg&password=secure123"
Response:
{
"success": true,
"data": {
"presignedUrl": "https://upload.de-fra.i3storage.com/2025/11/03/abc123.jpg?...",
"fileName": "photo.jpg",
"fileSize": "218.94 KB"
}
}
4. Generate QR Code
POST /api/v1/qrcode
| Param | Required | Description |
|---|---|---|
fileLink | Yes | Public file URL |
Example:
curl -X POST https://upload.am/api/v1/qrcode \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "fileLink=https://upload.am/d/abc123.jpg"
Response:
{
"success": true,
"data": {
"qrCodeUrl": "https://upload.am/qr/abc123.png"
}
}
5. List User Files
GET /api/v1/files?folder_id=1
Example:
curl -X GET "https://upload.am/api/v1/files?folder_id=1" \
-H "Authorization: Bearer <token>"
Response:
{
"success": true,
"data": [
{
"id": 123,
"fileName": "photo.jpg",
"fileLink": "https://upload.am/d/abc123.jpg",
"uploadDate": "2025-11-03",
"fileSize": "218.94 KB"
}
]
}
6. Delete File
DELETE /api/v1/file/123
Example:
curl -X DELETE https://upload.am/api/v1/file/123 \
-H "Authorization: Bearer <token>"
Response:
{
"success": true
}
7. Create Folder
POST /api/v1/folder
| Param | Required | Description |
|---|---|---|
folder_name | Yes | Folder name |
Example:
curl -X POST https://upload.am/api/v1/folder \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "folder_name=MyFolder" \
-H "Authorization: Bearer <token>"
Response:
{
"success": true,
"data": {
"folder_id": 1,
"folder_name": "MyFolder"
}
}
8. Delete Folder
DELETE /api/v1/folder/1
Example:
curl -X DELETE https://upload.am/api/v1/folder/1 \
-H "Authorization: Bearer <token>"
Response:
{
"success": true
}
9. List Folders
GET /api/v1/folders
Example:
curl -X GET https://upload.am/api/v1/folders \
-H "Authorization: Bearer <token>"
Response:
{
"success": true,
"data": [
{
"id": 1,
"folderName": "MyFolder",
"createdAt": "2025-11-03 10:00:00"
}
]
}
10. Get Storage Usage
GET /api/v1/storage
Example:
curl -X GET https://upload.am/api/v1/storage \
-H "Authorization: Bearer <token>"
Response:
{
"success": true,
"data": {
"usedStorage": 5.23,
"storageLimit": 25.00,
"usedPercent": 20.92
}
}
Changelog
v1.3 – November 03, 2025
- Files are now unlimited in time — no expiration
- Maximum file size increased to 5 GB
- Improved reliability and security
v1.2 – July 06, 2025
- Added folder support
- Added password protection
- Added QR code generation
Support
Contact us for assistance:
- Email: support@upload.am
- Documentation: https://upload.am/api