رفتن به محتوای اصلی
100+
کشورها
بیش از ۱۰۰۰ سرویس. پرداخت با رمزارز، بدون KYC.
خرید شماره

API تأیید SMS — SMSNoKYC

تأیید OTP را سرتاسر خودکار کنید. شماره‌های مجازی در بیش از ۱۹۰ کشور رزرو کنید، کدهای پیامک را در چند ثانیه بخوانید، خطوط اختصاصی بلندمدت اجاره کنید و هر سفارش را از یک سطح REST یگانه فرمان دهید — بدون کلید API، بدون احراز هویت، پرداخت با ارز دیجیتال.

زمان مطالعه: ۵ دقیقه REST · JSON · OpenAPI 3.0 مشخصات OpenAPI →

احراز هویت الزامی است. هر درخواست بر یک کوکی نشست تکیه دارد، پس باید در حساب SMSNoKYC خود وارد شده باشید. پیش از فراخوان، از راه رابط وب یا نقطه احراز هویت یک نشست برپا کنید.

چرا توسعه‌دهندگان API سیم‌نوکی‌وای‌سی را انتخاب می‌کنند

SMSNoKYC انعطاف‌پذیرترین SMS verification API برای توسعه‌دهندگانی است که به ناشناسی، پوشش جهانی و قیمت‌گذاری شفاف نیاز دارند. برخلاف ارائه‌دهندگان سنتی SMS-OTP که دسترسی را پشت قراردادهای سازمانی، حداقل‌های ماهانه و پرسش‌نامه‌های KYC قفل می‌کنند، SMSNoKYC با هر HTTPS client کار می‌کند، دقیقاً به ازای هر شماره هزینه می‌گیرد و بیش از ۲۰ ارز دیجیتال از جمله Bitcoin، Monero، Ethereum، USDT، USDC، Solana، Litecoin، XRP، TRON و Toncoin را می‌پذیرد.

موارد استفاده رایج شامل خودکارسازی ثبت‌نام حساب‌ها برای QA در مقیاس بزرگ، بازیابی رمزهای یک‌بارمصرف برای عوامل headless و ربات‌های CI، اعتبارسنجی جریان‌های نیازمند شماره تلفن در محیط‌های continuous integration، اجاره شماره‌های اختصاصی بلندمدت برای حساب‌های Telegram یا WhatsApp که به دریافت مستمر SMS نیاز دارند، و تأمین تأیید هویت توزیع‌شده جغرافیایی در ۱۹۰+ کشور با کنترل صریح سطح اپراتور — مجازی، فیزیکی یا پریمیوم می‌شود.

احراز هویت

API از احراز هویت جلسه مبتنی بر کوکی استفاده می‌کند. برای احراز هویت برنامه‌نویسی:

  1. یک درخواست POST به /auth-api.php همراه با عبارت seed خود ارسال کنید
  2. کوکی نشست را از پاسخ ذخیره کنید
  3. کوکی را در تمام درخواست‌های API بعدی قرار دهید
POST /auth-api.php

با عبارت seed خود احراز هویت کنید و یک نشست برقرار کنید.

پارامترنوعالزامیتوضیحات
actionstringالزامیباید "login" باشد
seedstringالزامیعبارت seed دسترسی 16 کاراکتری شما (مثال: AbC3-dEf4-gHj5-kLm6)
cURL
Python
JavaScript
# Login and save session cookie curl -X POST https://smsnokyc.com/auth-api.php \ -d "action=login&seed=AbC3-dEf4-gHj5-kLm6" \ -c cookies.txt
import requests session = requests.Session() resp = session.post("https://smsnokyc.com/auth-api.php", data={ "action": "login", "seed": "AbC3-dEf4-gHj5-kLm6" }) data = resp.json() print(data) # {"success": true, "user": {...}} # session object now holds the cookie for all future requests
const resp = await fetch("https://smsnokyc.com/auth-api.php", { method: "POST", credentials: "include", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: "action=login&seed=AbC3-dEf4-gHj5-kLm6" }); const data = await resp.json(); console.log(data); // {success: true, user: {...}}
پاسخ موفق
{ "success": true, "user": { "id": 42, "prefix": "AbC3", "balance": "74.50" } }
پاسخ خطا
{ "success": false, "error": "Invalid seed." }

آدرس پایه

تمام نقاط پایانی API نسبت به:

https://smsnokyc.com/api.php?action={action}

