# 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 forum](https://community.n8n.io) and [Make.com community forum](https://community.make.com). 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 API](https://help.blotato.com/api/api-reference/publish-post):

```json
{
  "post": {
    "accountId": "your-account-id",
    "content": {
      "text": "Your carousel caption here",
      "mediaUrls": [
        "https://example.com/image1.jpg",
        "https://example.com/image2.jpg",
        "https://example.com/image3.jpg"
      ],
      "platform": "instagram"
    },
    "target": {
      "targetType": "instagram"
    }
  }
}
```

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 node](https://help.blotato.com/api/n8n/n8n-blotato-node) 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 Carousels](https://help.blotato.com/api/n8n/n8n-slideshows-and-carousels)

## Step-by-step: Make.com scenario

1. Import the [Blotato Make blueprint](https://help.blotato.com/api/make.com/make-slideshows-and-carousels) 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 Carousels](https://help.blotato.com/api/make.com/make-slideshows-and-carousels)

## 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:

* [Instagram: create post with multiple images](https://community.n8n.io/t/instagram-create-post-with-multiple-images/145251) (n8n)
* [How to automate Instagram carousel posts using Supabase uploads](https://community.n8n.io/t/how-to-automate-instagram-carousel-posts-using-supabase-uploads/112193) (n8n)
* [Problem with Instagram Carousel Post](https://community.make.com/t/problem-with-instagram-carousel-post-help-needed/49447) (Make)
* [Instagram Post Multiple Images/Videos in One Carousel](https://community.make.com/t/instagram-post-multiple-images-and-or-videos-in-one-carousel-post-without-knowing-how-many/50341) (Make)
* [Error Uploading Mixed Carousel to Instagram](https://community.make.com/t/error-uploading-mixed-carousel-images-videos-to-instagram-suddenly-stopped-working/81561) (Make)
* [Instagram Carousel Post Has the Wrong Sequence](https://community.make.com/t/instagram-carousel-post-has-the-wrong-sequence/87058) (Make)
