← All articles
InstagramJuly 12, 20265 min read

Reels, feed video, stories: what the API actually allows

Not every format a person can post by hand is available to software. Knowing which is which saves a failed publish at the worst moment.

The Instagram app lets you post things the API does not, and the gap is not obvious until a scheduled post fails.

What can be published programmatically

  • Single images — yes
  • Carousels — yes
  • Reels — yes, as a REELS container
  • Stories — yes, as a STORIES container
  • Live — no

Each of these is a different container type. Sending a video as an image container does not fail helpfully; it fails obscurely.

The part that catches everyone

Instagram ingests video asynchronously. Creating the container returns an id immediately, but the video is not ready yet. Publishing straight away fails with an unhelpful error about the media not being available.

The container has to be polled until its status reaches FINISHED, which for a video can take tens of seconds. Any scheduler that skips this step works fine for images and never successfully posts a reel.

Media has to be reachable

You do not upload the file to Instagram directly. You give it a public URL and Instagram fetches it. If the URL needs a login, is behind a signed link that expires, or is served from a domain the platform will not fetch, the publish fails — and the error rarely says so plainly.

TikTok goes further: with pull-from-URL, the domain serving the video must be verified in the TikTok developer portal before anything will publish at all.

Stop watching the clock. Start drifting.

Get started free

Keep reading