Media library
The media library is your central store for images, videos, and documents. Upload once, reuse across any number of posts, and organize into collections.
Storage
Media is stored in object storage (R2) and served back with full HTTP byte-range
support, so videos stream and seek correctly in <video> elements. Uploads use
a presigned URL flow: the client requests a signed upload URL, PUTs the
file directly to storage, and then registers the media record. In local
development (no storage binding), a filesystem fallback is used.
Upload ceilings
Regardless of platform, the largest file we accept is:
| Type | Max size |
|---|---|
| Video | 5 GB |
| Images | 25 MB |
| Documents (PDF) | 100 MB |
Your plan may impose a lower ceiling. Per-platform limits are often lower still — and we enforce the smaller of the two when the media is attached to a post. See platform limits.
Collections
A collection is an album — a named group of related media. Use collections to organize assets by campaign, content pillar, season, or client. Collections can be attached to AI agents as the pool they're allowed to draw from when generating posts.
Using media in posts
When you attach media in the composer, each file is validated against the destination platform's constraints for that post type — so a video that's fine as a YouTube long-form upload (≤4 h) will be flagged if you also target it at a YouTube Short (≤3 min).
Media attaches with a sortOrder that preserves the order you added it, which
matters for platforms like Instagram carousels and Reddit galleries.
AI in the library
The media library integrates with the AI backend for:
- Captions — generate a caption from an image or video.
- Vision descriptions — auto-describe image content for accessibility and search.
- Thumbnails — generate a thumbnail from a video.
- Enhancement — improve media before publishing.
These actions consume credits.
Related
- Compose — where media gets attached.
- Platform limits — per-platform constraints.
- Media API — upload via the REST API.