The throttling values for social platform number screening should be derived from each platform's time-window rate limits and backoff responses, rather than presetting a fixed upper bound for batch size. Whether you choose to write your own scripts to manage parameters or delegate batching and scheduling to platforms like NexCheck, the key is to adapt to each platform's independent risk control accounting.
Why Platforms Rate Limit by Time Window Instead of Batch Size
Many developers mistakenly believe that keeping the number of submitted numbers per batch below a certain threshold ensures safe operation. However, mainstream social platforms' risk control systems do not directly count "how many in this batch" but rather calculate "how many queries were made in the past N seconds." Taking Telegram as an example, its underlying MTProto protocol's contacts.resolvePhone method explicitly requires clients to implement debouncing, with the official constraint of calling at most once every 3 seconds. Exceeding this frequency triggers an immediate 420 FLOOD error, which includes a FLOOD_WAIT_X parameter instructing the caller to sleep for X seconds before further operations.
Third-party channels like Whapi.Cloud also employ similar logic when handling WhatsApp number checks, using configuration parameters such as delay (interval) and checks_per_delay (checks per interval) to pin down detection density per unit time. This means batch size is merely a production unit; what the platform truly observes is how natural the detection rhythm appears. Therefore, the batch size should not be a large preset number but rather computed inversely from interval time and backoff budget. Attempting to compensate for interval limits by increasing concurrency will only accelerate triggering risk control thresholds.

