For the complete documentation index, see llms.txt. This page is also available as Markdown.

Limitations

Instagram posts need an image or video

Instagram requires every post to include at least one image or video. A text-only caption has nothing for Instagram to publish, so the post fails. This is not a credits issue. If your Instagram post failed to publish and it has no media, add a photo or video and publish again.

Using the Blotato web app: Open the post and click the Photo/Video button to add an image or video before you publish.

Using the Blotato API or n8n/Make.com: Include at least one URL in mediaUrls for Instagram posts.


Instagram post fails: "The media could not be fetched from this URI"

This error comes from Instagram/Meta, not Blotato. Meta tried to download one of your images and rejected it. The Facebook link inside the error is Meta's generic media-spec page. This is not a credits issue. For media hosted by Blotato (a database.blotato.io URL), it is also not a public-access problem, so reuploading the file or changing the URL does not help.

Fix it in this order:

  1. Retry the post first. These errors clear on a second attempt more often than not.

  2. Check the aspect ratio. Every Instagram image must be between 4:5 (portrait) and 1.91:1 (landscape). Square (1:1) is safest.

  3. For carousels, the first slide sets the crop. Instagram crops every slide to match the first image. If one slide is too tall or too wide, the whole carousel fails. Make the first slide the aspect ratio you want for all slides.

  4. Use JPEG instead of PNG. Instagram accepts both, but JPEG publishes more reliably for carousels.

  5. Make sure each image is at least 320 pixels wide.

For the full image specs, see Social Platform Requirements.


"AI Generated" label

Meta does not expose the "AI Generated" content label through their API. You cannot add this label to Instagram posts published through Blotato or any third-party tool.


Music on posts, reels, and carousels

Instagram does not let outside tools reach its music library. Any music has to already be inside your video file before Blotato posts it, which is why there is no music button in the publishing step.

Reels: If your video already has audio, it will play when posted. To add a music track before posting, use the Blotato video editor — click "Audio" in the left sidebar to upload a music file, then export the video with the audio included.

Single image posts and carousels: Music cannot be added through Blotato. Publish your post first, then open it in the Instagram app and add music there.

Video slides inside a carousel: Instagram strips the audio from video slides when you post them inside a carousel, even when the audio is baked into the video file. This is an Instagram-side limitation, not a Blotato issue. To keep the sound, post the video on its own as a Reel instead of inside a carousel.


Story captions and text overlays

Instagram Stories do not support captions through Meta's publishing API. Text entered in an API, MCP, n8n, or Make.com caption field does not appear on the published Story.

To publish a Story with visible text:

  1. Add the text to the image or video before publishing.

  2. Publish the finished media as a Story.

For REST API requests, set the required content.text field to "". See Meta's media-container reference.

Story link stickers

Instagram's API does not yet support adding link stickers (clickable URLs) to Stories published via third-party tools. This is an Instagram-side limitation — it applies to all Instagram-API-based publishers, not just Blotato.

If you need a link sticker on a Story:

  1. Publish the Story through Blotato as normal.

  2. Open the Instagram app and add the link sticker manually to the published Story.

Once Instagram opens this up in their API, Blotato will integrate it.


Collaborators on carousels

Instagram applies a collaborator tag to a carousel as a single unit, not to each photo or video inside it. Because of this, adding collaborators to a carousel (multi-image or multi-video) post is not supported through Blotato - the post fails with an error like The param collaborators is not allowed for carousel child.

Collaborator tagging does work on single image posts and reels.

If you need a collaborator on a carousel:

  1. Publish the carousel through Blotato as normal (without collaborators).

  2. Open the Instagram app and add the collaborator to the published post.


Direct messages and DM automations

Instagram sets the rules below. Blotato passes them through, so a message outside an allowed window fails.

Who you reach, and when

  • You can only reply within 24 hours of the person's last message.

  • You may send one private reply per comment, within 7 days of the comment. A comment that already received a private reply, through Blotato or another tool, rejects the second reply.

  • Cold outreach is not supported. Instagram does not let a third-party tool message someone who never contacted you.

  • Messaging needs a Professional or Business Instagram account with the messaging permission granted. See Connect Instagram.

Message length

Instagram measures message length in bytes, not characters: 1000 bytes. Emoji and accented characters take several bytes each, so a message well under 1000 characters sometimes exceeds the limit.

With buttons attached, the limit drops to 640 characters.

Buttons and quick replies

Limit
Value

Buttons per message

3

Quick-reply chips per message

13

Button or chip label

20 characters

Postback or chip payload

1000 characters

Message text with buttons

640 characters

  • Buttons render in the Instagram mobile app only. A recipient reading the DM on instagram.com in a desktop browser sees the message text without the buttons.

  • To work around Instagram's button display issue for desktop users, you can include a plain-text URL in the message text instead. Send a button or a plain-text URL, not both. A message carrying both leaves the URL unclickable on desktop. For a desktop audience, drop the button and put the URL in the message text.

  • Buttons and quick replies are mutually exclusive. A message carries one or the other.

  • Instagram supports web_url and postback buttons. Phone buttons are not supported.

  • Quick-reply chips disappear once the person taps one or types their own message.

  • Blotato subscribes your account to the postback webhook when you connect it. If you connected your account before buttons were launched, reconnect to start receiving postback events. The same applies to the follow-gate confirm button: an account connected before DM automations and follow gating landed does not reliably receive button taps until you reconnect.

See Buttons and Quick Replies.

DM automations

  • A comment trigger answers with a private reply, so the 7-day and one-per-comment rules apply.

  • A message trigger answers within the 24-hour window.

  • Automation buttons you author are link buttons only. For postback buttons or quick replies, send the message yourself. The follow-gate button is a postback button Blotato manages, and you set its label only.

  • Per-post targeting covers posts published through Blotato only. The post picker never lists a post or reel published directly in the Instagram app. For one of those, watch any post and match on the keyword the post asks people to comment. See Targeting a Specific Post.

Follow gate

Instagram is the only platform that supports a follow gate.

Limit
Value

Gate message length

640 characters

Confirm button label

20 characters

Reply window

30 days

Confirmed follow reused for

30 days

  • The gate message always goes out before the check. Instagram only exposes follower status once the person opens a DM thread with your account.

  • Someone who never answers inside the 30-day window leaves the run as expired.

  • Blotato subscribes your account to button-tap events at connect time. An account connected before DM automations and follow gating landed does not reliably receive taps on the confirm button, and runs stall until they expire. Reconnect the account to fix it.

  • If the gate message arrives but the next message does not send after a button tap, check Meta conversation routing. Another app might control the conversation and block Blotato's follow-up message. The first private reply still arrives because Meta handles private replies to comments separately. Follow the conversation routing checklist.

  • The confirm button renders in the Instagram mobile app only, so a desktop reader sees the gate message with nothing to tap. Blotato runs the follower check on the person's next text DM, whatever it says, so ask for a typed reply in the gate message text, for example "Reply FOLLOWING once you have."

Email gate

  • The gate reads the first email address out of the reply text. Blotato checks the shape of the address, not whether the mailbox exists.

  • A reply holding no email address returns the gate message.

  • On automations published after September 14, 2026, a contact with an email already on file skips the gate.

  • Blotato saves the address to the contact record and delivers it through the automation webhook.

See DM Automations.

Not supported

  • Story replies as a distinct trigger. A reply to your story arrives as a normal DM and fires a message trigger.

  • Messaging on a Personal Instagram account.

  • Starting a run or answering a gate with a message with no text, such as a photo, sticker, voice note, or reaction.

  • Reading messages older than 45 days. Blotato retains messages for 45 days and does not backfill.

Last updated