# Assets ## Download `$ beeper-desktop-cli assets download` **post** `/v1/assets/download` Download a Matrix asset using its mxc:// or localmxc:// URL to the device running Beeper Desktop and return the local file URL. ### Parameters - `--url: string` Matrix content URL (mxc:// or localmxc://) for the asset to download. ### Returns - `AssetDownloadResponse: object { error, srcURL }` - `error: optional string` Error message if the download failed. - `srcURL: optional string` Local file URL to the downloaded asset. ### Example ```cli beeper-desktop-cli assets download \ --url mxc://example.org/Q4x9CqGz1pB3Oa6XgJ ``` ## Upload `$ beeper-desktop-cli assets upload` **post** `/v1/assets/upload` Upload a file to a temporary location using multipart/form-data. Returns an uploadID that can be referenced when sending messages with attachments. ### Parameters - `--file: string` The file to upload (max 500 MB). - `--file-name: optional string` Original filename. Defaults to the uploaded file name if omitted - `--mime-type: optional string` MIME type. Auto-detected from magic bytes if omitted ### Returns - `AssetUploadResponse: object { duration, error, fileName, 6 more }` - `duration: optional number` Duration in seconds (audio/videos) - `error: optional string` Error message if upload failed - `fileName: optional string` Resolved filename - `fileSize: optional number` File size in bytes - `height: optional number` Height in pixels (images/videos) - `mimeType: optional string` Detected or provided MIME type - `srcURL: optional string` Local file URL (file://) for the uploaded asset - `uploadID: optional string` Unique upload ID for this asset - `width: optional number` Width in pixels (images/videos) ### Example ```cli beeper-desktop-cli assets upload \ --file file ``` ## Upload Base64 `$ beeper-desktop-cli assets upload-base64` **post** `/v1/assets/upload/base64` Upload a file using a JSON body with base64-encoded content. Returns an uploadID that can be referenced when sending messages with attachments. Alternative to the multipart upload endpoint. ### Parameters - `--content: string` Base64-encoded file content (max ~500MB decoded) - `--file-name: optional string` Original filename. Generated if omitted - `--mime-type: optional string` MIME type. Auto-detected from magic bytes if omitted ### Returns - `AssetUploadBase64Response: object { duration, error, fileName, 6 more }` - `duration: optional number` Duration in seconds (audio/videos) - `error: optional string` Error message if upload failed - `fileName: optional string` Resolved filename - `fileSize: optional number` File size in bytes - `height: optional number` Height in pixels (images/videos) - `mimeType: optional string` Detected or provided MIME type - `srcURL: optional string` Local file URL (file://) for the uploaded asset - `uploadID: optional string` Unique upload ID for this asset - `width: optional number` Width in pixels (images/videos) ### Example ```cli beeper-desktop-cli assets upload-base64 \ --content x ``` ## Serve `$ beeper-desktop-cli assets serve` **get** `/v1/assets/serve` Stream a file given an mxc://, localmxc://, or file:// URL. Downloads first if not cached. Supports Range requests for seeking in large files. ### Parameters - `--url: string` Asset URL to serve. Accepts mxc://, localmxc://, or file:// URLs. ### Example ```cli beeper-desktop-cli assets serve \ --url x ```