Skip to main content
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.
brand
string
required
The brand/project ID
file
file
required
Binary file (multipart/form-data)
path
string
Target subdirectory within the brand’s assets folder (e.g. media, media/icons). Defaults to the root assets folder. Omit leading/trailing slashes.
custom_filename
string
Override the stored filename. Defaults to the original filename from the file field.
Accepted MIME types: images (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.png

Bulk 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.
brand
string
required
The brand/project ID
files[]
file[]
required
Array of files (multipart/form-data). Maximum 20 files per request.
path
string
Target subdirectory for all files in this batch (e.g. media). All files land in the same folder.
filenames[]
string[]
Optional array of custom filenames, positionally matched to files[]. Use to override individual filenames. filenames[0] overrides the name of files[0], etc.
Per-file validation rules:
  • 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.
brand
string
required
The brand/project ID
filename
string
required
The filename only (e.g. cards.png)
path
string
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.
brand
string
required
The brand/project ID
extensions
string
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.
brand
string
required
The brand/project ID
updated_after
string
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.
brand
string
required
The brand/project ID
path
string
required
Path of the file to delete, relative to the brand’s assets folder (e.g. media/cards.png). No leading slash.
Deletion is permanent. The following paths are protected and cannot be deleted via API:
  • media (the folder itself)
  • products and anything inside it (used in product forms)
  • Empty path (root assets folder)
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.
brand
string
required
The brand/project ID
path
string
required
Current path of the file relative to the brand’s assets folder (e.g. media/old-name.png). No leading slash.
new_name
string
required
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.
brand
string
required
The brand/project ID
path
string
required
Parent directory for the new folder (e.g. media)
name
string
required
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