Most failed publishes are not bugs. They are a file the platform will not take, and an error message that does not say so plainly.
Images
- Instagram — JPEG or PNG, aspect between 4:5 and 1.91:1. Anything taller than 4:5 is cropped, which is why portrait photos lose their heads.
- Facebook — far more forgiving; almost anything reasonable posts.
- Threads — similar to Instagram.
- Telegram — accepts most things; very large files arrive as a document rather than a photo.
Video
- Instagram Reels — MP4 or MOV, H.264, up to 90 seconds, 9:16 for full screen
- TikTok — MP4 or WebM, portrait, and the file must be reachable at a public URL for API publishing
- Facebook — generous limits, both landscape and portrait
- Telegram — MP4 posts inline; other containers arrive as files
The constraint that surprises people
For API publishing you do not upload the file to the platform. You give it a public URL and the platform fetches it. If that URL requires a login, expires, or sits behind a domain the platform refuses, publishing fails — and the error rarely mentions the URL at all.
TikTok is strictest here: with pull-from-URL the serving domain must be verified in their developer portal before anything publishes.
One file, five networks
If you export once for everywhere, export 1080×1350 for images and 1080×1920 for video. Both survive every platform's cropping with the subject intact.
