Skip to main content
The storage module uploads files and images to managed cloud storage and returns proxy URLs, plus reads and deletes existing files. Uploads are sent as multipart/form-data — pass a browser File (e.g. from an <input type="file">) or a Blob. There is no Uint8Array + mimeType path; the browser supplies the content type.
Uploads are attributed to the logged-in user automatically (from the token) — there is no userId param. A user may delete files they own; reads are project-scoped.

uploadFile

Uploads a generic file (PDF, video, document, …) without server-side processing.
Blob | File
required
The file to upload, as a browser File or Blob.
string[]
required
Storage path segments. The file is stored under the joined path with a UUID sub-folder appended, e.g. ["documents", "reports"]documents/reports/<uuid>/<filename>.
string
Filename for the multipart part. Defaults to the File.name, or "upload".
number
Display order when a record has multiple attachments.
object
Custom key-value data stored alongside the file record.
string
Associates the file with an entity for cascade deletion. Only one of entityId / commentId / spaceId may be set.
string
Associates the file with a comment for cascade deletion.
string
Associates the file with a space.
ReturnsPromise<UploadFileResponse>:

uploadImage

Uploads an image, processes it server-side, and stores the original plus all requested variants. The imageOptions object is a discriminated union on mode — the other fields depend on the mode you pick.
Blob | File
required
The image to upload, as a browser File or Blob. Must be a format the server can process.
ImageOptions
required
Image-processing configuration — a discriminated union on mode. The supported modes and their required fields:All modes also accept optional quality (1–100), format (webp | jpeg | png | original), stripExif (boolean), and fit (cover | contain | inside | outside). Dimension/size values are 50–10000.
string
Filename for the multipart part. Defaults to the File.name, or "upload".
string[]
Storage path segments. Defaults to ["images", "<fileId>"].
string
Associates the image with an entity. Only one of entityId / commentId / spaceId / eventId may be set.
string
Associates the image with a comment.
string
Associates the image with a space.
string
Associates the image with an event. Most apps attach event images inline via sublay.events.createEvent/updateEvent (cover / gallery); use this only to attach an image to an existing event out-of-band.
ReturnsPromise<UploadImageResponse>:

getFile

Fetches a file’s metadata and proxy URLs by ID. For images, an image extension (variants, processing details) is included. Reads are project-scoped.
string
required
The ID of the file to retrieve.
ReturnsPromise<GetFileResponse> — a flat projection carrying fileId, type, originalPath, originalSize, originalMimeType, position, metadata, createdAt/updatedAt, the optional association ids (userId, entityId, commentId, spaceId), and — for images — an image object with variants, processingStatus, format, quality, and exifStripped.

deleteFile

Deletes a file record and removes all associated storage objects (for images, every generated variant too).
string
required
The ID of the file to delete.
ReturnsPromise<void>
The call only succeeds when the logged-in user owns the file; otherwise it returns 403.