انتقل إلى المحتوى الرئيسي
100+
الدول
أكثر من 1000 خدمة. ادفع بالعملات الرقمية، بدون KYC.
شراء رقم

واجهة برمجة التحقق عبر SMS — SMSBurner

أتمت التحقق عبر OTP على نطاق واسع. اشترِ أرقام هواتف افتراضية في 190+ دولة، استقبل رموز SMS في ثوانٍ، استأجر أرقامًا مخصصة طويلة الأمد، وأدِر جميع طلباتك عبر نقطة REST واحدة — بدون مفتاح API، بدون KYC، والفوترة بالعملات المشفرة.

وقت القراءة: 5 دقائق REST · JSON · OpenAPI 3.0 مواصفات OpenAPI →

المصادقة مطلوبة. تستخدم جميع طلبات API مصادقة الجلسة القائمة على ملفات تعريف الارتباط. يجب أن تكون مسجلاً الدخول إلى حساب SMSBurner الخاص بك لاستخدام API. سجّل الدخول عبر واجهة الويب أو استخدم نقطة نهاية المصادقة لإنشاء جلسة.

لماذا يختار المطورون واجهة SMSBurner البرمجية؟

تُعدّ SMSBurner واجهة API التحقق عبر SMS الأكثر مرونةً للمطورين الذين يحتاجون إلى الخصوصية والتغطية العالمية والتسعير المتوقع. على خلاف مزودي SMS-OTP التقليديين الذين يشترطون عقودًا مؤسسية وحدودًا شهرية دنيا واستبيانات KYC، تعمل SMSBurner مع أي عميل HTTPS وتفرض رسومًا صارمةً بحسب عدد الأرقام، وتقبل 8 عملات مشفرة بما فيها Bitcoin وMonero وEthereum وUSDT وSolana وLitecoin وTRON.

تشمل حالات الاستخدام الشائعة: أتمتة إنشاء الحسابات لاختبارات QA على نطاق واسع، واسترداد كلمات المرور لمرة واحدة لوكلاء headless وبوتات CI، والتحقق من مسارات تشترط رقم هاتف ضمن بيئات التكامل المستمر، واستئجار أرقام مخصصة طويلة الأمد لحسابات Telegram أو WhatsApp التي تحتاج إلى استقبال SMS دون انقطاع، وتشغيل عمليات التحقق الجغرافي الموزع عبر 190+ دولة مع التحكم الصريح في مستوى المشغل — افتراضي أو فعلي أو مميز.

المصادقة

