ReachleeReachlee
Get started
Error reference

Instagram error 1545133:
the one that costs real money

Meta won't deliver media or rich templates to people who don't follow you, and a tappable button counts as media. Since a comment grants exactly one private reply, a button-led first DM doesn't just fail — it spends your only attempt, for most of the audience a good reel brings you.

Updated September 2026 · Human-verified
From a September 2026 audit of production send attempts · updated September 2026

The short answer

Error code 2 with subcode 1545133 means Meta refused to deliver media or a rich template to a recipient who does not follow the sending Instagram account. Button templates count as media, so a first private reply that leads with a tappable link button is rejected for every non-follower. Because Meta grants only one private reply per comment, that failed attempt is spent. The fix is to send plain text with the URL written out and save rich formats for after the person replies.

1Full error shape: code 2, subcode 1545133 — media or rich content refused to a non-follower
2A button template counts as media; plain text containing a URL does not
3One private reply per comment means a failed rich send consumes the only attempt you had
4In our September 2026 audit, every plain-text retry after a 1545133 also had no channel left to send on
5On a reel that reached beyond your followers, most commenters are non-followers — so this hits the majority
6Dashboards frequently report the attempt as sent, which is why the loss is usually invisible
7Correct handling: lead every opening DM with plain text, unconditionally
8Once the person replies and the 24-hour window opens, buttons and media work normally

Why this is the expensive one

Most send errors cost you one recipient. This one costs you the recipient and the attempt, and it does so precisely where your traffic is most valuable. Consider what happens when a reel performs: it reaches well outside your follower base, which is the entire point, and the comment section fills with people who have never followed you. If your automation opens with a nice button template carrying your link, Meta rejects the send for every one of them with subcode 1545133. Meanwhile the comment has been claimed and Instagram's one-reply-per-comment rule means there is no second attempt to make. In our September 2026 audit of a day of production sends, every plain-text fallback after a 1545133 also found no channel available — the opportunity was already gone. So the silent outcome is that your best-performing content converts your existing followers and delivers nothing at all to the new audience it won.

  • The failure lands hardest exactly where reach is widest — non-followers on a viral post
  • The comment's single private reply is consumed by the rejected attempt
  • A plain-text retry afterwards generally has nowhere left to send
  • Many tools mark the attempt as sent, so the loss never appears in reporting
  • Followers receive your DM normally, which makes the problem look intermittent rather than systematic

What Meta will and won't deliver to a non-follower

What you sendCounts as media?Delivered to a non-follower?
Plain text with the URL typed outNoYes — this is the reliable opening format
Button template with a web-link buttonYesNo — rejected with subcode 1545133
Generic or product template, carouselYesNo — rejected with subcode 1545133
Image, video or other attachmentYesNo — rejected with subcode 1545133
Any of the above, after they reply to youYesYes — the 24-hour window is open and the restriction no longer applies

The rule is about the relationship, not the content: the same button template that fails for a non-follower delivers fine to a follower. This is why the problem presents as "it works for some people" rather than as a clean failure.

How it works

How to build around it

01

Make every opening DM plain text

Not conditionally, not with a fallback — just always. You cannot reliably know whether a given commenter follows you at send time, and the cost of guessing wrong is the whole attempt. Write the URL out in the message body. It looks less polished and it reaches everyone, which is the trade worth making every time.

02

Put the link in the text, not behind it

A URL typed into a plain text message is not media, so it delivers to non-followers and remains tappable in Instagram's client. You lose the styled button and the tidy call-to-action label. You keep the click, from the entire audience rather than a fraction of it.

03

Ask a question so they reply

Their reply opens Instagram's 24-hour messaging window, and inside that window every rich format works — buttons, carousels, images, the lot. So the opening message's job is to be deliverable and to earn a response; the persuasive formatting belongs in the second message, which is also where it performs better.

04

Send rich content only inside an open window

Once the window is open you can use templates freely, which is the correct place for a product carousel or a styled booking button. Structuring your funnel this way means you never send a format that can be refused, rather than sending one and handling the rejection.

05

Check how your tool reports the failure

