Instagram API Error Codes for DM Automation (and How to Fix Them)

InstantDM processes 5 to 6 million+ automation events every single day through the official Meta Graph API. At that volume we see every error Instagram can throw, including plenty that Meta's docs barely mention.

The codes are identical no matter which tool you use. ManyChat, a custom Graph API build, InstantDM itself: same API, same errors. So here is the full list. The exact messages, including the non-English variants Instagram sends. What each one actually means, who can fix it, and how. Where the fix is a setting, there's a video.

The most common errors

Every error we observe, most common first. The percentage is each error's share of all the errors we see.

CodeSubcodeMeta's error messageShare of errorsFix
1002534025The comment is invalid for a private reply32.6%fix steps ↓
3681404169Based on previous use of this feature, your account has been temporarily blocked from taking this action.16.4%fix steps ↓
190Error validating access token: The session has been invalidated because the user changed their password or Facebook has 11.6%fix steps ↓
5082534122Invalid message id7.9%fix steps ↓
102534022This message is sent outside of allowed window.7.1%fix steps ↓
613Calls to this api have exceeded the rate limit.4.5%fix steps ↓
100Invalid keys "untrack_url" were found in param "name_placeholder[elements][0][buttons][0]".2.5%
21545133Service temporarily unavailable2.3%fix steps ↓
1002534001The thread owner has archived or deleted this conversation, or the thread does not exist.1.8%fix steps ↓
109031893049This user cant reply to this activity1.5%fix steps ↓
2002534041The account owner has disabled access to instagram direct messages.1.3%fix steps ↓
1002018001No matching user found1.1%fix steps ↓
2An unexpected error has occurred. Please retry your request later.1.1%fix steps ↓
200The account owner has disabled access to Instagram Direct Messaging.1.0%fix steps ↓
1001893060Invalid parameter1.0%
1002534014The requested user cannot be found.0.9%fix steps ↓
1002018047Upload attachment failure.0.8%fix steps ↓
6132534040Calls to this api have exceeded the rate limit. (localized)0.8%fix steps ↓
10900Activity already replied to0.6%fix steps ↓
1002534015Invalid message data0.5%
190460Error validating access token: The session has been invalidated because the user changed their password or Facebook has 0.5%fix steps ↓
5511545041This person isn't available right now.0.5%fix steps ↓
1002534052Empty text0.3%
1Please reduce the amount of data you're asking for, then retry your request0.3%fix steps ↓
109031893062This user cant reply to this activity0.3%fix steps ↓
1002534037The action is invalid since it's not the thread owner.0.2%fix steps ↓
102018300Message failed to send because another app is controlling this thread now.0.1%fix steps ↓
1002018034Message cannot be empty, must provide valid attachment or text0.1%
102018278This message is sent outside of allowed window. Learn more about the new policy here: https://developers.facebook.com/do<0.1%fix steps ↓
11545120An unknown error occurred<0.1%fix steps ↓
11545121An unknown error occurred<0.1%fix steps ↓
109041893050The page has messages disabled in the settings<0.1%fix steps ↓
2002534066Please check if access token has enough IG permissions granular scopes for IG private reply. Or verify if the comment id<0.1%fix steps ↓
1002018032Virheelliset tiedot<0.1%
5511893047This person isn't available right now.<0.1%fix steps ↓
1002534076The provided Url is invalid. Please check the format and validity of the url.<0.1%
10Application does not have permission for this action<0.1%
199An unknown error occurred<0.1%fix steps ↓
1002018397The button template is missing the buttons field. Please add buttons or use another message type.<0.1%
1002534038The length of the message sent is over 1000 characters<0.1%
1002018007Upload failed<0.1%fix steps ↓
241545137The requested resource does not exist<0.1%
1002018098Title is required for this quick reply content type<0.1%

Each error, explained and fixed

"The comment is invalid for a private reply" — code 100 / 2534025

Share of the errors we see: 32.6%

