Skip to main content

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:

TypeMax size
Video5 GB
Images25 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.