Upload, manage, and serve files through the Noxie CDN. Authenticate with an API key and interact with all endpoints over HTTPS.
All API requests require an API key passed in the X-API-Key header.
X-API-Key: your-api-key-here
API keys are created in the Admin Panel under the API Keys tab. Each key is scoped to a user account and can have granular permissions (upload, read, delete).
Requests without a valid API key will receive a 401 Unauthorized response.
All API endpoints are relative to:
https://cdn.noxie.xyz/api/v1
Upload a file to the CDN. The request must be multipart/form-data with the file in a field named file.
| Field | Type | Description |
|---|---|---|
| file | File required | The file to upload |
{
"success": true,
"file": {
"id": "aBcDeF",
"name": "photo.png",
"url": "https://cdn.noxie.xyz/watch/aBcDeF",
"size": 204800,
"type": "image/png",
"uploadedAt": "2026-02-08T12:00:00.000Z"
}
}
List files belonging to the authenticated user. Super admins see all files.
| Param | Type | Description |
|---|---|---|
| page | Number optional | Page number (default: 1) |
| limit | Number optional | Results per page, max 100 (default: 50) |
| type | String optional | Filter by MIME type prefix, e.g. image/, video/ |
{
"success": true,
"files": [
{
"id": "aBcDeF",
"name": "photo.png",
"url": "https://cdn.noxie.xyz/watch/aBcDeF",
"size": 204800,
"type": "image/png",
"downloads": 42,
"uploadedAt": "2026-02-08T12:00:00.000Z"
}
],
"total": 1,
"page": 1,
"pages": 1
}
Get metadata for a single file. You can only access files you own unless you are a super admin.
| Param | Type | Description |
|---|---|---|
| :id | String required | The file ID |
{
"success": true,
"file": {
"id": "aBcDeF",
"name": "photo.png",
"url": "https://cdn.noxie.xyz/watch/aBcDeF",
"size": 204800,
"type": "image/png",
"downloads": 42,
"uploadedAt": "2026-02-08T12:00:00.000Z"
}
}
Delete a file from the CDN. You can only delete files you own unless you are a super admin.
| Param | Type | Description |
|---|---|---|
| :id | String required | The file ID to delete |
{
"success": true
}
Get account information for the authenticated user, including storage usage and quota.
{
"success": true,
"account": {
"username": "noxie",
"storageUsed": 52428800,
"quota": 1073741824,
"fileCount": 15
}
}
Each API key can be assigned specific permissions. The table below shows which permission is required for each endpoint.
| Endpoint | upload | read | delete |
|---|---|---|---|
| POST /api/v1/upload | ✓ | — | — |
| GET /api/v1/files | — | ✓ | — |
| GET /api/v1/files/:id | — | ✓ | — |
| DELETE /api/v1/files/:id | — | — | ✓ |
| GET /api/v1/account | — | ✓ | — |
All error responses follow the same format:
{
"success": false,
"error": "Description of what went wrong"
}
| Code | Meaning | Description |
|---|---|---|
| 400 | Bad Request | Missing required fields (e.g. no file in upload) |
| 401 | Unauthorized | Missing or invalid API key |
| 403 | Forbidden | Insufficient permissions, not your file, or storage quota exceeded |
| 404 | Not Found | File or resource does not exist |
| 500 | Server Error | Something went wrong on our end |
| 507 | Insufficient Storage | Server disk space is full |
All examples use curl. Replace YOUR_API_KEY with your actual key.
curl -X POST https://cdn.noxie.xyz/api/v1/upload \
-H "X-API-Key: YOUR_API_KEY" \
-F "file=@photo.png"
curl https://cdn.noxie.xyz/api/v1/files \
-H "X-API-Key: YOUR_API_KEY"
curl "https://cdn.noxie.xyz/api/v1/files?page=1&limit=10&type=image/" \
-H "X-API-Key: YOUR_API_KEY"
curl https://cdn.noxie.xyz/api/v1/files/aBcDeF \
-H "X-API-Key: YOUR_API_KEY"
curl -X DELETE https://cdn.noxie.xyz/api/v1/files/aBcDeF \
-H "X-API-Key: YOUR_API_KEY"
curl https://cdn.noxie.xyz/api/v1/account \
-H "X-API-Key: YOUR_API_KEY"