For developers

SMS verification API

Buy real non-VoIP numbers and receive verification codes from your own code, or let an AI agent do it through our MCP server.

  • REST API

    JSON over HTTPS with a Bearer API key. Buy numbers, read messages, and reuse, renew, convert or flag numbers from your own code.

  • Webhooks

    Get a POST the moment an SMS arrives, plus events when a number is purchased, flagged, reused or renewed, or when a message is blocked.

  • MCP server

    Let AI agents in Claude Code, Cursor, VS Code, Codex, Windsurf or Cline manage numbers through 13 tools.

  • Short- and long-term numbers

    20-minute numbers for one-off codes (keep an eligible US or UK one for 30 days), 3- to 30-day rentals, and All Services plans you can renew once or set to auto-renew.

  • 13 countries

    US and UK numbers for specific services, short- or long-term; 20-minute numbers in ten more countries; and All Services plans in six.

  • Postman collection

    Import the ready-made collection and make your first authenticated call in minutes.

    Download the collection

Quick start

From sign-up to your first verification code in four steps.

  1. Create an API key

    Sign up for free, open Settings → API keys and create a key. Send it in the Authorization header with every request.

    Authorization: Bearer API-xxxxx...
  2. Find the service you need

    List every service you can order, with its ID, country and price.

    curl -X GET "https://prod-v3.pvadeals.com/v3/api/services/all" \
      -H "Authorization: Bearer API-xxxxx..."
  3. Buy a number

    Pass the service ID to purchase a short-term number. The cost comes from your credit balance.

    curl -X POST "https://prod-v3.pvadeals.com/v3/api/purchase" \
      -H "Authorization: Bearer API-xxxxx..." \
      -H "Content-Type: application/json" \
      -d '{"services": [{"serviceId": "697139f7fe5460ddc2f27214"}]}'
  4. Receive the code

    Set a webhook URL in the dashboard or with POST /v3/api/webhook, and we send each SMS to you as it arrives. Or check the number with GET /v3/api/request/{id}, no more than once every 5 seconds.

    {
      "event": "sms_received",
      "timestamp": "2026-01-28T22:57:35.001Z",
      "requestId": "697a90d25ef1873ef44f48bc",
      "serviceId": "697139f7fe5460ddc2f27214",
      "number": "+13130001234",
      "message": "Your Airbnb verification code is 2200."
    }

See every endpoint in the API reference

Give your AI agent a phone number

Connect any MCP client to our server with your API key, and your agent can check your balance, find a service, buy a number and read the code, all from a chat.

https://prod-v3.pvadeals.com/mcp
Authorization: Bearer API-YOUR_KEY_HERE

Try: Buy one number for this service. Ask me before purchasing.

Set up the MCP server
  • get_balanceCheck your credit balance
  • list_servicesList available services
  • get_serviceGet one service by ID
  • get_inventorySee which US states have numbers for a service
  • purchase_numberBuy a short-term number
  • purchase_ltr_numberBuy a long-term or All Services number
  • check_smsRead the messages and codes on a number
  • list_active_numbersList your active numbers
  • flag_numberFlag a number for review
  • convert_to_ltrKeep a 20-minute number for 30 days
  • get_webhookShow your webhook settings
  • set_webhook_urlSet or change your webhook URL
  • clear_webhookRemove your webhook URL

Rate limits

Two layers of limits keep the platform fast for everyone. A 429 response tells you when to retry.

All /v3/api/* requests, per IP
300 requests per 60 seconds
Purchases, per IP
60 requests per 60 seconds
Purchases, per account
One at a time: a purchase sent while another is still running gets 429 with a short Retry-After
Each endpoint, per API key
Its own cap, for example 2 per 5 minutes for /services/all
Stock checks (/inventory), per API key
Each service once every 5 minutes, 10 checks per 5 minutes in total

Frequently asked questions

How do I get an API key?
Create a free PVADeals account, open Settings → API keys and create a key. Keep it private: anyone with the key can spend your credits.
How are API purchases paid for?
Numbers you buy through the API or the MCP server are paid from your PVADeals credit balance, the same way as purchases in the dashboard.
Which countries can I order through the API?
US and UK numbers for specific services, short-term or long-term; 20-minute numbers for specific services in Australia, Canada, Indonesia, Argentina, Brazil, Chile, Colombia, the Philippines, South Africa and Turkey; and All Services long-term rentals in the US, the UK, Canada, Hong Kong, Indonesia and Australia.
Can I keep a 20-minute number longer through the API?
Yes. POST /v3/api/convert-to-ltr/{id} keeps an eligible US or UK 20-minute number for 30 days for a flat $8.00, and GET /v3/api/convert-to-ltr/{id}/preview checks first. In MCP it’s the convert_to_ltr tool.
Can a long-term number renew by itself?
Yes. Turn renewal on with POST /v3/api/renew-ltr/{id} and autoRenew set to true: a per-service long-term number then renews every term until you turn it off. An All Services number renews once by default; add keepRenewing set to true and it renews every term too.
Can an AI agent buy numbers by itself?
Yes. The MCP server’s purchase tools spend your credits, so tell your agent to ask you before it buys, as our example prompts do.

Ready for your first number?

Creating an account is free. Add credits from $3 and start receiving SMS codes.