Get OTP codes for WhatsApp, Google, Telegram and 500+ services. USA, UK, Canada, Hong Kong & Indonesia numbers — no real phone needed.
Search for WhatsApp, Google, Telegram or any of 500+ supported services. Filter by country.
A real virtual number is assigned to you instantly. USA, UK, Canada, Hong Kong or Indonesia.
Enter the number in the app. Your OTP or verification code arrives in under 3 seconds.
Need more time? Hit Extend with one click — same number stays active, no interruption, no hassle.
Keep your number active as long as needed. Extend with one click before it expires — no need to buy a new one.
SMS arrives in under 3 seconds. Real-time delivery with live updates — no refreshing required.
USA (VOIP & Non-VOIP), United Kingdom, Canada, Hong Kong, and Indonesia numbers available.
No monthly subscription. No hidden fees. Top up your wallet and spend only what you need.
No personal phone number required. Keep your real identity completely separate.
Invite friends and earn bonus credit for every friend who joins and recharges.
https://pingnum.comhttps://pingnum.com + endpoint pathhttps://pingnum.com/api/user/apps| Scope | Max per 60s | Ban duration if exceeded |
|---|---|---|
| Per IP | 120 | 600 seconds (10 minutes) |
| Per API Key | 60 | 600 seconds (10 minutes) |
| Path | IP / 60s | Key / 60s | Ban duration |
|---|---|---|---|
| /api/user/buy | 20 | 10 | 900 seconds |
| /api/user/apps | 30 | 20 | 600 seconds |
| /api/user/sms/:id | 60 | 30 | 300 seconds |
| Header | Value |
|---|---|
| X-Api-Key | your_api_key_here |
| Content-Type | application/json (POST requests only) |
| Module | Endpoint | Method | Description |
|---|---|---|---|
| Account | /api/user/me | GET | Get account info & balance |
| Account | /api/user/balance | GET | Get wallet balance |
| Numbers | /api/user/apps | GET | Get available numbers list |
| Purchase | /api/user/buy | POST | Buy a number |
| SMS | /api/user/sms/:item_id | GET | Get received SMS |
| Session | /api/user/extend/:item_id | POST | Extend session by 15 min |
| Orders | /api/user/orders | GET | Get order history |
/api/user/me Get Account Info| Field | Type | Description |
|---|---|---|
| ok | bool | true on success |
| name | string | Account name |
| string | Account email | |
| balance | float | Wallet balance (USD) |
/api/user/balance Get Balance| Field | Type | Description |
|---|---|---|
| ok | bool | true on success |
| balance | float | Current wallet balance (USD) |
/api/user/apps Get Number List| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| type | int | No | 1 | 1=New, 2=Restart, 3=Renew |
| search | string | No | — | Filter by app name (fuzzy) |
| cate_id | int | No | — | 2=US VOIP, 5=US Non-VOIP, 3=Canada, 4=HK, 6=UK, 7=Indonesia |
| Field | Type | Description |
|---|---|---|
| app_id | int | App ID — use in /buy |
| name | string | App name (e.g. WhatsApp) |
| country | string | Country name |
| flag | string | Country flag emoji |
| cate_id | int | Category ID — use in /buy |
| price_t1 | float | Price for type=1 (New) in USD |
| price_t2 | float | Price for type=2 (Restart) in USD |
| price_t3 | float | Price for type=3 (Renew) in USD |
| stock | int / null | Available quantity (null if hidden) |
/api/user/buy Buy a Number| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| app_id | int | Yes | — | App ID from /apps |
| cate_id | int | Yes | — | Category ID from /apps |
| type | int | No | 1 | 1=New, 2=Restart, 3=Renew |
| num | int | No | 1 | Purchase quantity (max 50) |
| prefix | string | No | — | Specify area code prefix (e.g. "212") |
| Field | Type | Description |
|---|---|---|
| ordernum | string | Order number |
| count | int | Number of items purchased |
| total_charged | float | Amount deducted (USD) |
| balance_remaining | float | Balance after purchase (USD) |
| session_minutes | int | Session duration in minutes |
| items[].id | int | Item ID — use for /sms and /extend |
| items[].tel | string | Phone number |
| items[].end_time | string | Provider expiry date |
| items[].session_end | datetime | PingNum session expiry |
/api/user/sms/:item_id Get SMS| Parameter | Type | Required | Description |
|---|---|---|---|
| item_id | int | Yes | Item ID from /buy response (items[].id) |
| Field | Type | Description |
|---|---|---|
| number | string | Phone number |
| app | string | App name |
| status | string | active / expired |
| session_end | datetime | Session expiry time |
| sms[].content | string | Full SMS text |
| sms[].otp_code | string | Extracted OTP / verification code |
| sms[].received_at | datetime | Time SMS was received |
/api/user/extend/:item_id Extend Session| Parameter | Type | Required | Description |
|---|---|---|---|
| item_id | int | Yes | Item ID from /buy response (items[].id) |
| Field | Type | Description |
|---|---|---|
| session_end | datetime | New session expiry (extended by 15 min) |
| cost | float | Amount deducted (USD) |
| balance_remaining | float | Balance after extend (USD) |
/api/user/orders Get Order List| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| limit | int | No | 20 | Number of records to return (max 100) |
| Field | Type | Description |
|---|---|---|
| id | int | Order ID |
| ordernum | string | Order number |
| app_name | string | App name |
| quantity | int | Numbers purchased |
| total_price | float | Total charged (USD) |
| status | string | active / expired |
| numbers | string | Comma-separated phone numbers |
| item_ids | string | Comma-separated item IDs (use for /sms) |
| HTTP Code | Meaning | Description |
|---|---|---|
| 200 | Success | ok: true — request successful |
| 400 | Bad Request | Missing required field or insufficient balance |
| 401 | Unauthorized | Invalid or missing API key |
| 404 | Not Found | Item not found or does not belong to your account |
| 429 | Too Many Requests | Rate limit exceeded — slow down and retry after ban expires |
| 500 | Server Error | Provider error — check msg field for details |
"Invalid API key" — Key is wrong or not generated yet"Insufficient balance" — Top up your wallet and try again"App not found or unavailable" — app_id is invalid or stock is 0"Service list temporarily unavailable" — Provider API is down; retry in a few minutes"Number has fully expired on the provider" — Cannot extend; provider end_time has passeditem_id from the /buy response and call GET /api/user/sms/:item_id every 5–10 seconds until the SMS arrives.https://pingnum.comIf you face any issues with recharge, SMS delivery, or transfers, please contact our support team directly via Telegram or Email. Include your User ID or Order ID for faster resolution.
| User | Balance | Orders | Referrals | Joined | Status | Actions |
|---|
| User | Method | Requested | TxID | Date | Status | Action |
|---|
| User | Order # | Service | Numbers | Qty | Total | Date |
|---|
| User | Type | Amount | Balance After | Note | Date |
|---|
| App ID | Server | Action |
|---|
| ID | Service Name | Action |
|---|
| User | Phone | Service | Reported At | Action |
|---|
| # | User | Balance | Orders | Status | Actions |
|---|
| User | Balance | Phone Number | Service | Order # | Provider Expiry | SMS | |
|---|---|---|---|---|---|---|---|
| Loading... | |||||||
| Service | Base $ | 1st $ | Restart $ | Renew $ |
|---|
Pick a new service. Your same number will be used for a fresh session.
We collect your name, email address, and payment transaction IDs when you register or recharge. We do not store credit card or crypto wallet private keys.
Your information is used solely to provide our virtual number service — account management, order processing, and customer support. We do not sell or share your data with third parties.
SMS messages received on virtual numbers are temporarily stored to display to you during your active session. We do not read, analyze, or share the content of your SMS messages.
We use browser local storage to keep you logged in (JWT token). No third-party tracking cookies are used.
All data is transmitted over HTTPS. Passwords are hashed using bcrypt and never stored in plain text.
Account data is retained as long as your account is active. You may request deletion by contacting support.
For privacy-related questions, contact us via our Telegram support channel or email at support@pingnum.com.
By using PingNum, you agree to these Terms of Service. If you do not agree, please do not use our service.
PingNum provides temporary virtual phone numbers for receiving SMS verification codes. Numbers are for one-time or short-term use only.
You may use our service only for lawful purposes. You must not use PingNum for fraud, spam, harassment, or any illegal activity. We reserve the right to suspend accounts that violate this policy.
All payments are final. Balance added to your wallet is non-refundable unless a technical error on our side caused the issue. Unused balance may be carried forward indefinitely.
We aim for 99% uptime but do not guarantee uninterrupted service. Number availability depends on our supplier and may vary by country or service.
We reserve the right to terminate accounts that violate these terms without prior notice.
We may update these terms at any time. Continued use of the service after changes constitutes acceptance of the new terms.
For any questions regarding these terms, contact us via Telegram support or email support@pingnum.com.