# Files — uploads, images, attachments

> **TL;DR for agents:** Upload: `POST /api/files/upload` (multipart, field name `file`). List by purpose: `/api/files/images`, `/api/files/avatars`, `/api/files/assets`, `/api/files`. Files are scoped to the tenant.

## Upload (multipart)

Scope: `files:write`. Standard multipart/form-data with field name `file`. The response includes `id`, `url`, `mime`, `size`.

```bash
curl -s -X POST "https://api.live-direct-marketing.online/api/files/upload" \
  -H "Authorization: Bearer $LDM_KEY" \
  -F "file=@/path/to/proposal.pdf"
```

## List files by purpose

```bash
curl -s "https://api.live-direct-marketing.online/api/files/images" -H "Authorization: Bearer $LDM_KEY"
curl -s "https://api.live-direct-marketing.online/api/files/assets" -H "Authorization: Bearer $LDM_KEY"
curl -s "https://api.live-direct-marketing.online/api/files"        -H "Authorization: Bearer $LDM_KEY"
```

## Attach to a dialog

See `/dialogs` → "Compose a brand-new outbound (with attachment)". Pass the `id` from the upload response as `attachments[].fileId`.