تمام پاسخ‌ها به فرمت JSON هستند. نقاط پایانی POST هر دو بدنه درخواست application/json و application/x-www-form-urlencoded را می‌پذیرند.

محدودیت درخواست‌ها

API محدودیت‌های نرخ زیر را اعمال می‌کند:

نقطه پایانیمحدودیتبازه زمانی
احراز هویت5 تلاش15 دقیقه
تمام endpoint‌های دیگربدون محدودیت سخت

محدودیت نرخ: احراز هویت به 5 تلاش در هر 15 دقیقه محدود است. سایر endpoint‌ها در حال حاضر محدودیت نرخ ندارند، اما استفاده بیش از حد ممکن است محدود شود. از فواصل درخواست معقول استفاده کنید.

مدیریت خطا

تمام خطاها یک شیء JSON با فیلد <code>error</code> برمی‌گردانند:

{ "error": "Description of what went wrong" }
کد HTTPمعنی
200موفقیت (بدنه پاسخ را برای خطاهای سطح برنامه بررسی کنید)
403توکن CSRF نامعتبر
405روش HTTP اشتباه (مثال: GET روی endpoint فقط POST)
429محدودیت نرخ بیش از حد مجاز

خطاهای رایج در سطح برنامه:

خطاعلت
"Login required"نشست منقضی شده یا احراز هویت نشده
"Insufficient balance"موجودی ناکافی — شامل فیلدهای need و have
"Service not available for this country"عدم موجودی یا خدمت غیرفعال برای کشور انتخاب‌شده
"Missing country or service"پارامترهای الزامی ارائه نشده‌اند

لیست کشورها

GET /api.php?action=countries

تمام کشورهای فعال با شماره‌های مجازی موجود را برمی‌گرداند. نیازی به احراز هویت نیست.

cURL
Python
JavaScript
curl https://smsnokyc.com/api.php?action=countries
resp = session.get("https://smsnokyc.com/api.php", params={"action": "countries"}) countries = resp.json() for c in countries: print(c["code"], c["name"])
const resp = await fetch("https://smsnokyc.com/api.php?action=countries"); const countries = await resp.json();
پاسخ
[ { "id": 1, "code": "us", "name": "USA" }, { "id": 2, "code": "gb", "name": "UK" }, { "id": 3, "code": "de", "name": "Germany" } ]

لیست سرویس‌ها

GET /api.php?action=services&country={code}

خدمات موجود برای یک کشور خاص را شامل قیمت‌ها و موجودی برمی‌گرداند. بدون کد کشور، تمام خدمات بدون قیمت را برمی‌گرداند.

پارامترنوعالزامیتوضیحات
countrystringاختیاریکد کشور ISO 3166-1 alpha-2 (مثال: us، gb، de)
پاسخ (با کشور)
[ { "id": 12, "name": "WhatsApp", "slug": "whatsapp", "icon_code": "WA", "icon_color": "#25d366", "category": "social", "price": "0.35", "stock": 847 } ]

لیست اپراتورها

GET /api.php?action=operators&country={code}

اپراتورهای موجود برای یک کشور خاص را برمی‌گرداند. هر اپراتور یک نوع و یک ضریب قیمت اعمال‌شده بر قیمت پایه خدمت دارد.

پارامترنوعالزامیتوضیحات
countrystringالزامیکد کشور ISO 3166-1 alpha-2
پاسخ
[ { "id": 5, "name": "T-Mobile", "type": "physical", "price_multiplier": "1.50", "icon_slug": "tmobile", "icon_domain": "t-mobile.com" } ]

انواع اپراتور: virtual — شماره‌های VoIP، ارزان‌ترین، ممکن است توسط برخی سرویس‌ها مسدود شوند. physical — سیم‌کارت واقعی، نرخ موفقیت بالاتر. premium — سریع‌ترین تحویل (~10 ثانیه)، بالاترین نرخ موفقیت.

خرید شماره (فعال‌سازی SMS)

POST /api.php?action=buy

یک شماره مجازی برای تأیید پیامکی یک‌بار مصرف خریداری کنید. شماره به مدت 20 دقیقه فعال است. اگر پیامکی دریافت نشود، موجودی شما به‌صورت خودکار برگردانده می‌شود.

