Slack API · error code

Slack error app_rate_limited: Events API deliveries rate limited

RetryableEvents API & webhooks

Last verified against Slack API reference - chat.postMessage errors

What Slack returns
"type": "app_rate_limited"

What error app_rate_limited means

Your app exceeded the Events API delivery ceiling, and Slack is telling you so with an event. The documentation states: "Event deliveries currently max out at 30,000 per workspace/team per app per 60 minutes." Cross that line and, instead of your subscribed events, Slack sends a special app_rate_limited event to your Request URL, identifying the workspace (team_id), the app (api_app_id), and the minute in which limiting began (minute_rate_limited, a Unix timestamp rounded to the minute). This is not a Web API response — no request of yours failed; deliveries to you are being dropped.

That inversion changes the debugging posture completely. Nothing shows up in your outbound logs, because the loss is inbound. Symptoms are missing events: reactions unprocessed, messages unanswered, sync pipelines falling behind for exactly the noisy workspaces. If you subscribe to high-volume event types across a large workspace — every message in every channel, user_change, presence-adjacent floods — 30,000 per hour is closer than it sounds: that is 500 events a minute averaged.

Events dropped while you are rate limited are gone from the delivery stream; recovery means reconciling by polling the relevant Web API read methods for the affected window (mind their own rate limits). The durable fix is subscribing to less: request only event types the app actually consumes, filter early at your edge, and for very high-volume workloads consider whether each subscription is pulling its weight. Also verify your endpoint acknowledges within 3 seconds — a slow endpoint triggers Slack's retry machinery, and retried deliveries add to your volume, compounding the problem (see url_verification and endpoint health).

What it looks like

{
  "token": "Jhj5dZrVaK7ZwHHjRyZWjbDl",
  "type": "app_rate_limited",
  "team_id": "T123ABC456",
  "minute_rate_limited": 1518467820,
  "api_app_id": "A123ABC456"
}

Why it happens

  • Subscribing to high-volume event types (message across all channels, user_change) in large workspaces.
  • Aggregate event volume for one app in one workspace exceeding 30,000 deliveries per 60 minutes.
  • Slow acknowledgments causing Slack retries, inflating delivery volume on top of organic traffic.
  • Event-driven feedback loops: the app's own posts generate events it subscribes to, which trigger more posts.

How to fix Slack error app_rate_limited

  1. 1Detect the app_rate_limited event type in your handler and alert on it explicitly — it is your only notification.
  2. 2Record minute_rate_limited and team_id to bound the data-loss window per workspace.
  3. 3Trim event subscriptions to what the app truly consumes; drop broad types you filter out anyway.
  4. 4Acknowledge deliveries with HTTP 200 immediately and process asynchronously so retries don't multiply volume.
  5. 5Guard against loops by ignoring events generated by your own bot (check bot_id/app_id).
  6. 6Backfill the gap by paging the relevant read methods (conversations.history etc.) for the limited window.

How to stop it recurring

Treat event subscriptions as a budget: subscribe narrowly, measure per-workspace event volume, and alert when any workspace trends toward the 30,000/hour ceiling instead of discovering it from losses. Keep acknowledgment sub-second by decoupling receipt from processing. The Events API numbers live in Slack Events API limits, and the silent-bot symptom chain in Slack bot not responding.

Official reference: Slack API reference - chat.postMessage errors. See all Slack error codes or the Slack limits and quotas.

Related codes

Error app_rate_limited - quick answers

What does Slack error app_rate_limited mean?

Your app exceeded the Events API delivery ceiling, and Slack is telling you so with an event .

How do I fix Slack error app_rate_limited?

1. Detect the app_rate_limited event type in your handler and alert on it explicitly — it is your only notification. 2. Record minute_rate_limited and team_id to bound the data-loss window per workspace. 3. Trim event subscriptions to what the app truly consumes; drop broad types you filter out anyway. 4. Acknowledge deliveries with HTTP 200 immediately and process asynchronously so retries don't multiply volume. 5. Guard against loops by ignoring events generated by your…

Can I retry after error app_rate_limited?

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.