Slack API Rate Limit Tiers Reference
Slack limits how often an app can call each Web API method, and exceeding the limit returns HTTP 429. This reference groups common methods by tier so you can budget calls from an ERP or workflow integration before you build it.
| Tier | Approximate budget | Method | Typical ERP integration use |
|---|---|---|---|
Tier 1 | 1 or more per minute | (Rare, bulk or admin methods) | Do not call in a loop; schedule rarely |
Tier 2 | 20 or more per minute | conversations.list | Look up channel IDs once and cache them |
Tier 2 | 20 or more per minute | users.list | Sync staff directory nightly, not per event |
Tier 2 | 20 or more per minute | conversations.members | Audit channel membership on a schedule |
Tier 3 | 50 or more per minute | conversations.history | Read approval replies in a channel (prefer events) |
Tier 3 | 50 or more per minute | conversations.replies | Read thread replies on an approval message |
Tier 3 | 50 or more per minute | chat.update | Edit an approval message after a decision |
Tier 3 | 50 or more per minute | chat.delete | Remove superseded alerts |
Tier 3 | 50 or more per minute | reactions.add | Mark an alert as acknowledged |
Tier 3 | 50 or more per minute | conversations.open | Open a direct message with an approver |
Tier 3 | 50 or more per minute | conversations.create | Create a channel per incident or project |
Tier 4 | 100 or more per minute | users.info | Resolve a single user by ID |
Tier 4 | 100 or more per minute | views.open | Open a modal from a button click (must be within 3 seconds) |
Tier 4 | 100 or more per minute | views.update | Update a modal while the user is working |
Tier 4 | 100 or more per minute | auth.test | Verify a bot token on startup |
Special | About 1 message per second per channel, short bursts allowed | chat.postMessage | Send alerts and approval requests |
Special | Per workspace and per channel limits | Incoming webhooks | Simple one way alerts; about 1 per second per webhook |
Slack groups methods into tiers and may adjust limits for specific methods or app types, including apps distributed outside the Slack Marketplace. Treat the figures as planning numbers and confirm the method page in the Slack API documentation. On HTTP 429, wait the number of seconds in the Retry-After header before retrying.
Check your integration limits
Optional review of your expected peak message volume against platform limits.
Optional. The tool and every export work without this. No spam.
How to read the tiers
Slack describes tiers 1 to 4 as roughly 1, 20, 50 and 100 requests per minute, applied per method and per workspace for each app. Posting messages is a special case with a rate of about one message per second per channel, with short bursts allowed. Look up the method you plan to use, find the tier, and compare the budget to your expected peak, not your average.
- Cache channel and user IDs instead of looking them up on every event.
- Use Events API subscriptions rather than polling history methods.
- Honour the Retry-After header on every 429.
- Batch many notifications into one message where the content allows.
Worked example: month end approval burst
A purchasing workflow sends 400 approval requests in ten minutes at month end. If each one is posted to the same channel, the one per second guideline allows about 600 in that time, so it fits but with little headroom. If each one is a direct message, conversations.open adds a Tier 3 call per approver, so cache the conversation IDs. A queue with a worker that drains at 40 per minute keeps you inside every limit.
Common mistakes
The most frequent problem is polling conversations.history every few seconds to detect replies, which burns a Tier 3 budget and may be restricted further. Another is ignoring Retry-After and retrying instantly, which extends the penalty. A third is opening a modal with views.open after the trigger ID has expired, which looks like a rate problem but is a timing problem.
Frequently Asked Questions
What is the Slack chat.postMessage rate limit?
Slack treats chat.postMessage as a special case, allowing about one message per second per channel with short bursts tolerated. Sustained sending above that returns HTTP 429 with a Retry-After header telling you how long to wait.
How do I handle a Slack 429 response?
Read the Retry-After header, stop calling that method for that many seconds, then resume. Put outgoing calls in a queue so one slow burst does not block unrelated work, and avoid retrying in tight loops.
Do rate limits apply per app or per workspace?
Limits are generally applied per method, per app and per workspace, so installing the same app in several workspaces gives each its own budget. Confirm the details for your app type in the current Slack documentation.
Should I poll Slack for approval replies?
No. Use interactive components and the Events API so Slack pushes the click or reply to your endpoint. Polling history methods wastes budget and adds delay to every approval.
If your ERP approvals or alerts need to reach Slack reliably at peak volume, Netray can design the queueing and retry layer with you.
Related Tools
Teams Webhook Rate Limit Queue Drain Time Calculator
Calculate how long a burst of alerts takes to drain through a rate limited Teams endpoint, including retries after throttling responses.
Developer ToolsMessaging Webhook Retry Backoff Schedule Calculator
Work out how long an exponential backoff retry policy keeps trying before a WhatsApp, Teams or Slack message is parked for review.
Developer ToolsWebhook Signature Verification Code Generator
Generates an Express.js webhook endpoint with the Meta GET verification handshake and constant time HMAC SHA256 signature checks.
Developer ToolsMessaging Throughput and Rate Limit Headroom Calculator
Estimate peak message rate, how much headroom you have under a rate limit, how many workers you need and how long a burst takes to drain.
More Developer Tools tools
See all- SAP Sales Order ABAP SELECT Generator (VBAK, VBAP, VBFA)
- SAP Sales Order Create BAPI ABAP Generator (BAPI_SALESORDER_CREATEFROMDAT2)
- SAP ABAP Open Items SELECT Generator
- SAP ACDOCA SQL Query Generator
- SAP QM Inspection Lot ABAP SELECT Generator
- SAP Quality Notification Pareto SQL Query Generator
- SAP QM Usage Decision BAPI Skeleton
- ABAP Custom Exception Class Generator
- ABAP Unit Test Class Generator