پارامترنوعالزامیتوضیحات
countrystringالزامیکد کشور (مثال: us)
service_idintegerالزامیشناسه خدمت از لیست خدمات
operator_idintegerاختیاریشناسه اپراتور از لیست اپراتورها. برای اپراتور پیش‌فرض خالی بگذارید.
cURL
Python
JavaScript
curl -X POST https://smsnokyc.com/api.php?action=buy \ -b cookies.txt \ -H "Content-Type: application/json" \ -d '{"country":"us","service_id":12,"operator_id":5}'
resp = session.post("https://smsnokyc.com/api.php?action=buy", json={ "country": "us", "service_id": 12, "operator_id": 5 }) order = resp.json() print(f"Order #{order['order_id']} — ${order['price']}")
const resp = await fetch("https://smsnokyc.com/api.php?action=buy", { method: "POST", credentials: "include", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ country: "us", service_id: 12, operator_id: 5 }) }); const order = await resp.json();
پاسخ موفق
{ "success": true, "order_id": 1847, "price": 0.53, "balance": "73.97" }
خطا: موجودی ناکافی
{ "error": "Insufficient balance", "need": 0.53, "have": "0.10" }

لیست سفارشات

GET /api.php?action=orders

50 سفارش اخیر شما را شامل شماره‌تلفن‌ها و کدهای پیامکی برمی‌گرداند. این endpoint را برای بررسی کدهای پیامکی دریافتی در سفارشات فعال فراخوانی کنید.

پاسخ
[ { "id": 1847, "price": "0.53", "status": "completed", "phone_number": "+12025551234", "sms_code": "847293", "created_at": "2026-04-09 14:32:00", "country_code": "us", "country_name": "USA", "service_name": "WhatsApp", "operator_name": "T-Mobile" } ]

وضعیت سفارشات: active — در انتظار پیامک. completed — پیامک دریافت شد. cancelled — توسط کاربر لغو شد. refunded — بازپرداخت خودکار (پیامکی قبل از انقضا دریافت نشد). expired — منقضی شده.

دریافت قیمت اجاره

GET /api.php?action=rental_price&country={code}&operator_id={id}&duration={days}

قیمت اجاره یک شماره اختصاصی از یک اپراتور خاص برای مدت معین را دریافت کنید.

پارامترنوعالزامیتوضیحات
countrystringالزامیکد کشور
operator_idintegerالزامیشناسه اپراتور
durationintegerالزامیمدت اجاره به روز: 7، 14، 30، یا 90
پاسخ
{ "price": "12.50", "duration": 30, "operator": "T-Mobile", "type": "physical", "country": "USA" }

اجاره شماره

POST /api.php?action=rental_buy

یک یا چند شماره تلفن اختصاصی اجاره کنید. شماره در تمام دوره اجاره منحصراً متعلق به شماست و پیامک‌های ورودی نامحدود دریافت می‌کند.

پارامترنوعالزامیتوضیحات
countrystringالزامیکد کشور
operator_idintegerالزامیشناسه اپراتور
durationintegerالزامی7، 14، 30، یا 90 روز
qtyintegerاختیاریتعداد شماره‌ها برای اجاره (1–10، پیش‌فرض: 1)
پاسخ موفق
{ "success": true, "order_ids": [1848, 1849], "total": 25.00, "qty": 2, "unit_price": 12.50, "duration": 30, "balance": "49.50" }

دریافت اطلاعات کاربر

GET /api.php?action=user

اطلاعات حساب و موجودی کاربر فعلی را برمی‌گرداند. از آن برای بررسی وضعیت احراز هویت و موجودی استفاده کنید.

احراز هویت شده
{ "logged_in": true, "id": 42, "prefix": "AbC3", "balance": "74.50" }
احراز هویت نشده
{ "logged_in": false }

نمونه گردش کار کامل

در اینجا یک نمونه کامل Python آمده که احراز هویت می‌کند، سرویسی پیدا می‌کند، شماره‌ای می‌خرد و کد SMS را استعلام می‌کند:

Python
import requests, time BASE = "https://smsnokyc.com" SEED = "AbC3-dEf4-gHj5-kLm6" s = requests.Session() # 1. Authenticate s.post(f"{BASE}/auth-api.php", data={"action": "login", "seed": SEED}) # 2. Check balance user = s.get(f"{BASE}/api.php?action=user").json() print(f"Balance: ${user['balance']}") # 3. Get services for USA services = s.get(f"{BASE}/api.php?action=services&country=us").json() whatsapp = next(svc for svc in services if svc["name"] == "WhatsApp") print(f"WhatsApp: ${whatsapp['price']} ({whatsapp['stock']} in stock)") # 4. Buy a number order = s.post(f"{BASE}/api.php?action=buy", json={ "country": "us", "service_id": whatsapp["id"] }).json() print(f"Order #{order['order_id']} created") # 5. Poll for SMS code for _ in range(60): orders = s.get(f"{BASE}/api.php?action=orders").json() my_order = next(o for o in orders if o["id"] == order["order_id"]) if my_order["sms_code"]: print(f"SMS code: {my_order['sms_code']}") print(f"Phone: {my_order['phone_number']}") break print("Waiting for SMS...") time.sleep(5) else: print("Timeout — balance will be refunded automatically")