Instagram refuses to send a private reply to this specific comment. Causes: the comment is older than 7 days, the commenter's privacy settings block message requests, the comment was deleted, or a private reply was already sent to it.

Who can fix it: Mostly unavoidable per-comment; partially fixable in your automation setup.

{
  "error": {
    "message": "The comment is invalid for a private reply",
    "type": "IGApiException",
    "code": 100,
    "error_subcode": 2534025,
    "fbtrace_id": "AXxxxxxxxxxxxxxxx"
  }
}

How to fix

  1. Private replies only work within 7 days of the comment, so your automation needs to trigger on fresh comments.
  2. One comment can receive exactly one private reply. If your flow retries, dedupe first.
  3. Enable a Welcome/Opening message on the automation so blocked private replies can fall back to a normal DM once the user initiates.
  4. If the commenter's settings block message requests, no tool can override it — this is a hard Instagram privacy rule.
All wordings & translations of this error (10)
  • The comment is invalid for a private reply
  • El comentario no es válido para una respuesta privada
  • O comentário para uma resposta privada não é válido
  • Ten komentarz jest nieprawidłowy do odpowiedzi prywatnej
  • Der Kommentar ist für private Antworten ungültig
  • Tähän kommenttiin ei voi vastata yksityisellä vastauksella
  • Il commento non è valido per una risposta privata
  • Le commentaire n’est pas valide pour une réponse privée
  • Komentar tidak valid untuk balasan privat
  • Komentář nejde použít v soukromé odpovědi

"Your account has been temporarily blocked from taking this action" — code 368

Share of the errors we see: 16.4%

Instagram's anti-spam system has rate limited the account itself, not the API app. It happens when DMs or comment replies go out faster than Instagram thinks a human could plausibly manage for an account of that size and age.

Who can fix it: The account owner must wait; your platform should slow down sending.

{
  "error": {
    "message": "Based on previous use of this feature, your account has been temporarily blocked from taking this action.",
    "type": "OAuthException",
    "code": 368,
    "error_subcode": 1404169,
    "fbtrace_id": "AXxxxxxxxxxxxxxxx"
  }
}

How to fix

  1. Stop all automated sending from the account for 24 to 48 hours. Pushing through the block just extends it.
  2. Check Instagram app → Settings → Account Status for any listed restriction.
  3. When resuming, ramp up gradually: new or small accounts should send slower than large established ones.
  4. If your tool supports it, set a per-hour send cap. Blocks recur if the same pace resumes.
All wordings & translations of this error (2)
  • Based on previous use of this feature, your account has been temporarily blocked from taking this action.
  • Com base no uso anterior deste recurso, sua conta foi impedida temporariamente de executar essa ação.

"Error validating access token" — code 190 (all variants)

Share of the errors we see: 12.1%

The connection between the tool and the Instagram account is dead. Variants of this error tell you exactly why: password changed, session invalidated, app deauthorized, or an Instagram security checkpoint.

Who can fix it: Only the account owner can fix it — by reconnecting.

{
  "error": {
    "message": "Error validating access token: The session has been invalidated because the user changed their password or Facebook has changed the session for security reasons.",
    "type": "OAuthException",
    "code": 190,
    "fbtrace_id": "AXxxxxxxxxxxxxxxx"
  }
}

How to fix

  1. Reconnect the Instagram account in your automation tool (this issues a fresh token).
  2. "The user has not authorized application {your-app-id}" means the app was removed from the account. Reconnect and approve all permissions.
  3. "needs to complete a checkpoint" means Instagram wants verification. Log into Instagram directly, complete the prompt, then reconnect.
  4. "You cannot access the app till you log in to www.instagram.com" is the same story: log in natively first, clear any prompts, then reconnect.
  5. Password changes and Meta security sweeps invalidate sessions all the time. If DMs matter to your business, reconnect as soon as you're told.
