Error reference
Every comment that matches an automation becomes a job, and every job ends in a state you can see in the Queue. When a job doesn’t end in sent, it carries a reason — shown beside the state, like failed · permission. Nothing is ever dropped without a record.
This page covers all of them. If you’d rather start from the symptom than the code, use the Troubleshooting guide.
States
| State | What it means | Final? |
|---|---|---|
received | We got the comment from Instagram and recorded it. It hasn’t been matched against your automations yet. | No |
matched | A keyword matched and an automation claimed the comment. It’s eligible to send. | No |
queued | Waiting for capacity. Instagram rate-limits how fast an account may send, so bursts are held in order rather than dropped, and drained as fast as Instagram allows. | No |
sending | In flight to Instagram right now. | No |
sent | Delivered. Instagram accepted the message and returned an ID for it. Shown as Delivered. | Yes |
expired | Instagram’s messaging window closed before the send went out. See outside_window below. | Yes |
failed | The send was permanently refused. The reason beside it says why — every reason is documented below. | Yes |
unknown | A send timed out, so we can’t tell whether it arrived. Dartzo checks before deciding, rather than guessing and risking a duplicate DM. It resolves to sent or gets safely retried. | No |
queued on purpose while the account’s send budget refills, or while a temporary Instagram error clears. It only becomes a problem if it stays there long enough to hit the messaging window — at which point it honestly becomes expired rather than quietly disappearing.Failure reasons at a glance
| Reason | Plain English | Do you need to act? | Fix |
|---|---|---|---|
permission | Instagram refused on permissions | Yes — sending stops for the account | Accept the tester invite, use a Business or Creator account, then reconnect |
token_invalid | Your connection is no longer valid | Yes — nothing sends until fixed | Reconnect Instagram |
blocked | That person can’t receive your messages | No — this is their choice | Nothing. Watch the rate, not the individual |
comment_deleted | The comment was gone before we replied | No — normal event | Nothing, unless the rate is high |
outside_window | Instagram’s messaging window had closed | Usually no | Nothing, unless it’s happening on fresh comments |
post_deleted | The post the automation was attached to is gone | Yes — that automation is paused | Rebind the automation to a live post, or delete it |
recipient_capped | That person already got this DM | No — this is our guard working | Nothing |
no_key | AI replies aren’t available on this account | Yes — if you want AI replies | Turn AI reply off and use a fixed message, or contact us |
no_credits | AI credits for the month are used up | Yes — if you want AI replies | Wait for the 1st, add bonus credits, upgrade, or switch to a fixed message |
unknown_error | Instagram returned an error it didn’t explain | Sometimes | Check for a second DM tool on the account first |
permission — Instagram refused on permissions
Meta rejected the send as not permitted for your account, and did not say which permission was missing. The causes below are ranked by how often they turn out to be the answer, not reported to us by Meta.
- The Instagram tester invite hasn’t been accepted. While Dartzo is in Meta’s development mode, only accepted testers can be messaged — being invited isn’t enough. Accept it in Instagram → Settings and privacy → Apps and websites → Tester invites.
- The account is Personal, not Business or Creator. Messaging permissions don’t exist on Personal accounts. Check Instagram → Settings → Account type.
- Your saved connection predates a permission we now need. Reconnecting forces a fresh authorisation and replaces the old credential.
token_invalid — your connection is no longer valid
Instagram rejected the credential we hold outright. Nothing will send for this account until you reconnect. This is a credential problem, not an abuse problem, and we deliberately don’t count it against your account’s standing.
- You changed your Instagram password, or removed Dartzo from Instagram’s connected apps.
- The long-lived token reached the end of its life without being refreshed.
- The same account was disconnected and reconnected somewhere else, which invalidates the older token.
The fix: reconnect from Connect. That’s the whole fix. Your automations, message text, leads and history are untouched — reconnecting only replaces the credential.
blocked — that person can’t receive your messages
The recipient can’t be messaged by your account. Usually they blocked it; sometimes their privacy settings simply don’t allow message requests from accounts they don’t follow.
blocked rows.The rate is worth watching, though. Blocks count as a spam signal with Instagram, and a climbing block rate usually means your DM is reading as unsolicited. That’s a copy-and-promotion question — look at what the message says and how you’re advertising the keyword — not a delivery question.
comment_deleted — the comment was gone before we replied
A private reply attaches to a specific comment. If the comment no longer exists at the moment we send, there’s nothing to attach to. The commenter may have deleted it, you or a moderation tool may have removed it, or the whole post may have been deleted, taking its comments with it.
A high rate is worth a look: it often means comments are being auto-moderated away before we reach them. If you’re running a moderation tool or an aggressive filter on the account, that’s the first place to check. Deleted comments also count as a spam signal, so a persistent high rate can eventually pause the account.
outside_window — Instagram’s messaging window had closed
Meta only lets you message someone for a limited time after they interact with you. Private replies to a comment must go out within 7 days of the comment; follow-up messages within 24 hours of that person’s most recent interaction. These land as expired rather than failed, because nothing failed — time ran out.
- The job waited longer than the window allowed — a large backlog, a paused account, or an outage on our side.
- A follow-up was scheduled more than 24 hours after the person last interacted with you.
If you paused an account and resumed it days later, comments from before the pause may well have expired while they waited. That’s expected. If you’re seeing this on comments that are only hours old, tell us — that points at something on our side, not yours.
post_deleted — the post the automation was attached to is gone
An automation bound to a specific post can never fire again once that post is deleted. Rather than let it sit there looking live and quietly doing nothing, Dartzo pauses it and says why on the automation itself.
recipient_capped — that person already got this DM
This one is ours, not Instagram’s. One person gets one DM per automation, so someone who comments the keyword five times gets one message, not five. If you see this, the person already has your DM.
no_key — AI replies aren’t available on this account
The automation asked for an AI reply, but AI generation isn’t configured, so no reply could be generated. We won’t fake it: rather than send something you didn’t write, Dartzo sends your fallback message so the person is still acknowledged, and records honestly that the AI part didn’t run.
The fix: turn AI reply off on that automation and use a fixed message, which will always work. Every plan includes AI replies, so if you are seeing this, contact us — that’s a configuration problem on our side, not yours.
no_credits — AI credits for the month are used up
AI credits for the month are used up; they reset on the 1st; bonus credits or an upgrade add more. Every plan carries a monthly allowance — the free one included — and the bigger the plan, the bigger the allowance.
As with no_key, the person still gets your fallback message rather than silence. The fix: wait for the 1st, upgrade for a larger allowance, or switch the automation to a fixed message so it keeps working regardless. From Pro up you can also plug in your own AI provider key, and replies then spend no Dartzo credits at all.
unknown_error — Instagram returned an error it didn’t explain
Meta returned something we couldn’t attribute to a specific cause. We deliberately don’t count these against your account’s standing — punishing an account for an error nobody can explain would be unfair.
The other things that land here:
- The person already got a reply for that comment. Instagram allows one private reply per comment, and something already used it — often a retry after a timeout, or your own second tool. Benign: the DM was delivered, and the duplicate attempt was correctly refused.
- The 7-day window closed. Some of these are really
outside_windowarriving by a different route. Same meaning: the job waited longer than Instagram allows. - A genuine temporary error on Meta’s side. We retry server errors up to 5 times with increasing gaps before giving up, so anything you see here has already been retried and has stayed broken.
- A response we haven’t classified yet. Rare, and something we want to know about.
What to do: check for a second DM tool first — it explains most of these. If there isn’t one, contact us with the account and roughly when it happened. We record exactly what Meta returned for every unclassified error, including Meta’s own trace ID, which is the only identifier their developer support will act on.
Common questions
Which of these are actually my problem?
permission, token_invalid, post_deleted, no_key and no_credits need you to change something. blocked, comment_deleted, outside_window and recipient_capped are normal outcomes of Instagram’s rules or our own safety guards — they’re recorded so you can see the whole picture, not because you did something wrong.Why show me failures at all instead of hiding them?
Can a failed DM be retried?
failed is what’s left after that: a permanent refusal where retrying would produce the same answer.Which failures can pause my account?
blocked, comment_deleted and permission. If more than 1% of an account’s sends in an hour come back as one of those, Dartzo pauses the account to protect your standing with Instagram. token_invalid, outside_window and unknown_error are explicitly excluded — they aren’t abuse.