سؤالات متداول

واسط برنامه‌نویسی تأیید SMSNoKYC برای چیست؟

همان کاتالوگی را که سایت دارد به کد خودِ شما می‌گشاید: شماره‌های مجازی در بیش از ۱۹۰ کشور برای تأیید یک‌بارهٔ OTP و برای اجاره‌های ۷ تا ۹۰ روزه. از راه یک واسط REST ساده با JSON می‌توانید برنامه‌ها را مرور کنید، قیمت‌های زنده را بخوانید، شماره رزرو کنید، کدهای ورودی را بگیرید و بهای فعال‌سازی‌های ناموفق را بازپس بگیرید — بدون احراز هویت و با صورت‌حساب تنها به ارز دیجیتال.

آیا کلید API یا توکن OAuth لازم است؟

نه. احراز هویت یک کوکی نشست است: عبارت دسترسی ۱۶ نویسه‌ای خود را یک‌بار با POST به ‎/auth-api.php‎ بفرستید، سپس کوکی بازگشتی را در هر فراخوان بعدی همراه کنید. چیزی برای تدارک، چرخش یا ابطال نیست — یک‌بار در هر نشست وارد می‌شوید و تا پایان عمر کوکی وارد می‌مانید.

واسط برنامه‌نویسی چقدر هزینه دارد؟

فراخوانی واسط رایگان است — نه هزینه ماهانه، نه اشتراک، نه کمینه حجم. تنها بابت هر شماره می‌پردازید: فعال‌سازی‌های یک‌باره از ۰٫۰۵ دلار، اجاره‌های اختصاصی از چند دلار برای ۷ روز. همه از موجودی پیش‌پرداختتان کسر می‌شود و هر فعال‌سازی‌ای که هرگز پیامکی نگیرد، خودبه‌خود بازپرداخت می‌شود.

چه زبان‌ها و چارچوب‌هایی می‌توانند آن را فرا بخوانند؟

هر چیزی که بتواند درخواست HTTPS بفرستد کار می‌کند — پایتون (requests، httpx)، نودجی‌اس (fetch، axios)، Go، PHP، روبی، جاوا، ‎#C‎، cURL از Bash و باقی. مستندات نمونه‌های آماده کپی به cURL، پایتون و جاوااسکریپت دارد، و یک فایل کامل OpenAPI 3.0 روی ‎/openapi.json‎ به شما امکان می‌دهد کلاینتی نوع‌دار به زبان دلخواهتان بسازید.

اگر کد تأیید هرگز نرسد چه می‌شود؟

هر فعال‌سازی پنجره‌ای ۲۰ دقیقه‌ای دارد. اگر پیش از بسته‌شدن پنجره چیزی نرسد، سفارش خودبه‌خود لغو می‌شود و بهای کامل به موجودی بازمی‌گردد — بی‌هیچ تیکت و بی‌هیچ تلاش دستی دوباره. موجودی بازپرداخت‌شده را می‌توانید بی‌درنگ روی شماره‌ای دیگر خرج کنید، شاید در رده اپراتوری دیگر (مجازی، فیزیکی یا ممتاز) برای نرخ موفقیت بهتر.

آیا واسط برنامه‌نویسی محدودیت نرخ دارد؟

ورود برای جلوگیری از حدس عبارت، به ۵ تلاش در هر ۱۵ دقیقه برای هر IP محدود است. باقی — کاتالوگ، خرید، سفارش‌ها، اجاره‌ها — فعلاً سقف سختی ندارد، اما فاصله‌های معقول نگه دارید: پرس‌وجوی ‎/api.php?action=orders‎ هر ۳ تا ۵ ثانیه برای خواندن پیامک بیش از کافی است، و انفجارهای پیوسته بالاتر از حدود ۱۰ درخواست در ثانیه ممکن است در سطح WAF محدود شوند.