> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.simplified.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.simplified.com/_mcp/server.

# Assets and uploads

Assets give your images, videos, audio, and PDFs a workspace identifier. You can
upload a file from your computer or import it from a URL, then retrieve its
processed file URL for publishing or editing.

## 1. Choose upload or import

Upload a local file:

```bash
simplified assets:upload --file ./campaign-hero.png --name "Campaign hero"
```

Import a file already hosted online:

```bash
simplified assets:import \
  --url "https://cdn.example.com/campaign-hero.png" \
  --name "Campaign hero"
```

The remote URL must be accessible to the service. A URL that only works in your
signed-in browser is not sufficient. Local uploads support PNG, JPG/JPEG, GIF,
WebP, BMP, TIFF, MP4, MOV, AVI, MKV, WebM, MP3, WAV, and PDF files.

## 2. Save the asset ID

Both commands return an asset record while processing continues. Keep its `id`.
A successful upload or import submission does not mean the file is ready for the
next operation.

## 3. Check processing

```bash
simplified assets:get --id "ASSET_UUID"
```

Repeat the read until the asset reaches ready status (`status: 4`) and provides
its `file_url`. If processing reports a failure, investigate the source file
instead of repeatedly creating new copies. Asset types identify images (`0`),
video (`2`), audio (`8`), and PDFs (`17`).

## 4. Pass the right value to the next command

| Destination                                            | Value to use                                         |
| ------------------------------------------------------ | ---------------------------------------------------- |
| `posts:create --media` or `posts:update-draft --media` | Reachable media URL, such as `file_url`              |
| Image or video editing `--url`                         | Reachable source file URL                            |
| AI generation `--reference-images`                     | Asset UUIDs                                          |
| AI video model fields typed as files                   | Asset UUIDs, even when the field name ends in `_url` |
| LinkedIn document `additional.linkedin.document.url`   | A reachable PDF URL, not the UUID                    |

For example, create a draft using the processed image's URL:

```bash
simplified posts:create --accounts "ACCOUNT_ID" --action draft \
  --content "A closer look at our new collection." --media "IMAGE_FILE_URL"
```

For AI reference generation, use the ID instead:

```bash
simplified ai-image:generate --model "REFERENCE_MODEL_ID" \
  --capability reference_image --reference-images "ASSET_UUID" \
  --prompt "Create a studio product photograph using this reference." --wait
```

Choose an available model through [model discovery](/cli/ai-image-generation).
If a stored URL is signed and has expired, fetch the asset again for a fresh URL.

## Organize files in a workflow

Keep the original asset ID in your job records along with any generated output
IDs. This lets you fetch current URLs later without importing the same source
again. Use [projects](/cli/projects-and-items) to organize the deliverables and
[brand context](/cli/brand-kits-and-context) to keep the guidance for creating them.