Instagram Posting API
A posting API for Instagram Business and Creator accounts, with per-target delivery status instead of a fire-and-forget response.
An Instagram posting API has to cover five content types — photo, video, Reels, carousel, and (with limits) Stories — plus token refresh, media validation, safe retries, and asynchronous delivery tracking, since Instagram processes a container before publishing. PostGate exposes all five formats through one POST /api/posts envelope with per-target delivery status, on top of Meta’s review-gated permission.
"Instagram posting API" usually means one of two very different things: Meta's own Graph API surface for publishing, or a managed layer like PostGate that sits on top of it. This page covers the surface — the format types a posting API for Instagram needs to support, how they map to one request envelope, and what a per-target delivery model buys you over a single fire-and-forget response.
How do five content types map to one endpoint?
Instagram's native Content Publishing API distinguishes photo, video, Reels, carousel, and (with its own limitations) Stories by the media_type value on the container. PostGate exposes all five through the same POST /api/posts envelope — you attach one or more media assets and let the target platform determine the format, rather than hand-building a different request shape per content type.
{
"post": { "body": "Behind the scenes." },
"profiles": ["pro_instagram123"],
"media": [
"https://cdn.example.com/clip.mp4"
]
}What does a posting API actually need to own?
Beyond accepting a body and media, a real posting API has to own: authentication and token refresh for the connected account, media validation before it reaches the platform (see media), safe retries so a network blip never double-publishes (see idempotency), and asynchronous delivery tracking, because Instagram does not publish synchronously — it processes a container first.
Why per-target status instead of one boolean?
A single "did it post" boolean falls apart the moment one request targets Instagram alongside other platforms, or Instagram itself rejects the content after accepting the container. PostGate models each destination as an independent target with its own status, retry count, and error — see the delivery lifecycle. A post can land as partial: published to some targets, failed on Instagram specifically, with the reason attached to that one target rather than buried in a generic failure.
What permission model sits underneath?
Whichever posting API you use, it is a proxy for Meta's own review-gated permission — see what the Content Publishing permission actually grants. A managed API does not remove that requirement; it means you connect through an app that has already cleared it instead of building and maintaining your own.
Frequently asked questions
What content types can an Instagram posting API publish?
Photo, video, Reels, carousel, and (with its own limitations) Stories — natively distinguished by the media_type value on the container. PostGate exposes all five through the same POST /api/posts envelope: you attach one or more media assets and let the target platform determine the format, rather than hand-building a different request shape per content type.
Why isn’t a single success boolean enough for Instagram posting?
It falls apart the moment one request targets Instagram alongside other platforms, or Instagram rejects the content after accepting the container. PostGate models each destination as an independent target with its own status, retry count, and error — a post can land as partial: published to some targets, failed on Instagram specifically, with the reason attached to that one target.
What does a posting API need beyond accepting a body and media?
Authentication and token refresh for the connected account, media validation before assets reach the platform, safe retries so a network blip never double-publishes, and asynchronous delivery tracking — because Instagram does not publish synchronously; it processes a container first.
Does using a managed posting API remove Meta’s permission requirement?
No. Whichever posting API you use, it is a proxy for Meta’s review-gated Content Publishing permission. A managed API does not remove that requirement — it means you connect through an app that has already cleared it instead of building and maintaining your own.