All wordings & translations of this error (8)
  • Error validating access token: The session has been invalidated because the user changed their password or Facebook has changed the session for security reasons.
  • Error validating access token: Session has expired on {date}. The current time is {date}.
  • Error validating access token: The user has not authorized application {your-app-id}.
  • Error validating access token: This Instagram account needs to complete a checkpoint before it can access this app. To recover access, log in to www.instagram.com and follow the instructions.
  • Error validating access token: You cannot access the app till you log in to www.instagram.com and follow the instructions given.
  • Error validating access token: Session key is malformed because of invalid user id.
  • Invalid OAuth access token - Cannot parse access token
  • This Page access token belongs to a Page that is not accessible.

"This message is sent outside of allowed window" — code 10

Share of the errors we see: 7.2%

Instagram's Messaging API only allows business-initiated DMs within 24 hours of the user's last message (the '24-hour window'; comment private replies get 7 days). Outside it, sends are refused. That's policy, not a bug, and no tool can get around it.

Who can fix it: Automation logic. The send should never have been attempted.

{
  "error": {
    "message": "This message is sent outside of allowed window.",
    "type": "IGApiException",
    "code": 10,
    "error_subcode": 2534022,
    "fbtrace_id": "AXxxxxxxxxxxxxxxx"
  }
}

How to fix

  1. Reply flows must trigger promptly; a DM queued for hours can cross the window and die.
  2. Don't 're-engage' old conversations via the API. It's against the window policy and will always fail.
  3. For human support outside the window, reply manually from the Instagram app (not subject to the API window).
  4. Comment private replies have a 7-day window — same principle, longer clock.
All wordings & translations of this error (6)
  • This message is sent outside of allowed window.
  • This message is sent outside of allowed window. Learn more about the new policy here: https://developers.facebook.com/docs/messenger-platform/policy-overview
  • This message is being sent outside the allowed window. Learn more about the new policy here: https://developers.facebook.com/docs/messenger-platform/policy-overview
  • Bu mesaj izin verilen zaman aralığının dışında gönderilir.
  • Essa mensagem foi enviada fora do período permitido.
  • Este mensaje se envía fuera de la ventana permitida.

"Calls to this api have exceeded the rate limit" — code 613

Share of the errors we see: 5.2%

The Graph API messaging rate limit was hit. Instagram enforces per-account conversation-based limits (roughly proportional to your conversations in the last 24h; commonly discussed as ~200 calls/hour baseline for messaging). Bursts of comment activity — a viral post — are the classic trigger.

Who can fix it: Your platform should pace and retry; the account owner just needs a tool that does.

{
  "error": {
    "message": "Calls to this api have exceeded the rate limit.",
    "type": "IGApiException",
    "code": 613,
    "fbtrace_id": "AXxxxxxxxxxxxxxxx"
  }
}

How to fix

  1. Sends should queue with backoff, not fire instantly during comment spikes.
  2. Spread automation across the hour instead of bursting.
  3. If a giveaway or viral post is coming, expect throttling. The backlog clears if the tool retries; DMs are lost if it doesn't.
  4. This limit is per Instagram account, not per app, so switching tools doesn't reset it.
All wordings & translations of this error (2)
  • Calls to this api have exceeded the rate limit.
  • Calls to this api have exceeded the rate limit. (localized)

"Service temporarily unavailable" / "An unknown error occurred" — codes 1 & 2

Share of the errors we see: 3.8%

Meta-side transient failures. Nothing is wrong with the account or the message. The API just hiccuped.

Who can fix it: Your platform: retry with backoff. If your tool drops these, the DM is lost for no reason.

{
  "error": {
    "message": "Service temporarily unavailable",
    "type": "IGApiException",
    "code": 2,
    "error_subcode": 1545133,
    "fbtrace_id": "AXxxxxxxxxxxxxxxx"
  }
}

How to fix

  1. A single retry after 30–60 seconds succeeds for the majority of these.
  2. Ask your tool vendor whether transient errors are retried — many tools silently drop them.
  3. "Please reduce the amount of data you're asking for" — an API response-size issue on the platform side, also retryable with a smaller request.
