Slack error service_unavailable: Service temporarily unavailable
Last verified against Slack API reference - chat.postMessage errors
The service is temporarily unavailableWhat error service_unavailable means
The documented description is the complete story: "The service is temporarily unavailable". Slack could not serve the request right now — a deploy, a degraded dependency, a partial outage — and expects you back later. Unlike fatal_error and internal_error, there is no partial-success caveat in the documentation, but for mutating operations the safe posture is the same: prefer idempotent retries (client_msg_id on sends) over blind ones.
Operationally, treat it as availability weather. Single occurrences: retry with backoff and move on. Clusters: consult Slack's status page, engage your circuit breaker, and let queues hold noncritical traffic until the platform recovers. What you must not do is convert an availability dip into a self-inflicted rate-limit problem by retrying in a tight loop — pace retries, cap attempts, and de-duplicate whatever piles up in the queue during the outage.
If your bot is user-facing, degrade visibly: a status note or delayed-delivery marker beats messages silently arriving an hour late with no explanation.
What it looks like
{"ok": false, "error": "service_unavailable"}Why it happens
- A temporary Slack-side availability problem (deploy, degraded dependency, partial outage).
- A platform incident visible on Slack's status page.
- Occasionally, per-method or per-region degradation while the rest of the API works.
How to fix Slack error service_unavailable
- 1Retry with exponential backoff and jitter; cap attempts and queue the remainder.
- 2Check Slack's status page when occurrences cluster.
- 3Use client_msg_id on message sends so post-recovery retries cannot double-post.
- 4Drain backlogs gradually after recovery to avoid tripping rate limits.
How to stop it recurring
Assume the dependency will blink: circuit breakers, bounded queues, and idempotent sends turn Slack outages into delays instead of incidents of your own. Rehearse the recovery path — draining a held queue at a pace that stays within rate limits — before you need it, because an untested drain either double-posts or trades one outage for a throttling penalty. A small amount of chaos testing against a stubbed Slack API pays for itself the first real incident.
Official reference: Slack API reference - chat.postMessage errors. See all Slack error codes or the Slack limits and quotas.
Related codes
- internal_error: Transient error on Slack's sideThe server could not complete your operation(s) without encountering an error,…
- fatal_error: Catastrophic error on Slack's sideThe server could not complete your operation(s) without encountering a…
- ratelimited: Request was rate limited (HTTP 429)The request has been ratelimited. Refer to the Retry-After header for when to…
- request_timeout: POST data missing or truncatedThe method was called via a POST request, but the POST data was either missing…
Error service_unavailable - quick answers
What does Slack error service_unavailable mean?
The documented description is the complete story: "The service is temporarily unavailable". Slack could not serve the request right now — a deploy, a degraded dependency, a partial outage — and expects you back later.
How do I fix Slack error service_unavailable?
1. Retry with exponential backoff and jitter; cap attempts and queue the remainder. 2. Check Slack's status page when occurrences cluster. 3. Use client_msg_id on message sends so post-recovery retries cannot double-post. 4. Drain backlogs gradually after recovery to avoid tripping rate limits.
Can I retry after error service_unavailable?
Yes - this is a retryable condition. Back off (start around one second and double on each attempt, with jitter) and watch for a retry-after hint from the platform before resending.
Stop debugging Slack by hand
Connect the channel through Conferbot: tokens, webhooks and retries are handled, failures show as readable status.