## Upload `client.assets.upload(AssetUploadParamsbody, RequestOptionsoptions?): AssetUploadResponse` **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 - `body: AssetUploadParams` - `file: Uploadable` The file to upload (max 500 MB). - `fileName?: string` Original filename. Defaults to the uploaded file name if omitted - `mimeType?: string` MIME type. Auto-detected from magic bytes if omitted ### Returns - `AssetUploadResponse` - `duration?: number` Duration in seconds (audio/videos) - `error?: string` Error message if upload failed - `fileName?: string` Resolved filename - `fileSize?: number` File size in bytes - `height?: number` Height in pixels (images/videos) - `mimeType?: string` Detected or provided MIME type - `srcURL?: string` Local file URL (file://) for the uploaded asset - `uploadID?: string` Unique upload ID for this asset - `width?: number` Width in pixels (images/videos) ### Example ```typescript import BeeperDesktop from '@beeper/desktop-api'; const client = new BeeperDesktop(); const response = await client.assets.upload({ file: fs.createReadStream('path/to/file') }); console.log(response.width); ```