All wordings & translations of this error (5)
  • Service temporarily unavailable
  • An unexpected error has occurred. Please retry your request later.
  • Please reduce the amount of data you're asking for, then retry your request
  • An unknown error occurred
  • An unknown error has occurred.

"The thread owner has archived or deleted this conversation" — code 100 / 2534001

Share of the errors we see: 1.8%

The DM thread no longer exists from the recipient's side. They archived it, deleted it, or never accepted the conversation. A reply into it can't be delivered.

Who can fix it: Fixable — see the video walkthrough.

{
  "error": {
    "message": "The thread owner has archived or deleted this conversation, or the thread does not exist.",
    "type": "IGApiException",
    "code": 100,
    "error_subcode": 2534001,
    "fbtrace_id": "AXxxxxxxxxxxxxxxx"
  }
}

How to fix

  1. Watch the video below for the exact settings walkthrough.
  2. If the recipient deleted the thread, a fresh conversation is required — automations should treat this contact as new.
  3. High volumes of this error usually mean your flow replies into stale threads; trigger on recent activity instead.
All wordings & translations of this error (8)
  • The thread owner has archived or deleted this conversation, or the thread does not exist.
  • O dono do tópico arquivou ou excluiu esta conversa ou o tópico não existe.
  • El propietario del hilo ha archivado o eliminado esta conversación, o el hilo no existe.
  • El propietario del hilo archivó o eliminó la conversación, o el hilo ya no existe.
  • Владелец цепочки архивировал или удалил эту переписку, либо такой цепочки не существует.
  • 대화 소유자가 이 대화를 보관했거나 삭제했습니다. 또는 대화가 존재하지 않습니다.
  • Vlastník vlákna konverzaci archivoval nebo odstranil, nebo vlákno neexistuje.
  • Der Thread-Eigentümer hat diese Unterhaltung archiviert oder gelöscht oder der Thread existiert nicht.

"The action is invalid since it's not the thread owner" — code 100 / 2534037

Share of the errors we see: 0.2%

The reply came from an account that doesn't own the conversation thread. Typical with linked Facebook Pages and multi-account setups, where the wrong identity ends up answering.

Who can fix it: Account configuration — see the video fix.

{
  "error": {
    "message": "The action is invalid since it's not the thread owner.",
    "type": "IGApiException",
    "code": 100,
    "error_subcode": 2534037,
    "fbtrace_id": "AXxxxxxxxxxxxxxxx"
  }
}

How to fix

  1. Watch the video below — it shows the exact option to enable.
  2. Make sure the SAME Instagram professional account that received the message is the one connected to your tool.
  3. With linked FB Page + IG account, the reply must go through the identity that owns the thread.

"The account owner has disabled access to Instagram Direct Messages" — code 200

Share of the errors we see: 2.4%

Message access for connected apps is switched off on the Instagram account, so no tool can send DMs on its behalf.

Who can fix it: Account owner — 30-second settings fix (video below).

{
  "error": {
    "message": "The account owner has disabled access to instagram direct messages.",
    "type": "IGApiException",
    "code": 200,
    "error_subcode": 2534041,
    "fbtrace_id": "AXxxxxxxxxxxxxxxx"
  }
}

How to fix

  1. Instagram app → Settings → Messages and story replies → Message controls → allow message access for connected apps.
  2. The short video below shows it on screen.
  3. After enabling, retrigger the automation — previous failures don't resend automatically on most platforms.
All wordings & translations of this error (3)
  • The account owner has disabled access to instagram direct messages.
  • The account owner has disabled access to Instagram Direct Messaging.
  • Permissions error

"Access token missing IG permissions granular scopes" — code 200 / 2534066

Share of the errors we see: <0.1%

The account is connected, but during authorization some permissions (typically instagram_business_manage_messages) were declined or dropped.

