Slack error is_archived: Channel has been archived
Last verified against Slack API reference - chat.postMessage errors
Channel has been archived.What error is_archived means
The target channel exists but has been archived, and archived channels are frozen: no new messages, no joins, no updates. The documented description on both chat.postMessage and conversations.join is "Channel has been archived." Your identifier is correct and your permissions may be perfect — the destination is simply closed.
Integrations hit this long after the fact because archiving is invisible to stored configuration. A notification bot configured two years ago keeps aiming at the channel ID it was given; when a workspace cleanup archives that channel, every delivery starts failing with is_archived while the config still looks healthy. Unlike deletion, the ID continues to resolve (so you do not get channel_not_found), which at least makes the diagnosis unambiguous.
Recovery is either administrative — a workspace member or admin unarchives the channel and messages flow again — or configurational: point the integration at a live channel. If your app subscribes to channel events, channel_archive and channel_unarchive tell you about the state change in real time, which is far better than learning from delivery failures.
What it looks like
{"ok": false, "error": "is_archived"}Why it happens
- The destination channel was archived by a member or admin after the integration was configured.
- A workspace hygiene policy auto-archives inactive channels, catching notification-only channels that receive but never see human replies.
- A stored channel ID refers to a channel that was archived and replaced by a newly created successor.
How to fix Slack error is_archived
- 1Confirm the state with conversations.info — the channel object's is_archived field will be true.
- 2Unarchive the channel from Slack (channel settings, or the conversations.unarchive method with an appropriate token) if it should live again.
- 3Otherwise update the integration's destination to a current channel ID and notify the owner of the change.
- 4Suppress retries to archived destinations; the error is stable until a human acts.
How to stop it recurring
Subscribe to channel_archive events and mark affected destinations inactive the moment they freeze, alerting the integration's owner with a re-pick-a-channel prompt. Periodic reconciliation — walking configured channel IDs through conversations.info — catches archives that happened while the events pipeline was down.
Official reference: Slack API reference - chat.postMessage errors. See all Slack error codes or the Slack limits and quotas.
Related codes
- channel_not_found: Value passed for channel was invalidValue passed for channel was invalid.
- not_in_channel: Bot is not a member of the channelCannot post user messages to a channel they are not in.
- restricted_action: A workspace preference blocks this postingA workspace preference prevents the authenticated user from posting.
Error is_archived - quick answers
What does Slack error is_archived mean?
The target channel exists but has been archived, and archived channels are frozen: no new messages, no joins, no updates. The documented description on both chat.postMessage and conversations.join is "Channel has been archived." Your identifier is correct and your permissions may be perfect — the destination is simply closed.
How do I fix Slack error is_archived?
1. Confirm the state with conversations.info — the channel object's is_archived field will be true. 2. Unarchive the channel from Slack (channel settings, or the conversations.unarchive method with an appropriate token) if it should live again. 3. Otherwise update the integration's destination to a current channel ID and notify the owner of the change. 4. Suppress retries to archived destinations; the error is stable until a human acts.
Should I retry after error is_archived?
No. Retrying the same request produces the same error; the condition has to be fixed first. Treat it as a permanent failure for that message and surface it, rather than looping.
Stop debugging Slack by hand
Connect the channel through Conferbot: tokens, webhooks and retries are handled, failures show as readable status.