Instagram publishing API
LivePublish a photo or video to an Instagram professional account through the Instagram Login API. No Facebook Page is required.
Connect an account and publish today.
What this channel accepts
instagram:<ig-user-id>Publish to Instagram
One request shape, the same across every channel. Register media first with POST /v1/media, then pass the handles it returns.
POST /v1/posts returns 202 with a post id; the publish itself is asynchronous.
const res = await fetch("https://creasionapp.com/v1/posts", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.CREASION_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"accounts": [
"instagram:17841400000000000"
],
"content": "New collection, shot on film.",
"media": [
"media_01JQ8ZR4X7"
]
}),
});
// 202 Accepted: the post is queued. Poll GET /v1/posts/{id}
// or wait for the post.completed webhook.
const { id } = await res.json();Before you integrate
Media is mandatory
Instagram has no text-only post. A caption without media is refused before any request leaves Creasion, rather than failing at the platform.
Container, then publish
We create a media container, poll until Instagram reports FINISHED, then publish. Publishing early returns error 9007, so the wait is deliberate.
Knowing what happened
Publishing is asynchronous, so the create call returns before the post exists on Instagram. Poll GET /v1/posts/{id} or register a webhook and receive post.completed instead. When a post targets several accounts, each destination reports its own result, so a partial success names exactly which one failed and why.