Who can fix it: Account owner: reconnect and approve everything.

{
  "error": {
    "message": "Please check if access token has enough IG permissions granular scopes for IG private reply. Or verify if the comment id is valid",
    "type": "IGApiException",
    "code": 200,
    "error_subcode": 2534066,
    "fbtrace_id": "AXxxxxxxxxxxxxxxx"
  }
}

How to fix

  1. Disconnect and reconnect the Instagram account in your tool.
  2. On Meta's permission screen, leave ALL toggles on — unticking messaging permissions breaks DM automation silently.
All wordings & translations of this error (4)
  • Please check if access token has enough IG permissions granular scopes for IG private reply. Or verify if the comment id is valid
  • Please check if access token has enough IG permissions granular scopes for IG private reply. Or, verify if the comment ID is valid
  • Verifique se o token de acesse tem escopos de permissões granulares do Instagram suficientes para a resposta privada do Instagram ou se a identificação do comentário é válida
  • Vérifiez si le token d’accès a assez d’étendues granulaires pour les autorisations Instagram pour les réponses privées Instagram. Sinon, vérifiez si l’ID du commentaire est valide

"No matching user found" / "The requested user cannot be found" — code 100

Share of the errors we see: 2.0%

The recipient account is gone: deleted, deactivated, or it blocked your account. People search this as 'Instagram user not found but not blocked', and the confusion makes sense, because through the API a deactivated account looks exactly like a deleted one.

Who can fix it: Nobody. The recipient doesn't exist, at least as far as you can tell.

{
  "error": {
    "message": "No matching user found",
    "type": "IGApiException",
    "code": 100,
    "error_subcode": 2018001,
    "fbtrace_id": "AXxxxxxxxxxxxxxxx"
  }
}

How to fix

  1. No fix exists; automations should skip these contacts gracefully.
  2. If many appear at once, check whether your account was mass-blocked or you're messaging a stale contact list.
All wordings & translations of this error (2)
  • No matching user found
  • The requested user cannot be found.

"Another app is controlling this thread" — code 10 / 2018300

Share of the errors we see: 0.1%

Meta's handover protocol has assigned this conversation to a different connected app (e.g., two automation tools connected at once).

Who can fix it: Account owner: pick one tool.

{
  "error": {
    "message": "Message failed to send because another app is controlling this thread now.",
    "type": "IGApiException",
    "code": 10,
    "error_subcode": 2018300,
    "fbtrace_id": "AXxxxxxxxxxxxxxxx"
  }
}

How to fix

  1. Check Meta Business Suite → connected apps, and remove the tool you're not using.
  2. Two DM automation tools on one account will fight over threads — one must go.

"This person isn't available right now" — code 551

Share of the errors we see: 0.5%

The recipient's account is temporarily unavailable. Deactivated, restricted, or they've limited who can message them.

Who can fix it: Nobody — recipient-side state.

{
  "error": {
    "message": "This person isn't available right now.",
    "type": "IGApiException",
    "code": 551,
    "error_subcode": 1545041,
    "fbtrace_id": "AXxxxxxxxxxxxxxxx"
  }
}

How to fix

  1. Skip and move on; retrying won't help while the account is in this state.
All wordings & translations of this error (4)
  • This person isn't available right now.
  • Questa persona non è disponibile al momento.
  • Tento člověk není právě dostupný.
  • This person isn't available at the moment.

"Activity already replied to" — code 10900

Share of the errors we see: 0.6%

A private reply was already sent to this comment/story. Instagram allows exactly one.

Who can fix it: Your platform's dedupe logic.

{
  "error": {
    "message": "Activity already replied to",
    "type": "IGApiException",
    "code": 10900,
    "fbtrace_id": "AXxxxxxxxxxxxxxxx"
  }
}

How to fix

  1. Harmless for the recipient, since they got the first reply. But if you see this a lot, the tool is double-firing. Report it to your vendor.

"This user can't reply to this activity" — code 10903

