Content

Media library

Upload and reuse images and video

Every image and video you upload to OpenPost lives in your Media library. Files are stored in your workspace’s S3 bucket, served via a CDN, and can be attached to any number of posts without re-uploading.

Upload from the dashboard

1

Open Media

Click Mediain the left nav. You’ll see a grid of every asset in your workspace.

2

Drag files in

Drop one or many files onto the page. Each file uploads in parallel. Progress bars show per-file status.

3

Tag and describe (optional)

Tags help you find assets later. Descriptions double as alt-text defaults when you attach the asset to a post — good for accessibility and SEO.

Supported formats

FieldTypeDescription
imagesJPEG, PNG, GIF, WebP, HEICHEIC is auto-converted to JPEG on upload.
videoMP4, MOV, WebMWe transcode to each channel's preferred codec before publish.
documentsPDFFor LinkedIn document posts only.
max image size30 MBLarger files are rejected — compress first.
max video size1 GBProduct-wide cap on upload. For larger files, upload natively on the platform.

Finding assets

The library supports:

  • Full-text search— searches filenames, tags, and descriptions.
  • Filters— by type (image/video/PDF), by tag, by upload date.
  • Sort— most recent, alphabetical, most-used in posts.

Attaching to a post

In the composer, click + Mediato open the picker. Select one or many assets. The same asset can be used across multiple posts — no duplicate uploads.

If a post uses a specific asset, deleting that asset from the library is blocked until the post is canceled or published. This prevents broken media on scheduled posts.

Upload via the API

For programmatic uploads, we use pre-signed S3 URLs — the file never passes through our servers, so uploads are fast and private.

bash
# 1. Request a pre-signed URL
curl -X POST https://api.openpost.so/v1/media/upload \
  -H "Authorization: Bearer $OP_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "filename": "hero.jpg", "content_type": "image/jpeg", "size": 2148304 }'
json
{
  "id": "med_abc123",
  "upload_url": "https://openpost-media.s3.amazonaws.com/...",
  "expires_at": "2026-04-20T14:10:00Z"
}
bash
# 2. PUT the file directly to S3
curl -X PUT "$UPLOAD_URL" \
  -H "Content-Type: image/jpeg" \
  --data-binary @hero.jpg

Once the upload completes, med_abc123 is ready to use in a POST /v1/posts call.

Lifecycle

  • Media is kept forever by default — until you delete it or cancel your workspace.
  • Deleted media moves to Trash for 30 days, then is permanently removed.
  • After workspace cancellation, all media is deleted from S3 after a 30-day retention window.

Transformations

OpenPost handles per-channel transformations automatically at publish time:

  • Aspect-ratio cropping (the composer previews the crop first).
  • Video codec transcode (e.g., HEVC → H.264 for X).
  • Image compression (below platform caps, above “looks bad”).
  • Watermark removal from TikTok re-uploads (where allowed).
Last updated April 2026 Edit this page