SMS Verification for Automated Account Creation
Use when choosing, integrating, or debugging SMS verification providers for automated signup flows. Also load when a signup flow hits a phone verification wall and you need to understand why.
Support files (shared with browser-automation):
references/5sim-api.md— 5sim.net API: endpoints, pricing, provider selection, country formatreferences/smspool-api.md— SMSPool API: endpoints, pricing, error codes, known delivery failuresreferences/sms-verification-service.md— sms-activate.org auto-purchase flow for phone verificationreferences/sms-provider-catalog.md— SMS provider rankings and API detailsreferences/sms-provider-failures.md— Investigation: why both 5sim.net and SMSPool fail for Facebook SMS verification (June 2026)
SMS Provider Evaluation Framework
When choosing an SMS verification provider for automated account creation, evaluate against seven dimensions:
- Number type — Real SIM vs VoIP vs SIM-farm. Real SIMs on major carriers (T-Mobile, AT&T, Verizon, Rogers, Bell, Telus) have the highest success rate. VoIP (Google Voice, TextNow, Dingtone) is universally blocked by Facebook/Google. SIM-farm numbers fall in between.
- Pool diversity — Are numbers from diverse carrier ranges or all from the same /24 block? Single-block providers get range-banned faster.
- Number freshness — Are numbers reused across customers? Shared pools mean numbers get burned faster.
- API quality — REST API with API key auth, documented endpoints, reasonable rate limits.
- Short code capability — Can the provider receive short-code SMS (e.g., Facebook's 32665, Google's 22000)? Many SIM-farm aggregators cannot.
- Pricing — Per-verification cost. Real SIMs cost more ($1-2) but work more reliably than SIM-farm numbers ($0.07-0.50).
- Payment methods — Crypto, card, or both. Minimum top-up amount.
Why Providers Fail for Facebook (4-Layer Root Cause)
Meta's anti-spam systems block virtual/SIM-farm numbers through multiple layers:
Layer 1 — Carrier line-type detection: Facebook queries carrier databases (Neustar, TNS) to check whether a number is a real mobile line, VoIP, or SIM-farm aggregator. SIM-farm numbers are classified as non-personal lines and blocked before SMS is even sent.
Layer 2 — Short code delivery: US/Canadian carriers can block short-code SMS from reaching certain number types. SIM-farm aggregators often route through carriers that don't support short codes at all. Facebook's verification short code (32665) just silently fails.
Layer 3 — Number reputation: Facebook maintains an internal database of every number ever used for account creation. If a number was tied to an account that got banned, it's permanently burned. Providers that recycle numbers have a growing burn rate.
Layer 4 — Range-level blocking: If a provider's entire number block generates hundreds of Facebook verifications in a short window, Facebook blocks the entire range. This is what kills providers — their pools are concentrated in a few carrier ranges.
Integration Pattern
All SMS providers follow the same interface. When adding a new provider:
class NewProvider:
def get_balance(self) -> float
def get_number(self, country: str, service: str) -> Optional[tuple] # (order_id, phone)
def wait_for_code(self, timeout: int = 300) -> Optional[str] # "12345" or None
def complete(self) -> None # mark done
def cancel(self, reason: str = "manual") -> None # release number
Auth patterns vary: query param (?api_key=), Bearer token (Authorization: Bearer), or custom header (X-API-Key). Check the provider's docs.
Status polling: String status (RECEIVED, PENDING, FINISHED), numeric status (STATUS_WAIT_CODE, STATUS_OK), or code presence (poll until code field is non-null).
Number recycling guard: Track used numbers in a set. Never re-purchase a just-released number — it's still burned. Cancel and retry with a different number if the first fails.
Country matters: Canadian numbers (+1) are more likely to work for Facebook than Indonesian or Russian numbers, regardless of provider. Facebook treats North American numbers differently.
Provider Catalog
See references/sms-provider-catalog.md for current rankings. Confirmed non-working for Facebook (June 2026): 5sim.net, SMSPool. Candidates: SMS-Activate, SMSPVA, TextVerified, SMS-man, SMSCodes.
See references/sms-verification-service.md for sms-activate.org auto-purchase integration patterns.
Facebook Phone Verification Detection
Check for "checkpoint" in URL or keywords in page content ("confirm phone", "mobile number", "enter your phone").
Match proxy geo: Use Canadian phone numbers (country code 12) with Canadian residential proxies for consistency — mismatched geo is a red flag.