All File Manager endpoints authenticate via the
EF-Access-Key header. No session cookie or CSRF token is required.Upload File
Upload a single file to the brand’s asset storage.The brand/project ID
Binary file (
multipart/form-data)Target subdirectory within the brand’s assets folder (e.g.
media, media/icons). Defaults to the root assets folder. Omit leading/trailing slashes.Override the stored filename. Defaults to the original filename from the
file field.image/*), video (video/mp4, video/webm, video/quicktime), fonts (font/ttf, font/woff, font/woff2, font/otf), code/text (text/css, text/javascript, application/json, application/javascript).
cURL
JavaScript
The CDN URL is not included in the upload response. Derive it as:
https://cdn.elasticfunnels.io/{brand_id}/assets/{path}/{filename}Example: https://cdn.elasticfunnels.io/42/assets/media/cards.pngBulk Upload Files
Upload up to 20 files in a single request. Each file is validated and uploaded independently — files that fail validation are reported per-file without aborting the rest.The brand/project ID
Array of files (multipart/form-data). Maximum 20 files per request.
Target subdirectory for all files in this batch (e.g.
media). All files land in the same folder.Optional array of custom filenames, positionally matched to
files[]. Use to override individual filenames. filenames[0] overrides the name of files[0], etc.- File must be a valid upload (not corrupted in transit)
- Maximum 10 MB per file
- MIME type must be in the allowed list (same as single upload)
cURL
Python
Node.js
HTTP status is always 200 even when some files fail — inspect the
status field on each entry. A failed entry never prevents other files from uploading.Check File Exists
Check whether a file already exists at a given path. Useful for idempotency before uploading.The brand/project ID
The filename only (e.g.
cards.png)The subdirectory to look in (e.g.
media). Defaults to the root assets folder.cURL
List Files
Browse the raw Bunny CDN storage directory for the brand. Returns files and folders from storage directly (not the database). Sorted newest-first; folders are listed before files.The brand/project ID
Comma-separated list of extensions to filter by (e.g.
png,jpg,svg)cURL
cURL (filter by extension)
List Assets
Return all brand assets tracked in the database. Unlike List Files which reads from CDN storage, this returns structured records including file IDs and paths — useful for linking uploaded files to other API operations.The brand/project ID
ISO 8601 timestamp — only return assets updated after this date (e.g.
2024-12-01T00:00:00Z). Useful for incremental sync.cURL
cURL (incremental sync)
Delete File
Delete a file or folder from asset storage. The corresponding database record is also removed.The brand/project ID
Path of the file to delete, relative to the brand’s assets folder (e.g.
media/cards.png). No leading slash.cURL
Rename File
Rename a file in asset storage. Because Bunny CDN does not support atomic rename, this downloads the original content, uploads it under the new name, and deletes the original. The database record is updated automatically.The brand/project ID
Current path of the file relative to the brand’s assets folder (e.g.
media/old-name.png). No leading slash.New filename only — not a path (e.g.
new-name.png). Must not contain / or \.cURL
Rename folder (
POST …/file-manager/rename-folder) is not yet supported via the API. It returns 501 Not Implemented. Use the File Manager UI to rename folders.Create Folder
Create a new folder inside the brand’s asset storage.The brand/project ID
Parent directory for the new folder (e.g.
media)Folder name. Must match
^[a-z0-9_-]+$ — lowercase letters, numbers, hyphens, underscores only.cURL
Automated Product Provisioning
Complete example: bulk-upload all universal + product-specific assets for a new product, then idempotently re-run without re-uploading existing files.Python