Overview
The Uploadex API lets you programmatically upload files, list them, and update metadata on behalf of the API key's owner. Every endpoint is a REST resource: JSON (or multipart for binary uploads) in, JSON out, HTTPS only.
- Base URL
https://uploadex.net/api/v1- Auth
- Bearer tokens in the
Authorizationheader - Transport
- HTTPS only · TLS 1.2 or 1.3
- Encoding
- UTF-8 JSON ·
multipart/form-datafor uploads - Dates
- ISO 8601 in UTC ·
2026-04-21T08:12:04Z
Authentication
Every request must include an Authorization header with a Bearer token. Create and rotate keys from your developer dashboard.
Keys begin with ux_live_. They are shown exactly once on creation — store them in a secret manager. Keys can be scoped to specific actions (files:read, files:write, upload, or *) and set to expire at a future date.
Quickstart
Fetch your account info to confirm the key works.
# Get your account info curl https://uploadex.net/api/v1/account \ -H "Authorization: Bearer $UX_API_KEY"
{
"data": {
"id": "clxxxxxxxxxxxxxxxxxxxxxx",
"email": "[email protected]",
"name": "Your Name",
"plan": "PRO",
"balance": 0,
"totalEarnings": 0,
"storageUsed": 52428800,
"storageLimit": 53687091200,
"storageFormatted": "50 MB / 50 GB",
"fileCount": 3,
"createdAt": "2026-04-01T09:21:00.000Z"
}
}Plan limits
Upload and storage limits are plan-driven and can change when the account upgrades or downgrades. Limits for plans that include API access:
| Plan | Max file size | Storage |
|---|---|---|
| Pro | 10 GB | 100 GB |
| Business | 50 GB | 1 TB |
| Business Plus | 100 GB | 5 TB |
Rate limits
Rate limits protect the service from runaway traffic. Exceeding a limit returns 429 Too Many Requests.
| Scope | Limit | Window | Subject |
|---|---|---|---|
| Upload init | 30 | 1 min | per API key |
| Download | 60 | 1 min | per IP |
| Login | 10 | 15 min | per IP |
| Register | 5 | 1h | per IP |
Errors
Error responses use standard HTTP status codes and a consistent JSON body.
| Status | Meaning |
|---|---|
| 400 | The request body was malformed or failed validation. |
| 401 | Missing or invalid API key. |
| 403 | The key is missing a required scope (e.g. files:write). |
| 404 | The resource does not exist or does not belong to the key owner. |
| 413 | The file exceeds the account's plan file-size limit. |
| 429 | Rate limit exceeded. Slow down and retry. |
| 500 | Internal error. Check the status page before retrying. |
Pagination
List endpoints use page-based pagination. Pass page (1-indexed) and limit (max 100) as query parameters.
Account
Return account info, plan, storage usage, file count.
Scope: no scope required beyond a valid key.
Upload
Initiate a multipart upload. Returns presigned URLs the client uses to PUT chunks to R2 object storage.
| Field | Type | Description |
|---|---|---|
| filename | string · required | File name, including extension (max 255 chars). |
| size | integer · required | Total file size in bytes. |
| contentType | string · required | MIME type (max 200 chars). |
Scope: upload. Returns 413 if size exceeds the account's plan limit.
Files
List files owned by the key. Supports page, limit (max 100), status.
Retrieve a single file by ID.
Update displayName, description, tags, or visibility.
Delete the file and reclaim storage quota.
Scopes: GET requires files:read; PATCH/DELETE require files:write.