Managing media files and storage quotas
How to upload images and documents, organize assets in the Media Library, understand supported file types, and manage storage quotas.
Before you begin
- A SCHMA workspace
- Editor, Admin, or Owner permissions to upload or delete media
The SCHMA Media Library provides a centralized asset management system for imagery, illustrations, and documents used across your content models. Assets uploaded to SCHMA are stored on managed cloud infrastructure with edge CDN distribution, keeping heavy binary files separate from your customer-owned PostgreSQL database.
Media Library architecture and asset management
When an editor attaches an image to a content entry, SCHMA stores a lightweight JSON reference in your PostgreSQL database (containing the asset ID, URL, filename, dimensions, and alternative text) while the binary file itself is hosted on SCHMA's secure media storage cluster.
Inside the Studio's Media Library, teams can:
- Organize assets by folder: Create directory hierarchies to group assets by campaign, department, or content type.
- Tag and search: Apply tags to assets and execute keyword searches across filenames and descriptions.
- Inspect asset metadata: View file dimensions (width and height), file size in bytes, MIME type, upload date, and referencing content entries.
- Manage accessibility: Define reusable alternative text (alt text) and captions directly within the asset record.
Supported file formats and upload limits
To ensure high security, web performance, and protection against file spoofing, SCHMA validates both the declared MIME type and the file extension upon upload. The following file formats are verified for production use:
| Asset Category | MIME Type | Permitted Extensions |
|---|---|---|
| JPEG Image | image/jpeg | .jpg, .jpeg |
| PNG Image | image/png | .png |
| WebP Image | image/webp | .webp |
| AVIF Image | image/avif | .avif |
| GIF Animation | image/gif | .gif |
| Vector Graphic | image/svg+xml | .svg |
| Document | application/pdf |
Storage quotas and plan allowances
Media storage capacity is governed by your workspace subscription plan. Approved tier allocations include:
| Plan Tier | Total Storage Quota | Individual File Limit | Edge CDN Delivery |
|---|---|---|---|
| Free Plan | 100 MB | 10 MB | Included |
| Pro Plan (£20/mo UK / €25 EU / $25 RoW) | 1 GB | 10 MB | Included (High Priority) |
| Max Plan | Custom Quota (Coming Soon) | Custom (Coming Soon) | Included (Dedicated) |
Monitoring usage and resolving quota limits
You can inspect current storage consumption at any time by navigating to Settings > Usage in SCHMA Studio. The storage meter displays committed bytes and the percentage of your plan allowance consumed.
If an upload causes your workspace to exceed its storage ceiling, the API rejects the request with an HTTP 429 response indicating MEDIA_QUOTA_EXCEEDED. To resolve a quota block:
- Prune obsolete media: Open the Media Library, filter by unused or unreferenced assets, and delete files that are no longer needed by published entries.
- Optimize imagery prior to upload: Convert large uncompressed PNGs to modern WebP or AVIF formats. Converting a 4 MB photographic PNG to WebP typically reduces its footprint to under 400 KB without discernible loss of visual fidelity.
- Upgrade to Pro: Workspaces on the Free plan can upgrade to Pro (£20/mo UK, €25/mo EU, $25/mo Rest of world; or £200/year UK) to instantly expand their storage allowance to 1 GB alongside expanded multi-user collaboration (up to 5 members) and scheduling.
Media delivery, image caching, and CDN optimization
Every uploaded asset receives an immutable public CDN delivery URL. Because asset filenames include a cryptographic hash, responses carry aggressive browser cache headers (Cache-Control: public, max-age=31536000, immutable).
When rendering images in modern frontend frameworks like Next.js, use the framework's native image optimization component with your SCHMA media domain configured in remotePatterns:
// next.config.mjs
export default {
images: {
remotePatterns: [
{
protocol: 'https',
hostname: '*.schma.dev',
},
],
},
};