تستخدم 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://smsburner.com/auth-api.php \ -d "action=login&seed=AbC3-dEf4-gHj5-kLm6" \ -c cookies.txt
import requests session = requests.Session() resp = session.post("https://smsburner.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://smsburner.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://smsburner.com/api.php?action={action}

جميع الاستجابات بتنسيق JSON. تقبل نقاط نهاية POST أجسام الطلبات application/json و application/x-www-form-urlencoded.

حدود الطلبات

تفرض API حدود المعدل التالية:

نقطة النهايةالحدالنافذة
المصادقة5 محاولات15 دقيقة
جميع endpoints الأخرىبدون حد صارم

تحديد المعدل: المصادقة محدودة بـ 5 محاولات كل 15 دقيقة. endpoints الأخرى غير محدودة حاليًا، لكن الاستخدام المفرط قد يتم تقييده. استخدم فترات طلب معقولة.

معالجة الأخطاء

تُرجع جميع الأخطاء كائن 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://smsburner.com/api.php?action=countries
resp = session.get("https://smsburner.com/api.php", params={"action": "countries"}) countries = resp.json() for c in countries: print(c["code"], c["name"])
const resp = await fetch("https://smsburner.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 — بطاقات SIM حقيقية، معدل نجاح أعلى. premium — أسرع تسليم (~10 ثوانٍ)، أعلى معدل نجاح.

شراء رقم (تفعيل SMS)

POST /api.php?action=buy

اشترِ رقمًا افتراضيًا للتحقق عبر SMS لمرة واحدة. الرقم نشط لمدة 20 دقيقة. إذا لم يتم استلام أي SMS، يتم استرداد رصيدك تلقائيًا.

المعاملالنوعمطلوبالوصف
countrystringمطلوبرمز الدولة (مثال: us)
service_idintegerمطلوبمعرّف الخدمة من قائمة الخدمات
operator_idintegerاختياريمعرّف المشغل من قائمة المشغلين. اتركه فارغًا للمشغل الافتراضي.
cURL
Python
JavaScript
curl -X POST https://smsburner.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://smsburner.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://smsburner.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 طلبًا لك، بما في ذلك أرقام الهواتف ورموز SMS. استعلم عن هذا endpoint للتحقق من رموز SMS الواردة على الطلبات النشطة.

الاستجابة
[ { "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 — بانتظار SMS. completed — تم استلام SMS. cancelled — ألغاه المستخدم. refunded — استرداد تلقائي (لم يتم استلام SMS قبل انتهاء المهلة). 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

استأجر رقم هاتف مخصصًا واحدًا أو أكثر. الرقم حصري لك طوال فترة الإيجار ويستقبل رسائل SMS واردة غير محدودة.

المعاملالنوعمطلوبالوصف
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://smsburner.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")

الأسئلة الشائعة

ما الذي يمكنني فعله باستخدام واجهة SMSBurner للتحقق عبر SMS؟

تمنح واجهة SMSBurner البرمجية المطورين وصولًا برمجيًا إلى أرقام هواتف افتراضية في 190+ دولة، سواء للتحقق لمرة واحدة عبر SMS (رموز OTP) أو لاستئجار أرقام طويلة الأمد (7 أو 14 أو 30 أو 90 يومًا). يمكنك استعراض الخدمات، والاستعلام عن الأسعار اللحظية، وتخصيص الأرقام، واسترداد رموز SMS الواردة، واسترداد المبالغ عند فشل التفعيل — وكل ذلك عبر واجهة JSON REST، بدون KYC وبفوترة بالعملات المشفرة حصرًا.

هل أحتاج إلى مفتاح API أو رمز OAuth لاستخدام الواجهة البرمجية؟

لا. تعتمد واجهة SMSBurner البرمجية على المصادقة بالجلسة عبر ملفات تعريف الارتباط (Cookie): أرسل طلب POST واحدًا إلى /auth-api.php مع seed الوصول المكوّن من 16 حرفًا، ثم أعد استخدام ملف تعريف الجلسة المُعاد في كل طلب لاحق. لا يوجد مفتاح API يستلزم إنشاؤه أو تدويره أو إلغاؤه — تُصادَق مرة واحدة لكل جلسة وتبقى مصادقًا طوال عمر ملف تعريف الارتباط.

كم تبلغ تكلفة استخدام واجهة SMSBurner البرمجية؟

الواجهة البرمجية نفسها مجانية — لا رسوم شهرية، ولا اشتراكات، ولا حد أدنى لحجم الطلبات. تدفع فقط مقابل كل رقم: تبدأ تفعيلات SMS لمرة واحدة من $0.05، وتبدأ إيجارات الأرقام المخصصة طويلة الأمد من $4.79 لمدة 7 أيام. تُخصَم كل عملية من رصيدك المدفوع مسبقًا، وأي تفعيل لم يستقبل SMS يُسترد تلقائيًا.

ما لغات البرمجة والأطر المدعومة؟

أي لغة أو منصة قادرة على إصدار طلبات HTTPS يمكنها استدعاء الواجهة البرمجية — Python (requests وhttpx) وNode.js (fetch وaxios) وGo وPHP وRuby وJava وC# وBash مع cURL وغيرها. تتضمن الوثائق أمثلة جاهزة للتشغيل بـ cURL وPython وJavaScript، كما تتوفر مواصفة OpenAPI 3.0 كاملة على /openapi.json لتوليد عميل مكتوب بلغتك تلقائيًا.

ماذا يحدث إذا لم يصل رمز التحقق عبر SMS؟

لكل تفعيل نافذة تسليم مدتها 20 دقيقة. إذا لم يصل أي SMS قبل انتهاء هذه النافذة، يُلغى الطلب تلقائيًا ويُضاف المبلغ كاملًا إلى رصيد حسابك — دون الحاجة لفتح تذكرة دعم أو إعادة محاولة يدوية. يمكنك فورًا استخدام الرصيد المُستردّ لتخصيص رقم آخر، مع إمكانية اختيار مستوى مشغل مختلف (افتراضي أو فعلي أو مميز) لنسبة تسليم أعلى.

هل توجد حدود لمعدل الطلبات على واجهة SMSBurner البرمجية؟

تخضع المصادقة لحد معدل يبلغ 5 محاولات كل 15 دقيقة لكل IP، مما يحمي من هجمات التخمين الشاملة على seed الوصول. أما جميع النقاط الأخرى — الكتالوج والشراء والطلبات والإيجارات — فلا تخضع حاليًا لحد صارم، غير أننا نطلب الإبقاء على فترات زمنية معقولة بين الطلبات: يكفي الاستعلام على /api.php?action=orders كل 3–5 ثوانٍ لاسترداد SMS، وقد تخضع الطلبات المتواصلة التي تتجاوز ~10 req/s للتقييد على مستوى WAF.