Base URL: https://xcloudmanagement.cloud · All routes prefixed with /api · All responses are JSON.
Get a token from POST /api/auth/login. Pass it on every protected request:
Authorization: Bearer <token>
Create a key from the API Keys page inside the dashboard. Use it instead of a Bearer token:
X-API-Key: <your-api-key>
Upload example with curl:
curl -X POST https://xcloudmanagement.cloud/api/files/upload \ -H "X-API-Key: <key>" \ -F "file=@backup.db"
New accounts are pending until an admin approves them.
{ "username": "alice", "email": "alice@example.com", "password": "secret123" }{ "message": "Registered. Awaiting admin approval." }{ "username": "alice", "password": "secret123" }{ "token": "eyJ...", "user": { "id": 1, "username": "alice", "role": "user", "quota_bytes": 5368709120 } }{ "id": 1, "username": "alice", "email": "alice@example.com", "role": "user", "quota_bytes": 5368709120, "used_bytes": 204800 }The raw key is returned only once — store it immediately.
{ "name": "my-backup-script" }{ "id": 1, "name": "my-backup-script", "key": "abc123..." }[ { "id": 1, "name": "my-script", "created_at": "2026-06-07 10:00:00", "last_used_at": "..." } ]{ "ok": true }[ { "id": 1, "name": "report.pdf", "size": 204800, "mime_type": "application/pdf" } ]# multipart/form-data file: <binary> folder_id: 5 # optional
{ "id": 42, "name": "photo.jpg", "size": 1024000 }{ "name": "new.pdf", "folder_id": 3 } // folder_id: -1 moves to root{ "name": "Backups", "parent_id": null }{ "name": "Archived" }{ "file_id": 42, "shared_with": "bob" }{ "allow_download": true }{ "token": "abc123", "url": "https://xcloudmanagement.cloud/api/share/abc123" }{ "allow_download": true }Requires role: admin token or API key.
{ "approved": true, "role": "user", "quota_gb": 10.0 } // all optional{ "total_users": 12, "pending_users": 2, "total_files": 340, "total_bytes": 1073741824 }