Share of the errors we see: 1.8%

The commenter can't receive the reply — account restrictions or the activity no longer accepts replies.

Who can fix it: Nobody — recipient-side.

{
  "error": {
    "message": "This user cant reply to this activity",
    "type": "IGApiException",
    "code": 10903,
    "error_subcode": 1893049,
    "fbtrace_id": "AXxxxxxxxxxxxxxxx"
  }
}

How to fix

  1. Skip gracefully; no retry will deliver it.

"The page has messages disabled in the settings" — code 10904

Share of the errors we see: <0.1%

For Facebook Pages: messaging is turned off at Page level, so connected tools can't DM.

Who can fix it: Page admin.

{
  "error": {
    "message": "The page has messages disabled in the settings",
    "type": "IGApiException",
    "code": 10904,
    "error_subcode": 1893050,
    "fbtrace_id": "AXxxxxxxxxxxxxxxx"
  }
}

How to fix

  1. Facebook Page → Settings → Messaging → allow people to contact the Page.
  2. Recheck after Meta Business Suite changes — this toggle resets more often than you'd expect.

"Upload attachment failure" — code 100 / 2018047

Share of the errors we see: 0.8%

The image/file in the DM couldn't be fetched or processed by Instagram (dead URL, too large, wrong format, slow host).

Who can fix it: Automation content — fixable in your templates.

{
  "error": {
    "message": "Upload attachment failure.",
    "type": "IGApiException",
    "code": 100,
    "error_subcode": 2018047,
    "fbtrace_id": "AXxxxxxxxxxxxxxxx"
  }
}

How to fix

  1. Host attachments on a fast public URL (no auth walls, no redirects).
  2. Stick to JPG/PNG under ~8 MB; exotic formats fail.
  3. Good platforms fall back to sending the link as text when an upload fails. Check yours does.
All wordings & translations of this error (3)
  • Upload attachment failure.
  • Upload failed
  • Nahrávání selhalo
Most people find out about these errors weeks later, after the leads are gone.

InstantDM watches for every error on this page and emails you the exact fix the moment one shows up. Anything retryable gets retried on its own. See how it works

Frequently asked questions

Why are my Instagram DMs not sending through automation?

The five most common causes, in order: the comment can't receive a private reply (older than 7 days or privacy settings), Instagram temporarily blocked the account for sending too fast (code 368), the access token expired and the account must be reconnected (code 190), link sharing is restricted on the account (code 508), or the message was attempted outside the 24-hour messaging window (code 10).

What is Instagram error code 190?

Code 190 means the access token is invalid — the connection between the automation tool and the Instagram account is dead. It happens after password changes, security checkpoints, or removing the app. The only fix is reconnecting the account.

What does 'The comment is invalid for a private reply' mean?

Error 100 with subcode 2534025. Instagram refuses a private reply to that comment: it is older than 7 days, already received a private reply, was deleted, or the commenter's privacy settings block message requests.

What are the Instagram Messaging API rate limits?

Messaging rate limits are per Instagram account and scale with recent conversation volume; hitting them returns error code 613. Viral posts trigger this constantly. A good automation platform queues and retries instead of dropping DMs.

What is the Instagram 24-hour messaging window?

Businesses can send DMs via the API only within 24 hours of the user's last message (7 days for comment private replies). Outside the window Instagram returns error code 10 and the message cannot be delivered by any tool.

Why does Instagram say my account is temporarily blocked from taking this action?

Error code 368: Instagram's anti-spam system rate-limited the account for sending faster than expected. Pause automation for 24–48 hours, check Account Status in the Instagram app, and resume at a slower pace.

Real Stories from Real Customers

See what creators and brands are saying about InstantDM

Customer review 2
Customer review 4
Customer review 5
Customer review 6
Customer review 7
Customer review 8
Customer review 9
Customer review 10
Customer review 11
Customer review 12
Customer review 13
Customer review 14
Customer review 15
Customer review 16