Converting Parameters for Social Platform Number Screening: Interval, Window, and Concurrency
To determine reasonable settings, three key parameters must be evaluated in a unified equation: a single channel's theoretical throughput equals "checks per window" divided by "window duration." Enabling multi-channel concurrency amplifies detection density multiplicatively, so the number of concurrent channels must be adjusted in tandem with the interval, never increased independently. For example, if one channel is limited to 1 check per 3 seconds, enabling 5 concurrent channels increases the overall rate to 5 checks per 3 seconds, which can easily be identified as unnatural detection behavior.
For parameters like checks_per_delay and delay, their core purpose is to prevent abnormal mass messaging from being flagged by risk control. The value-setting approach should follow the principle of "start low, increase gradually": first set initial values based on official documentation or script defaults, then run a short test to observe if rate limit responses occur. If stable, make small adjustments to improve efficiency. Note that script defaults vary by version and account environment, and platforms do not publicly disclose fixed thresholds, so they serve only as starting minimums, not recommended values. Base adjustments on whether rate limit responses appear and whether the wait seconds increase. Additionally, WhatsApp and Telegram should each maintain separate rate paths because their rate control accounts are independent. If a global counter is shared, one platform's headroom may mask another's over-frequency risk, potentially leading to account restrictions.
Backoff and Retry Margin: Wait Seconds from FLOOD_WAIT_X and Jitter
When receiving a 420 FLOOD error, the return value itself is the highest-priority backoff directive. At that point, you should directly sleep for the number of seconds specified in FLOOD_WAIT_X rather than setting a fixed sleep time. Failing to back off as instructed and continuing to call will lead to session resets or even account restrictions. Additionally, to mitigate the secondary impact when multiple channels resume simultaneously, it is advisable to add random jitter at the start of the recovery call rather than incorporating jitter logic within the server-provided wait time.
For retry strategy, clearly distinguish three failure scenarios:
- Rate limit: After the window ends, the original batch can be requeued.
- Timeout: Must retry with an idempotency key to avoid duplicate billing or rechecking the same number.
- Miss/hit not found: For example, a return of
PHONE_NOT_OCCUPIEDis not a technical failure and should not trigger a retry. Be especially wary: since privacy settings blocking and number unregistered can both return the same error code, directly equatingPHONE_NOT_OCCUPIEDwith "unregistered" may cause numerous existing users to be misclassified, impacting subsequent data cleaning accuracy.
Seven Throttling Parameters Reference Table
| Parameter | Protection Target | Source for Value | Primary Exposure Indicator When Increasing/Decreasing | Verification Method |
|---|---|---|---|---|
| Batch Size | Avoid excessive load in single request | Package limits, queue digestion capacity | Request timeout rate, peak memory usage | Small-batch test recording duration |
| Detection Interval | Mimic human operation pace | Platform official rate limit constraints (e.g., TG's 3 seconds) | Frequency of FLOOD_WAIT triggers | Monitor count of 420 error returns |
| Checks per Window | Control density per unit time | Script config (e.g., checks_per_delay) | Account restriction warnings, connection refusals | Stepwise increase and observe stability |
| Concurrent Channels | Increase overall throughput | Derived from single-channel interval and target platform window density (concurrency × checks per channel per window must still fall within the window constraint) | First rise in share of rate-limit responses | Monitor count of rate-limit responses, pending duration, and result proportion changes |
| Backoff Strategy | Quick recovery from rate limits | FLOOD_WAIT_X return value | Retry storms, resource waste | Analyze log effectiveness of backoff |
| Queue Depth | Buffer burst traffic | Memory limits, business tolerance | Task drop rate, pending build-up | Monitor queue backlog duration |
| Retry Margin | Ensure final consistency | Idempotency support | Duplicate billing, data contamination | Check for discrepancies in reconciliation system |
It is recommended to first run a small-scale batch through a full cycle, recording in detail the number of rate-limit responses, the time from pending to result, and the proportion of result categories. Once stable, scale up accordingly to execute larger batch number detection API tasks.

Batch Size and Queue Depth: How to Infer Production from Pending Duration
Service providers generally do not disclose a fixed global batch size limit because batch capacity often varies dynamically with package tier and real-time queue load. Taking CheckNumber.AI's asynchronous batch model as an example, after uploading a file of E.164 numbers and creating a batch, the task enters the background, goes through pending state scheduling, and once processed, transitions to exported and provides a download link.
During this process, the pending duration is a key signal of queue backpressure. If you notice that as batch size increases, pending duration grows non-linearly, it indicates that the current batch size exceeds the queue's processing speed. In such cases, the correct action is to split batches and space out submission timing, rather than blindly increasing concurrency. Additionally, queue depth should have enough headroom to accommodate retry batches caused by rate limits, preventing new tasks from being rejected due to a full queue. For users needing multi-platform number detection, this observation-based inference method is more reliable than seeking universal values.
Throttling Strategies Across Different Tech Stacks
Self-built scripts, third-party channels, and platform-based batch tasks have different control over parameters; your approach should align with your team's capabilities.
| Scenario | Parameter Maintenance Responsibility | Suitable List Size | Main Risks | Process Positioning |
|---|---|---|---|---|
| Self-built MTProto script | Full responsibility by dev team | Small to medium, high customization | Account bans, code bugs causing high-frequency impact | Must implement E.164 normalization through sampling verification full pipeline |
| Third-party channel script | Team configures interval/batch; service maintains connection | Medium size, specific platform | Reliance on channel stability, misconfiguration triggers risk control | Focus on detection phase; pre/post processing self-managed |
| Platform-based batch tasks | Service side handles splitting and scheduling; team focuses on API | Large scale, standardized needs | Long queue wait times, result format compatibility | Focus on file upload and result storage |
Regardless of the path chosen, ensure detection capability is embedded in the standard data cleaning flow: "E.164 normalization — deduplication — platform registration status check — sampling verification." For businesses involving WhatsApp number batch detection, special attention must be paid to rate limit isolation between platforms. If you are considering build vs buy for a global screening system, the complexity of parameter management above is often the key decision divider.
Frequently Asked Questions
How many numbers can be submitted at once for social platform screening?
There is no universal fixed upper limit, as mainstream platforms do not disclose hard numbers. The appropriate quantity depends on your package tier and current queue load. It is advisable to first run an observable small batch and decide on scaling based on changes in pending duration; if duration increases significantly, reduce batch size; if stable, gradually increase until hitting the platform's concurrency limit or your server resource bottleneck.
When cleaning cross-border lists? What is a safe interval between two batch screening requests?
The interval should refer to the specific platform's official rate limit constraints. For instance, Telegram's contacts.resolvePhone requires at least a 3-second interval. For other platforms, consult their API docs or use the delay parameter from open-source scripts as a starting point. The safest approach is to test with small batches and monitor for 420 FLOOD or similar rate limit errors, thereby inferring the minimum safe interval for that account/IP under current conditions.
What to do when Telegram screening shows FLOOD_WAIT_X?
Immediately stop all requests to that account and strictly sleep for X seconds as specified in the return value. Do not attempt to bypass or shorten the wait; doing so may lead to session resets or account bans. In multi-concurrency scenarios, add random jitter when resuming requests to avoid multiple threads retrying simultaneously and causing a new wave of rate limit shocks.
When performing multi-platform parallel cleaning, should rate limiting be separated?
Yes, it must be separated. Platforms like WhatsApp and Telegram have independent risk control systems with separate counters and thresholds. Using a global rate limiter may cause one platform to block another's legitimate requests when one quota is exhausted, or conversely, allow severe over-frequency on one platform to go unnoticed. Maintain separate token bucket or leaky bucket instances per platform.
What should be the values for checks_per_delay and delay parameters?
These parameters control detection density per unit time. Initial values can reference mature open-source scripts like Whapi.Cloud. Specific values need adjustment based on the target platform's sensitivity: if you frequently receive connection refusals or warnings, increase delay or decrease checks_per_delay; if no anomalies over a long period and you want to speed up, make small adjustments and continuously monitor error rate changes in logs.
What are the consequences of setting concurrency too high during trial runs?
Excessive concurrency directly triggers platform risk control, manifesting as numerous 420 FLOOD errors or connection timeouts. In severe cases, associated accounts may have features restricted by the platform. Moreover, overly high concurrency consumes local server CPU and network bandwidth, slowing down the entire scheduling system and creating a vicious cycle.
It is recommended to first run a small batch through a full cycle, logging the number of rate-limit responses, task queue duration, and result proportion categories, before deciding whether to manage these seven parameters yourself per platform or hand over batch scheduling and API tasks to NexCheck, keeping only result storage and sampling verification in-house.
NexCheck-筛号平台
Comments(0)