Automate Instagram Carousels with n8n or Make

You want to automate Instagram carousels. You set up your n8n or Make.com workflow, connect the Facebook Graph API, and hit "Run." Then it breaks.

You are not alone in this. Instagram carousel automation is the single most discussed pain point on both the n8n community forumarrow-up-right and Make.com community forumarrow-up-right. Dozens of threads describe the same problems: media upload failures, wrong image ordering, mixed media errors, and workflows that stop working overnight because Meta changed the API.

This post breaks down why carousel automation is so fragile and walks through a simpler approach.

Why the Facebook Graph API makes carousels hard

Posting a single image to Instagram through the Graph API takes two API calls: create a media container, then publish it. Posting a carousel takes at least four:

  1. Create a media container for image 1.

  2. Create a media container for image 2.

  3. Repeat for each additional image (up to 20).

  4. Create a carousel container referencing all media container IDs.

  5. Publish the carousel container.

Each step returns an ID you pass to the next step. If any step fails, the entire carousel fails. Common failure modes include:

  • Image URLs returning a 403 or redirect (Google Drive links are a frequent offender).

  • Mixed media types (images and videos in the same carousel) triggering undocumented errors.

  • 9:16 aspect ratio images silently rejected.

  • Media containers expiring if you wait too long between steps.

  • Image order changing because API calls resolve in a different order than expected.

On Make.com, these errors appear as "GraphMethodException" or "media upload has failed with error code 0." On n8n, the Facebook Graph API node often returns a generic 400 error with no useful message.

The simpler approach: one API call

Instead of chaining 5+ API calls to the Facebook Graph API, you send one request to the Blotato Publish APIarrow-up-right:

That is it. Pass an array of image URLs in mediaUrls. Blotato creates the carousel, handles media container creation, manages the upload sequence, and publishes. Image order matches the array order. Mixed media (images and videos) works. No Graph API debugging required.

Step-by-step: n8n workflow

  1. Install the Blotato community nodearrow-up-right in n8n (Settings > Community Nodes > search "Blotato").

  2. Add a trigger node (Google Sheets, Airtable, webhook, or a schedule).

  3. Add a Blotato node and select the "Publish Post" operation.

  4. Set the platform to Instagram.

  5. Pass your image URLs as an array in the mediaUrls field.

  6. Write your caption in the text field.

  7. Run the workflow.

The Blotato node returns a postSubmissionId. The post publishes asynchronously, so add a second Blotato node with the "Get Post Status" operation if you need to confirm it went live.

For a full video walkthrough, see: n8n Slideshows and Carouselsarrow-up-right

Step-by-step: Make.com scenario

  1. Import the Blotato Make blueprintarrow-up-right or add an HTTP module manually.

  2. Set the HTTP module to POST https://backend.blotato.com/v2/posts.

  3. Add the header blotato-api-key with your API key.

  4. Set the request body with your accountId, mediaUrls array, and caption.

  5. Run the scenario.

For a full walkthrough, see: Make Slideshows and Carouselsarrow-up-right

Carousels on other platforms too

The same mediaUrls array approach works for carousel posts on other platforms:

Platform
Carousel support
Notes

Instagram

Up to 20 images or videos

Mixed media supported

LinkedIn

Up to 20 images

Images only

TikTok

Up to 35 images

Images only, set title in target

Facebook

Up to 20 images or videos

Set pageId in target

You do not need separate workflows per platform. Change platform and targetType, and the same mediaUrls array works.

Forum threads referenced

These are the community discussions that prompted this post:

Last updated