Upload and manage files
Every file in Storage is an asset: the bytes plus metadata like its name, folder, visibility, alt text, and tags. This page covers the management operations you run against the asset API. All of them go through the gateway at https://api.revenexx.com/v1/storage and carry the auth headers X-Revenexx-Api-Key (or Authorization: Bearer) and X-Revenexx-Tenant.
Upload a file
Send one multipart/form-data request. The file part is required. The rest is optional metadata you can also change later.
curl -X POST https://api.revenexx.com/v1/storage/assets \
-H "X-Revenexx-Api-Key: <API_KEY>" \
-H "X-Revenexx-Tenant: <TENANT_SLUG>" \
-F "file=@./datasheet.pdf" \
-F "folder_id=<FOLDER_ID>" \
-F "visibility=private" \
-F "display_name=Product datasheet" \
-F "tags=spec,2026"
POST /v1/storage/assets HTTP/1.1
Host: api.revenexx.com
X-Revenexx-Api-Key: <API_KEY>
X-Revenexx-Tenant: <TENANT_SLUG>
Content-Type: multipart/form-data; boundary=----boundary
------boundary
Content-Disposition: form-data; name="file"; filename="datasheet.pdf"
Content-Type: application/pdf
<binary file content>
------boundary
Content-Disposition: form-data; name="visibility"
private
------boundary--
The fields you can send with an upload:
| Field | Description |
|---|---|
file | The file to upload. Required. |
folder_id | Folder to place the asset in. Defaults to the tenant root. |
visibility | public or private. Public assets are served without auth; private ones need a signed URL. |
display_name | A human-friendly name, up to 255 characters. |
alt_text | Alternative text for images, up to 1000 characters. |
description | A longer description. |
tags | One or more tags, comma-separated or repeated. Each tag is up to 64 characters. |
A single file can be up to 96 MiB. The SDKs and a plain multipart request both work; there is no separate chunked-upload protocol to implement. For large recurring imports, use SFTP sync instead.
The response carries the asset id. Keep it: every operation below addresses an asset by its id.
Upload several files at once
To upload a batch in one request, post to the bulk endpoint with repeated files[] parts. A batch is up to 20 files and 200 MiB total. The response is a multi-status report, one entry per file, so you can see which succeeded and which didn't.
curl -X POST https://api.revenexx.com/v1/storage/assets/bulk \
-H "X-Revenexx-Api-Key: <API_KEY>" \
-H "X-Revenexx-Tenant: <TENANT_SLUG>" \
-F "files[]=@./a.jpg" \
-F "files[]=@./b.jpg" \
-F "folder_id=<FOLDER_ID>"
List files
List assets in the tenant, with filtering, search, sorting, and pagination. Return at most 200 per page.
curl "https://api.revenexx.com/v1/storage/assets?filter[folder_id]=<FOLDER_ID>&limit=50" \
-H "X-Revenexx-Api-Key: <API_KEY>" \
-H "X-Revenexx-Tenant: <TENANT_SLUG>"
You can filter by folder_id, kind, status, and created_at, pass a search term, set sort, and page with limit.
Get one file's metadata
curl https://api.revenexx.com/v1/storage/assets/<ASSET_ID> \
-H "X-Revenexx-Api-Key: <API_KEY>" \
-H "X-Revenexx-Tenant: <TENANT_SLUG>"
This returns metadata, not bytes. To serve the file to end users, link to the delivery host. To pull the original bytes from a backend, use the download endpoint below.
Download the original
Streams the original, untransformed file. Useful for server-side processing.
curl https://api.revenexx.com/v1/storage/assets/<ASSET_ID>/download \
-H "X-Revenexx-Api-Key: <API_KEY>" \
-H "X-Revenexx-Tenant: <TENANT_SLUG>" \
-o datasheet.pdf
Update metadata, rename, or move
A PATCH updates any metadata field. To rename a file, set name. To move it to another folder, set folder_id.
curl -X PATCH https://api.revenexx.com/v1/storage/assets/<ASSET_ID> \
-H "X-Revenexx-Api-Key: <API_KEY>" \
-H "X-Revenexx-Tenant: <TENANT_SLUG>" \
-H "Content-Type: application/json" \
-d '{ "display_name": "2026 datasheet", "folder_id": "<NEW_FOLDER_ID>", "visibility": "public" }'
You can change display_name, alt_text, description, visibility, tags, folder_id (move), and name (rename).
Delete and restore
Deleting an asset is a soft delete: the file is hidden and scheduled for removal, but recoverable for a retention window (30 days by default).
curl -X DELETE https://api.revenexx.com/v1/storage/assets/<ASSET_ID> \
-H "X-Revenexx-Api-Key: <API_KEY>" \
-H "X-Revenexx-Tenant: <TENANT_SLUG>"
Restore a soft-deleted asset within the retention window:
curl -X POST https://api.revenexx.com/v1/storage/assets/<ASSET_ID>/restore \
-H "X-Revenexx-Api-Key: <API_KEY>" \
-H "X-Revenexx-Tenant: <TENANT_SLUG>"
Allowed file types
Storage accepts common image, video, document, audio, archive, data, and 3D model formats. For safety, executable types (such as exe, dll, sh, bat, jar, app, dmg, msi) are rejected regardless of the declared content type.
What's next
- Folders — group assets into a tree and move files between folders.
- Serve & transform images — deliver and resize images from your domain.
- Signed URLs & access — share private files securely.