Storage & Quotas
Every plan includes a storage quota. Stashly tracks usage in real-time and enforces limits before uploads are accepted.
How Storage Is Calculated#
Storage is measured as the sum of all stored file sizes within a tenant. This includes:
- —Files in all buckets
- —Files in trash (pending permanent deletion)
- —Files in active upload sessions
Directories do not consume storage — only file bytes count.
Quota Models#
Solo Plan (Individual Users)
Individual users have a single storage quota applied to their entire account.
| Plan | Storage | Max file size |
|---|---|---|
| Free | 5 GB | 100 MB |
| Pro | 100 GB | 5 GB |
| Max | 1 TB | 25 GB |
Team Plan (Tenant with Members)
Team plans allocate a pool quota to the tenant. Admins can sub-allocate storage to individual members.
| Plan | Total storage | Per-member default |
|---|---|---|
| Team Starter | 100 GB | 10 GB |
| Team Pro | 500 GB | Configurable |
| Team Enterprise | Custom | Configurable |
Team admins can update per-member storage limits via the Team API.
What Happens When Quota Is Exceeded#
- —Upload session init is blocked —
POST /api/user/upload/initreturns413 Quota Exceeded - —Active sessions are not terminated — files already in a session can still finish uploading
- —Dashboard warning shown — the user/admin portal displays a banner
- —Email notification sent — at 80%, 95%, and 100% usage thresholds
{
"success": false,
"message": "Storage quota exceeded",
"data": {
"used": 107374182400,
"limit": 107374182400,
"unit": "bytes"
}
}
Checking Your Usage#
/api/user/settingsJWT RequiredGet the authenticated user's storage settings and current usage.
{
"success": true,
"data": {
"storageUsed": 5368709120,
"storageLimit": 107374182400,
"storagePercent": 5,
"plan": "pro"
}
}
/team/storageJWT RequiredGet the team's total storage breakdown by member (admin only).
{
"success": true,
"data": {
"total": 536870912000,
"used": 128849018880,
"members": [
{ "userId": "usr_01j9", "name": "Alice", "used": 64424509440, "limit": 107374182400 }
]
}
}
Freeing Storage#
To free storage:
- —Empty trash —
DELETE /api/trash/emptypermanently removes all trashed files - —Delete unused files — remove files no longer needed
- —Cancel stale sessions —
POST /api/user/upload/:sessionId/cancelreverts and frees session storage
Trash counts toward quota
Files in trash still count toward your storage quota until permanently deleted. Empty trash regularly to free space.