Skip to main content

Supported media types

TypeCommon formatsMIME types accepted on upload
ImageJPG, PNG, GIF, WebPimage/jpeg, image/png, image/gif, image/webp
VideoMP4, MOVvideo/mp4, video/quicktime
Three upload paths share the same MIME set: WebM is intentionally excluded — every major social platform rejects it, so accepting it would just produce platform-specific publish failures.

Upload limits

TypeDefault capOverride (self-hosted)
Image10 MB per fileMEDIA_IMAGE_MAX_SIZE_MB
Video1 GB per fileMEDIA_VIDEO_MAX_SIZE_MB
MCP signed-URL upload50 MB per file (any type)MCP_UPLOAD_MAX_SIZE_MB
Files over 1 MB are sent in chunks (the dashboard streams them via Content-Range to the chunked upload endpoint) so big videos transfer reliably even on flaky connections. On self-hosted instances, raising the video cap also requires bumping PHP’s upload_max_filesize / post_max_size and any reverse-proxy body-size cap to match. The MCP upload path uses a tighter cap on purpose — files route through the app server before being written to the configured storage disk, so a smaller ceiling keeps a single worker from being tied up by huge transfers. Each signed URL is single-use and expires after 15 minutes (configurable via MCP_UPLOAD_URL_TTL_MINUTES).

Platform content types and media requirements

Each platform supports different content formats with specific media requirements. Use GET /content-types for the live, machine-readable version.

LinkedIn / LinkedIn Page

Content typeMediaMax filesNotes
linkedin_post / linkedin_page_postOptional1 image or 1 videoStandard text post with optional media
linkedin_carousel / linkedin_page_carouselRequiredUp to 20 imagesMulti-image swipeable post

X (Twitter)

Content typeMediaMax filesNotes
x_postOptional4 images or 1 videoX’s API doesn’t accept images + video mixed in the same post

Facebook

Content typeMediaMax filesAspectNotes
facebook_postOptional10 images or 1 videoStandard page post
facebook_reelRequired1 video9:16Short-form vertical video
facebook_storyRequired1 image or 1 video9:16Disappears after 24 hours

Instagram (and Instagram via Facebook)

Content typeMediaMax filesAspectNotes
instagram_feedRequired1 image or 1 video4:5Single-asset feed post — Instagram rejects empty posts at publish time
instagram_carouselRequiredUp to 10 images4:5Swipeable feed carousel (images only)
instagram_reelRequired1 video9:16Short-form vertical video
instagram_storyRequired1 image or 1 video9:16Disappears after 24 hours

TikTok

Content typeMediaMax filesAspectNotes
tiktok_videoRequired1 video9:16Short or long-form video
tiktok_photoRequiredUp to 35 images1:1Photo carousel — images only, no video

YouTube

Content typeMediaMax filesAspectNotes
youtube_shortRequired1 video9:16Vertical short

Threads

Content typeMediaMax filesNotes
threads_postOptionalUp to 10 images or 1 videoText post with optional media

Pinterest

Content typeMediaMax filesAspectNotes
pinterest_pinRequired1 image2:3Standard image pin
pinterest_video_pinRequired1 video9:16Video pin
pinterest_carouselRequiredUp to 5 images2:3Multi-image swipeable pin

Bluesky

Content typeMediaMax filesNotes
bluesky_postOptionalUp to 4 images or 1 videoText post with optional media

Mastodon

Content typeMediaMax filesNotes
mastodon_postOptionalUp to 4 images or 1 videoText post with optional media

Media ordering

Drag attachments in the post editor to reorder them. The order you set is the order they’ll appear on the social platform — important for carousels and multi-image posts.

File storage

Media files are stored on the disk configured by FILESYSTEM_DISK. Out of the box, TryPost ships with these drivers:
DriverUse case
publicSelf-hosted setups serving files directly from ${APP_URL}/storage — requires php artisan storage:link
s3AWS S3
r2Cloudflare R2 (S3-compatible — the default in shipped config)
Any S3-compatible service (MinIO, DigitalOcean Spaces, Backblaze B2) works under the s3 driver with the right endpoint.
On TryPost Cloud, media storage is handled automatically. Self-hosted users should configure cloud storage for production — see the Configuration guide.

FAQ

10 MB per image and 1 GB per video by default. Files over 1 MB are sent through the chunked upload endpoint via Content-Range headers. Self-hosters can raise the caps with MEDIA_IMAGE_MAX_SIZE_MB / MEDIA_VIDEO_MAX_SIZE_MB.
Each post stores its own media records. To reuse the same image, upload it again or copy from the asset library.
The media records are removed along with the post.
TryPost uploads media to social platforms as-is. Each platform applies its own compression and resizing rules afterwards.