Media
Media collections hold one or more renditions for a publication. Use external media when rendition URLs are already hosted elsewhere. Use the managed upload flow when the service should reserve, receive, and complete managed rendition uploads.
Authentication
Every route requires a bearer token and the listed publication capability. Lists and new media require a publication selector. Existing media_id values identify the publication; an accompanying selector must match.
Routes
| Route | Methods | Capability | Required input | Optional input and behavior | Success result |
|---|---|---|---|---|---|
/media/list |
GET, POST |
media.list |
Publication selector | state, kind, pagination |
Paginated media_items. |
/media/get |
POST |
media.list |
media_id |
Matching publication selector | media. |
/media/external/save |
POST |
media.save |
Create: publication selector, kind, renditions; update: media_id, kind |
Shared media fields | Saved ready media. |
/media/managed/reserve |
POST |
media.save |
Create: publication selector, kind, managed rendition data; update: media_id, kind |
Shared media fields | Reserved media. |
/media/managed/save |
POST |
media.save |
media_id, kind |
Shared media fields and managed rendition updates | Saved media. |
/media/managed/complete |
POST |
media.save |
media_id, rendition_id |
Multipart file upload |
Completed media. |
/media/rendition/delete |
POST |
media.delete |
media_id, rendition_id |
Matching publication selector | Updated media. |
/media/delete |
POST |
media.delete |
media_id |
Matching publication selector | Deleted media_id. |
Media object
{
"media_id": "MEDIA_UUID",
"publication_id": "PUBLICATION_UUID",
"slug": "launch-image",
"kind": "image",
"state": "ready",
"title": "Launch image",
"alt_text": "A control room at sunset",
"caption": "M7 launch image",
"metadata": null,
"renditions": [
{
"rendition_id": "RENDITION_UUID",
"source": "external",
"state": "ready",
"role": "card",
"url": "https://cdn.example.com/launch-card.webp",
"mime_type": "image/webp",
"byte_size": 123456,
"width": 1200,
"height": 675,
"duration_ms": null,
"metadata": null
}
]
}
kind is one of image, video, audio, document, or embed. A media slug is unique in its publication and defaults to the generated media ID when omitted.
External media
Create external media with an array of one or more renditions:
{
"publication_slug": "engineering-notes",
"kind": "image",
"slug": "launch-image",
"title": "Launch image",
"alt_text": "A control room at sunset",
"renditions": [
{
"role": "card",
"external_url": "https://cdn.example.com/launch-card.webp",
"mime_type": "image/webp",
"byte_size": 123456,
"width": 1200,
"height": 675
}
]
}
Each external rendition requires role, external_url, mime_type, and byte_size; original_filename, width, height, duration_ms, and metadata are optional. Roles must be unique within the media collection. Updating with renditions replaces the collection's external renditions; omit renditions to retain them.
Managed upload flow
- Call
/media/managed/reservewith one or more managed rendition descriptions. Each rendition needsoriginal_filename,mime_type, andbyte_size;roledefaults tofull, andfilename, dimensions, duration, and metadata are optional. - For each reserved rendition, submit a multipart request to
/media/managed/completewithmedia_id,rendition_id, andfile. The uploaded file size must match the reservedbyte_size. - Use
/media/managed/saveto update shared media fields or optionalmime_type,width, andheightfor existing managed rendition IDs.
{
"publication_slug": "engineering-notes",
"kind": "image",
"title": "Launch image",
"renditions": [
{
"role": "full",
"original_filename": "launch.webp",
"mime_type": "image/webp",
"byte_size": 123456
}
]
}
Shared fields for all save routes are slug, kind, title, alt_text, caption, and metadata. Empty text values clear optional text fields; metadata must be an object, array, or null. Publications, posts, and categories accept only ready media. Author profiles accept a media UUID as an avatar reference. A referenced media collection cannot be deleted until those references are removed.