DEV Community

Fathin Dosunmu
Fathin Dosunmu

Posted on • Originally published at agentsim.dev

Fix: WhatsApp 'Unsupported phone numbers such as VoIP' for AI Agents

If you're building AI agents that need WhatsApp Business API access, you've seen this:

Unsupported phone numbers, such as VoIP, landlines, and premium rate numbers
Enter fullscreen mode Exit fullscreen mode

WhatsApp has the strictest phone verification in the industry. Here's why, and how to solve it.


WhatsApp's Verification Requirements

WhatsApp's official FAQ is explicit:

"Unsupported phone numbers, such as VoIP, landlines, and premium rate numbers, are not eligible for registration."

Unlike Stripe or Google which silently reject, WhatsApp tells you exactly why. Their system performs:

  1. Carrier database lookup — Checks LERG/NPAC for line type
  2. HLR query — Verifies active mobile network registration
  3. Historical abuse check — Numbers previously used for spam are permanently blocked
  4. Country-carrier validation — Number must be from a carrier operating in the declared country

Why WhatsApp Is Stricter

WhatsApp is the primary communication platform in 180+ countries. They block VoIP because:

  • Spam prevention: VoIP numbers are 40x more likely to be used for bulk spam
  • Identity verification: Each WhatsApp account = one real person/business
  • Carrier agreements: Meta has direct relationships with mobile carriers worldwide

Every VoIP Provider Fails

Provider WhatsApp result Error message
Twilio ❌ Blocked "Unsupported phone number"
Vonage ❌ Blocked "Unsupported phone number"
Google Voice ❌ Blocked "Unsupported phone number"
Bandwidth ❌ Blocked "Unsupported phone number"
AgentSIM ✅ Passes Registration successful

The Fix: AgentSIM for WhatsApp

AgentSIM numbers pass WhatsApp verification because they're real SIM cards on real mobile networks.

Install

pip install agentsim-sdk
Enter fullscreen mode Exit fullscreen mode

WhatsApp Business API Registration

import agentsim
import asyncio

agentsim.configure(api_key="asm_live_xxx")

async def register_whatsapp_business():
    async with agentsim.provision(
        agent_id="whatsapp-setup",
        country="US"
    ) as num:
        print(f"Registering WhatsApp with: {num.number}")

        # Use the number in WhatsApp Business API registration
        # via Meta's Cloud API or on-premise API
        registration_response = await register_with_meta_api(
            phone_number=num.number,
            method="sms"  # or "voice"
        )

        # Wait for verification code
        otp = await num.wait_for_otp(timeout=120)
        print(f"WhatsApp code: {otp.otp_code}")

        # Complete verification
        await verify_with_meta_api(
            phone_number=num.number,
            code=otp.otp_code
        )

        print("WhatsApp Business registered!")
    # Number auto-released after context exit

asyncio.run(register_whatsapp_business())
Enter fullscreen mode Exit fullscreen mode

With Playwright (Web Registration)

import agentsim
from playwright.async_api import async_playwright

agentsim.configure(api_key="asm_live_xxx")

async def register_whatsapp_web():
    async with async_playwright() as p:
        browser = await p.chromium.launch()
        page = await browser.new_page()

        await page.goto("https://business.facebook.com/wa/manage/phone-numbers/")

        async with agentsim.provision(
            agent_id="whatsapp-reg",
            country="US"
        ) as num:
            await page.fill('[name="phone"]', num.number)
            await page.click('button:has-text("Send code")')

            otp = await num.wait_for_otp(timeout=120)

            await page.fill('[name="code"]', otp.otp_code)
            await page.click('button:has-text("Verify")')

        await browser.close()
Enter fullscreen mode Exit fullscreen mode

With MCP (Claude Code / Cursor)

{
  "mcpServers": {
    "agentsim": {
      "url": "https://mcp.agentsim.dev/mcp",
      "headers": {
        "Authorization": "Bearer asm_live_xxx"
      }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Carrier Verification Results

Check VoIP Number AgentSIM Number
LERG line_type voip mobile
Carrier name Twilio Inc T-Mobile USA
HLR status No mobile registration Active on network
WhatsApp eligible ❌ No ✅ Yes

Important Notes

  1. One number per WhatsApp account — WhatsApp enforces 1:1 mapping
  2. Number history matters — Previously-banned numbers may still be blocked
  3. Business verification separate — Phone verification is step 1; Meta business verification is step 2
  4. Keep the number active — WhatsApp may re-verify periodically

Cost

Approach Monthly cost WhatsApp success rate
Twilio $1-15/number 0%
Google Voice Free 0%
AgentSIM $0.99/session 100%

Get Started

10 free sessions per month. Real SIM numbers that pass WhatsApp's strict verification.

Top comments (0)