Virtual Phone Numbers for OTP
One-time SMS numbers for WhatsApp, Telegram, TikTok, Google, Facebook and more. Receive codes in real time — no SIM card needed.
230+ countriesGet a number
Get instant virtual phone numbers from 230+ countries for SMS OTP verification. Works with WhatsApp, Telegram, Google, Facebook and 2,400+ services. Free sign-up, rental numbers, temporary email, a free numbers page and a developer REST API — all on one wallet.
Everything you need for privacy-first sign-ups, QA testing and automated verification across thousands of services.
One-time SMS numbers for WhatsApp, Telegram, TikTok, Google, Facebook and more. Receive codes in real time — no SIM card needed.
230+ countriesKeep a number for longer when an account may ask for more codes later. Renewable and assigned to your account.
RenewableStricter services work better with a number from a different server. You can try another server and cancel for a refund if no code arrives.
Several serversTry a shared free number without an account. Free numbers are shared, so the success rate is lower than paid numbers.
No sign-upDisposable email addresses for email OTP. Receive the verification mail in your dashboard without exposing your own inbox.
Reorder for another codeOrder numbers, poll for codes and manage rentals and email from your own bot, script or store with a single API key.
Docs with live examplesPick the number type that fits the service you’re verifying. Prices are shown in your dashboard in real time.
SMS OTP for popular services across 230+ countries.
Shared numbers you can try before paying.
Keep one number for as long as you need it.
Disposable email addresses for email verification codes.
Built for freelancers, marketers, developers and resellers who need reliable SMS and email verification every day.
Add balance with local gateways and crypto; funds are credited to your wallet automatically.
View prices in your preferred currency in the dashboard and via the API.
One-click copy for numbers and codes, with a countdown timer on every active order.
No code? Cancel manually within 10 minutes and the amount returns to your wallet.
Receive email verification codes in your dashboard without exposing your own inbox.
Every order, code, refund and transaction is logged in your account.
Know instantly whether a number is out of stock, your balance is low or a server is busy.
Pick the country, app and server for every order, with the live price shown before you buy.
Responsive dashboard that works great on phones, so you can verify on the go.
Connect your own bot or store with one key and set your own margins.
Copy-paste examples for every endpoint, downloadable as Markdown.
WhatsApp support, Telegram channel and a ticket desk when you need a hand.
Plug our number, rental and temp-email API straight into your Telegram bot, SMS store or internal tool. Set your own prices and keep the margin.
# 1. Order a number (IDs come from getCountries / getServices)
import requests, time
API = "https://meotp.com/stubs/handler_api.php"
KEY = "YOUR_API_KEY"
r = requests.get(API, params={
"api_key": KEY, "action": "getNumber",
"service": "SERVICE_ID", "country": "COUNTRY_ID", "type": 1,
}).text
# ACCESS_NUMBER:order_id:phone:price
_, order_id, phone, price = r.split(":")
print("Number:", phone)
# 2. Poll for the code
while True:
s = requests.get(API, params={"api_key": KEY, "action": "getStatus", "id": order_id}).text
if s.startswith("STATUS_OK"):
print("Code:", s.split(":")[1]); break
time.sleep(3)
// 1. Order a number (IDs come from getCountries / getServices)
const API = "https://meotp.com/stubs/handler_api.php";
const KEY = "YOUR_API_KEY";
const q = (p) => API + "?" + new URLSearchParams({ api_key: KEY, ...p });
const order = await (await fetch(q({
action: "getNumber", service: "SERVICE_ID", country: "COUNTRY_ID", type: 1,
}))).text();
// ACCESS_NUMBER:order_id:phone:price
const [, orderId, phone] = order.split(":");
console.log("Number:", phone);
// 2. Poll for the code
for (;;) {
const s = await (await fetch(q({ action: "getStatus", id: orderId }))).text();
if (s.startsWith("STATUS_OK")) { console.log("Code:", s.split(":")[1]); break; }
await new Promise(r => setTimeout(r, 3000));
}
// 1. Order a number (IDs come from getCountries / getServices)
$api = 'https://meotp.com/stubs/handler_api.php';
$key = 'YOUR_API_KEY';
$order = file_get_contents($api . '?' . http_build_query([
'api_key' => $key, 'action' => 'getNumber',
'service' => 'SERVICE_ID', 'country' => 'COUNTRY_ID', 'type' => 1,
]));
// ACCESS_NUMBER:order_id:phone:price
[, $orderId, $phone] = explode(':', $order);
echo "Number: $phone\n";
// 2. Poll for the code
do {
sleep(3);
$s = file_get_contents($api . '?' . http_build_query([
'api_key' => $key, 'action' => 'getStatus', 'id' => $orderId,
]));
} while (strpos($s, 'STATUS_OK') !== 0);
echo 'Code: ' . explode(':', $s)[1];
# 1. Order a number → ACCESS_NUMBER:order_id:phone:price
curl "https://meotp.com/stubs/handler_api.php?api_key=YOUR_API_KEY&action=getNumber&service=SERVICE_ID&country=COUNTRY_ID&type=1"
# 2. Poll for the code → STATUS_WAIT_CODE or STATUS_OK:123456
curl "https://meotp.com/stubs/handler_api.php?api_key=YOUR_API_KEY&action=getStatus&id=ORDER_ID"
getCountries · getServicesList countries, services and live prices.
getNumber · getStatusOrder a number and poll for the OTP code.
/stubs/email-handler.phpBuy temp email, read the code, cancel or reorder.
From registration to your first OTP in about a minute.
Sign up with just your email. No credit card required to explore numbers and prices.
Top up any amount with local payment methods or crypto. Only pay for the codes you receive.
Choose from 230+ countries and 2,400+ services like WhatsApp, Telegram, Google or Discord.
The verification code shows up on your dashboard the moment the service sends it — copy it in one click.
From messengers and social networks to marketplaces and AI tools.
Plus thousands more, including Netflix, Uber, OpenAI ChatGPT, Tinder, Steam, PayPal and Twitter / X.
Local numbers across North America, Europe, Asia, Africa and Latin America. Live stock and prices are in your dashboard.
This country isn’t listed here — the full list is available after you sign in.
The full list and live prices are in your dashboard.
A virtual number for OTP verification is a phone number that isn’t tied to a SIM card in your pocket. It receives SMS (and, on supported servers, voice calls) and shows the verification code in your online dashboard, so you can sign up or log in to apps without exposing your personal number.
MeOTP offers one-time numbers, rentals and temporary email in one wallet. Not every service accepts every number, so we give you several servers to choose from — and if a code doesn’t arrive, you cancel and get refunded.
Whether you’re a developer testing sign-up flows, a marketer managing regional profiles, or a privacy-conscious user keeping spam away from your real number, you can receive SMS online in seconds and pay only for what you use.
Test multi-factor sign-ups and localisation flows in different countries.
Keep your personal number out of marketing and spam databases.
Manage separate social profiles across multiple regions.
Automate OTP steps in test pipelines through the REST API.
Built for speed, reliability and privacy.
Receive email verification codes in your dashboard instead of your own inbox.
Test a shared number on the Free Numbers page, no account needed.
Codes appear on your dashboard as soon as the service sends them.
Built for steady delivery, with a clear refund rule when a code doesn’t arrive. See the refund policy.
Use a separate number for every sign-up and keep your own number private.
Local gateways and crypto, with multi-currency price display.
Everything about MeOTP virtual numbers, billing and API integration.
Create an account, add a small balance and receive your first verification code in about a minute.