Ask whether a 1545133 shows up as a skip with a reason or gets folded into 'sent'. If a tool can't tell you how many opening DMs were refused for non-follower media, you have no way of knowing how much of your reach is being lost, and this is the single largest silent leak in comment-to-DM.

How we handle it

This audit changed the product. Reachlee now enforces a text-first rule on opening DMs: the first private reply to a comment is sent as plain text with the link written out, rather than as a button template, because the audit showed the rich-first approach was silently losing the majority of a viral post's audience and the fallback had nowhere to go. Rich formats are used after the conversation is open, where they're both permitted and more effective. Rejections are recorded as skips with a specific reason rather than counted as sends, so the number is visible rather than inferred. None of this is a competitive advantage we invented — it's Meta's rule, and every tool on the official API is subject to it. The difference is whether a tool discovered it before or after its customers lost a viral reel's worth of leads.

  • Opening DMs are plain text with the URL inline, always
  • Button templates, carousels and media are used after the user replies
  • 1545133 is recorded as a skip with a reason, never reported as sent
  • Applies to every tool on the official API — the rule is Meta's, not ours
The bottom line

Subcode 1545133 is Meta refusing media to someone who doesn't follow you, and its real cost comes from colliding with the one-private-reply-per-comment rule: the rejected attempt is the only attempt. On a post that reached beyond your followers, which is every post you actually want, that means a button-led opening DM delivers nothing to most of the audience while frequently reporting success. Lead with plain text and an inline URL, ask something that earns a reply, and use rich formats once the window is open. It's a small copy change that decides how much of your best content's reach ever reaches a DM.

FAQ

Error 1545133 — FAQ

What is Instagram error code 2 subcode 1545133?

It's Meta refusing to deliver media or rich content to a recipient who doesn't follow the sending Instagram account. The category is broader than images and video: button templates, generic and product templates, and carousels all count as media for this purpose. Plain text does not, even when it contains a URL. The restriction is about the follow relationship between the account and the recipient, so the identical message delivers fine to a follower and is rejected for a non-follower.

Why can't I just retry with plain text?

Because the attempt is usually already gone. Instagram grants exactly one private reply per comment, and the rejected rich send consumed it — in our September 2026 audit, every plain-text fallback attempted after a 1545133 found no channel left to send on. That's why the fix has to be preventative rather than reactive: make the opening message plain text in the first place, since there is no reliable second chance once the first attempt is spent.

Does a link button really count as media?

Yes, and this surprises almost everyone. A button template is a structured message rather than plain text, and Meta treats it within the same class of content it withholds from non-followers. So the friendly tappable button that makes your DM look professional is precisely what stops it from arriving. A URL typed into a plain text message avoids the restriction entirely and stays tappable in Instagram's client, which means you lose the styling and keep the click.

How do I know how many DMs this is costing me?

Look for whether your tool reports non-follower media rejections as a distinct skip reason. If it does, the number is directly visible. If it folds them into 'sent' or into a generic failure count, you can't measure it at all — which is the usual situation and the reason this problem stays hidden. As a rough sense of scale, on a post whose reach went well beyond your followers, non-followers are typically the majority of commenters.

Can I check whether someone follows me before sending?

Not reliably at send time, and designing around it isn't worth attempting. The Instagram API doesn't offer businesses a dependable follow-relationship check for an arbitrary commenter, and there's no follow webhook to maintain state from. Since the downside of guessing wrong is losing the entire attempt, the robust engineering choice is to treat every opening DM as if it's going to a non-follower and always send plain text.

When can I use buttons and carousels then?

As soon as the person replies to you. Their reply opens Instagram's 24-hour messaging window, and inside that window rich formats deliver normally regardless of whether they follow you. This is also where those formats do their best work — a product carousel shown to someone who has just expressed interest converts better than one pushed at a stranger. Structuring the funnel as plain text first, rich content second, means you never send a format that can be refused.

Reply to every comment.
Capture every lead.
In your sleep.

Free to start, no card needed. Set up your first automation in under a minute.

Built on Meta's official API · Cancel anytime