Updated in 4.0

Asset management for API-first media work

ElmapiCMS stores project media in one library. You upload files, edit images, track usage, and deliver URLs through the Content API.

WebP images with original keptDirect upload to S3 or SpacesUsage tracking across entries
ElmapiCMS asset library in light mode

What the asset library does

Core media features for teams that ship websites and apps with structured content.

Project asset library

Upload, preview, search, and manage images, video, audio, and documents in one place per project.

WebP for new images

New image uploads store an optimized WebP file. The original stays available when Elmapi keeps it.

Direct S3 upload

Optional presigned and multipart upload to S3 or Spaces. Large files skip PHP upload limits.

Crop, resize, and rotate

Edit images in the CMS. See where each asset is used across content entries before you change it.

Grid and list views

Switch layout. Sort by name, size, date, or type. Filter by file type and date range.

Metadata you can search

Set alt text, title, caption, and related fields. Find files faster when the library grows.

Day-to-day flow

From upload to delivery in four steps

Keep files in the library. Reuse them in Media fields. Serve stable URLs to your frontend.

Asset workflowupload → organize → edit → deliver
01

Upload

Drag and drop or browse. Classic upload for local disks. Direct upload for S3.

02

Organize

Search, filter, sort, and open details. Add alt text and title for reuse.

03

Edit

Resize, rotate, or crop images. Review usage before you replace a file.

04

Deliver

Reference assets in Media fields. Use url, thumbnail_url, and original_url in the API.

Images in 4.0

Optimize new images. Keep the original when you need it.

New image uploads store as WebP. Elmapi keeps the original when it is available. You can resize, rotate, and crop in the asset editor.

  • - WebP delivery for new raster uploads
  • - original_url and original_path when an original exists
  • - Usage panel shows which entries reference the file
  • - New SVG uploads are rejected. Existing SVG assets still work.
url

Primary delivery URL. New images use the WebP file.

thumbnail_url

Smaller preview for grids, pickers, and admin lists.

original_url

Full original when Elmapi kept it after WebP conversion.

Direct uploadS3 or Spaces
1) Request an upload URL
Dashboard or API starts a presigned PUT or multipart session.
2) Put the file in the bucket
The browser or client sends bytes straight to object storage.
3) Finalize and process
Elmapi finishes the asset record. A queue worker completes image work.
Large files

Upload large files without PHP size limits

If the project disk is s3 and ASSET_DIRECT_UPLOAD is true, clients upload to the bucket with presigned URLs. Multipart covers bigger objects.

  • - Project storage disk must be s3 or S3-compatible
  • - Bucket CORS must allow your CMS origin and PUT
  • - Run a queue worker so image finalize jobs complete
  • - Classic POST upload stays the default for local disks
Storage

Choose local storage or S3-compatible cloud

Each project uses one storage disk. Start local. Move to object storage when the library and traffic need it.

  • - Local disk for simple self-hosted setups
  • - AWS S3, DigitalOcean Spaces, Wasabi, and other S3 APIs
  • - Same library UI and API on every disk
Local or public disk

Use local storage for simple installs and early projects.

AWS S3

Store production assets in standard object storage.

DigitalOcean Spaces

Use S3-compatible storage with a simple setup.

Wasabi and other S3 APIs

Point the project disk at any S3-compatible provider.

Library UIfind and manage files
Search and filters

Match filename, original name, or MIME type. Filter by image, video, audio, or document.

Grid or table

Sort by newest, oldest, name, or size. Bulk select and delete unused files.

Details and usage

Preview media, copy URLs, edit metadata, and see entry references.

Editorial work

Find files fast. See where they are used.

The details modal shows preview, metadata, and URLs. The usage list shows which content entries reference the asset. That helps you clean the library with less risk.

  • - Date filters for today, week, month, and quarter
  • - Arrow navigation between assets in the details modal
  • - Bulk delete after you review usage
API surface

List, upload, and update assets from code

Use the REST Content API or the JS SDK. Bulk upload and bulk metadata updates cover migration and cleanup jobs.

  • - List, get, upload, delete, and bulk actions
  • - Public delivery URLs do not need an API key to fetch
  • - Direct upload endpoints for large S3 transfers
APIcommon asset endpoints
GET/filesList and search assets
GET/files/{id}Get one asset
POST/filesClassic upload
POST/files/upload-urlStart direct upload
POST/files/bulk/uploadBulk upload
PATCH/files/bulk/metadataBulk metadata
MCPasset tools in your editor
list_assets
Search the project library
get_asset
Read asset details and URLs
upload_asset
Add a file from your editor
bulk_upload_assets
Upload many files in one step
MCP and AI editors

Manage assets from Cursor or Claude Code

The official MCP server exposes asset tools next to collections and entries. You can list, read, and upload media without leaving the editor.

  • - Package: @elmapicms/mcp-server
  • - Works with Cursor, Claude Code, and other MCP clients
  • - Bulk upload and metadata tools for larger jobs

Ready to manage media in ElmapiCMS?

Use the asset library for uploads, WebP images, usage tracking, S3 storage, and API delivery. Open the demo or read the docs.