Details on the rate limits applied to API requests based on subscription plans.
Understanding Rate Limits
To ensure fair usage, platform stability, and the safety of your WhatsApp numbers, WasenderAPI applies rate limits. Limits vary by plan, endpoint, and safety settings.
Rate Limit Headers
Every API response includes headers to help you monitor your usage:
X-RateLimit-Limit— maximum requests allowed in the current window.X-RateLimit-Remaining— remaining requests before the limit is reached.X-RateLimit-Reset— seconds until the limit resets.
Message Sending Rate Limits
These limits apply specifically to the Send Message endpoint:
| Plan / Setting | Rate Limit | Reason |
|---|---|---|
| Trial Plan | 1 request / minute | Ensures fair access during trials and helps prevent free-account abuse. |
| Paid Plans (Basic, Pro, Plus, Business) |
256 requests / minute | High-throughput messaging while protecting the platform from abuse and traffic spikes. If you need a higher limit for a legitimate use case, contact support. |
| Account Protection Enabled (Any Plan) |
1 request / 5 seconds | Safety-first mode to reduce WhatsApp flag/ban risk. This setting overrides plan limits. |
Other Endpoint Rate Limits
Some endpoints can be interpreted by WhatsApp as suspicious if called too frequently. To protect your account and keep the platform reliable, additional limits apply:
| Endpoint / Action | Rate Limit |
|---|---|
| Get group participants / metadata | 10 requests / minute |
| Get contact picture | 60 requests / minute |
| Check if a number is on WhatsApp | 60 requests / minute |
Daily Request Caps
In addition to per-minute limits, some endpoints have daily request caps. These caps exist to prevent abuse and reduce the risk of WhatsApp restrictions or bans.
| Plan / Endpoint | Daily Cap | Important Notes |
|---|---|---|
| Trial – Send Message | 50 requests / day | Helps prevent free-account abuse and encourages safe usage during trials. |
| Get contact picture | 1,000 requests / day | Excessive usage may trigger WhatsApp anti-abuse systems and result in restrictions. Use only when necessary. |
| Check if a number is on WhatsApp | 1,000 requests / day | High-risk endpoint. Repeated calls have been observed to cause bans affecting both number checks and contact picture requests. Avoid automated or bulk usage. |
| Get group participants / metadata | 500 requests / day | High-risk endpoint. WhatsApp monitors group scraping heavily. Call this endpoint once per group and store the result in your database. Avoid polling or frequent refreshes. |
Concurrent Request Limits (Global)
In addition to per-minute and daily rate limits, WasenderAPI enforces a global concurrent request limit across all endpoints.
This limit controls how many requests can be processed simultaneously per session. It exists because sending too many concurrent requests to WhatsApp — even within normal per-minute limits — has been observed to increase the risk of number bans.
| Scope | Limit Type | Purpose |
|---|---|---|
| All Endpoints (Per Session) | Concurrent request cap | Prevents excessive parallel requests that may trigger WhatsApp anti-abuse systems, even if minute limits are respected. |
How It Works
- The limit applies globally across all endpoints.
- It is enforced per session.
- If too many requests are sent at the same time, additional requests will be rejected temporarily.
- This protection applies regardless of your plan.
Important: Even if your plan allows 256 requests per minute, sending them all simultaneously may result in bans. Always queue requests and distribute them evenly.
High concurrency is one of the most common causes of WhatsApp number bans. We strongly recommend implementing a queue system with controlled parallelism (e.g., 1–5 concurrent workers per session).
Important: All limits are enforced per endpoint per session. Different endpoints have different thresholds.
Repeatedly hitting rate limits (or repeatedly triggering high-risk endpoints) may result in a temporary restriction of your API access while your usage is reviewed.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| X-RateLimit-Limit | integer | No | The maximum number of requests allowed per time window. |
| X-RateLimit-Remaining | integer | No | The number of requests remaining in the current time window. |
| X-RateLimit-Reset | integer | No | The time in seconds until the rate limit resets. |
Response Examples
{
"message": "You are on a free trial. You can only send 1 message every 1 minute.",
"retry_after": 60
}