# Upload asset Upload one or more files to a workspace as assets. Files are uploaded as multipart/form-data. Each uploaded file becomes an asset in the workspace. For video files, a DASH streaming version is automatically generated. The returned uploadPath on each asset is the CDN URL that can be used directly in videosToAdd[].url when creating a project. Endpoint: POST /auth/workspace/{workspaceId}/assets Version: 1.2.0 Security: ShuffllApiKey ## Path parameters: - `workspaceId` (string, required) Unique identifier for the workspace Example: "693fb82afd8d1c43077ba0fe" ## Query parameters: - `folder` (string) Target folder path for the uploaded file (defaults to /) Example: "/" ## Request fields (multipart/form-data): - `file` (string) The file to upload. Supported types — images (JPEG, PNG, GIF, WebP, SVG), videos (MP4, MOV, WebM), audio (MP3, WAV, OGG), and PDFs. ## Response 200 fields (application/json): - `uploaded` (array) Array of successfully uploaded assets - `uploaded._id` (string) Unique asset identifier Example: "6947b539cc95ea68854bb523" - `uploaded.displayName` (string) Display name of the asset Example: "product-demo.mp4" - `uploaded.uploadPath` (string) CDN URL of the asset file. Use this value as videosToAdd[].url when creating a project. Example: "https://content.shuffll.com/workspace/product-demo.mp4" - `uploaded.dashPath` (string) MPEG-DASH streaming URL (available for video assets after processing) Example: "https://content.shuffll.com/workspace/product-demo.mpd" - `uploaded.mimetype` (string) MIME type of the file Example: "video/mp4" - `uploaded.type` (string) Asset category, automatically determined from MIME type Enum: "image", "video", "audio", "pdf", "folder" - `uploaded.folder` (string) Folder path the asset belongs to Example: "/" - `uploaded.userEmail` (string) Email of the user who uploaded the asset Example: "user@example.com" - `uploaded.createdAt` (string) Upload timestamp Example: "2025-12-15T07:26:34.333Z" - `uploaded.aspectRatio` (string) Aspect ratio of the asset (for images and videos) Example: "16:9" - `uploaded.analytics` (object) AI-generated analysis of the asset content - `uploaded.analytics.description` (string) AI-generated description of the asset - `uploaded.analytics.videoPrompt` (string) Suggested video prompt based on asset content - `uploaded.analytics.directions` (string) Suggested usage directions - `uploaded.analytics.textHeaderPosition` (number) Suggested text overlay position ## Response 400 fields (application/problem+json): - `type` (string) Example: "object" - `title` (string) Example: "Validation failed" - `message` (string) Example: "Bad Request" ## Response 401 fields (application/problem+json): - `type` (string) Example: "object" - `title` (string) Example: "Validation failed" - `message` (string) Example: "Bad Request"