Media
Upload rendered JPEGs with `POST /api/v1/media`; optional `portfolio_id` on create attaches to a portfolio in one step.
Create media
POST /api/v1/media
Authorization: Bearer …
Content-Type: multipart/form-data
Idempotency-Key: …
| Field | v1 |
|---|---|
| File | Rendered JPEG (Lightroom export) |
title | Optional; defaults from filename |
portfolio_id | Optional; requires portfolios:write; preferred for confidential portfolios |
The platform enriches EXIF from the uploaded file. Caption/description on create and RAW uploads are not in v1.
Read media
GET /api/v1/media/{id}
Requires media:read and workspace access to the row.
v1 limits
- Raster uploads only (no video on this endpoint in v1)
- No campaign, Impact Record, or page HTML creation via ingest client
- Same privacy rules as dashboard upload (IUCN, embargo,
storage_class)
Resumable/large-file upload sessions may ship later (POST …/media/uploads → complete).
