واجهة API لاستقبال رسائل SMS

اشترِ أرقاماً واقرأ رموز التحقق عبر واجهة JSON. بلا فحص هوية، والدفع بالعملات الرقمية.

REST · JSONOpenAPI 3.1 مواصفة OpenAPI →

كل عملية هنا هي كذلك أداة MCP. فنقاط REST ترجمة للأدوات نفسها التي يعرضها خادم MCP: ومن ثمّ يتصرف الوكيل المستقل والتكامل العادي على نحو واحد. وإن كنت توجّه وكيل ذكاء اصطناعي إلى OTPDrop، فابدأ من قسم الوكلاء.

كيف تنتظم الواجهة؟

  1. أنشئ حساباً واحفظ العبارة المعادة. فهي السبيل الوحيد إليه، ولا يمكن إعادة ضبطها.
  2. أنشئ عملية شحن، وأرسل العملة الرقمية، وانتظر إضافتها إلى الرصيد.
  3. اشترِ رقماً للخدمة والدولة المطلوبتين — ويُخصم الرصيد في الحال.
  4. استعلم عن رسالة SMS التي تحمل الرمز. وإن لم يصل رمز قبل انتهاء مهلة الطلب، رُدّ المال تلقائياً.

اشحن مرة واشترِ مراراً: فعملية شحن واحدة تغطي من الأرقام ما يسمح به الرصيد، حتى إن أول عملية شراء وحدها هي التي تنتظر تأكيداً.

المصادقة

أرسل عبارة الحساب رمزاً من نوع bearer. ليس هناك مفتاح API منفصل ولا استدعاء لتسجيل الدخول — فالعبارة هي المعرّف.

Authorization: Bearer YOUR-SEED-PHRASE

ونقاط الكتالوج لا تطلب أي مصادقة: فالخدمات والدول والأسعار يمكن الاطلاع عليها قبل امتلاك حساب أصلاً. أما كل ما يمس المال والطلبات فيستلزم الترويسة.

العبارة لا تُستعاد. نحن لا نحفظ منها إلا البصمة. فإن فقدتها اختفى الحساب ورصيده، بلا إعادة ضبط ولا مراجعة للدعم.

العنوان الأساسي

جميع نقاط الوصول نسبية إلى:

https://otpdrop.com/api/v1

الاستجابات بصيغة JSON. وتُقبل أجسام POST بصيغة application/json أو application/x-www-form-urlencoded.

الأخطاء

عند الإخفاق تُعاد حالة خارج نطاق 2xx مع كائن خطأ واحد.

{
  "error": {
    "code": "invalid_request",
    "message": "unknown service: \"whatsap\""
  }
}
الحالةالمعنى
200نجاح
201أُنشئ — صار الحساب أو عملية الشحن أو الطلب موجوداً
401العبارة غائبة أو خاطئة في ترويسة Authorization
422الطلب مفهوم، لكن تنفيذه متعذّر
500خلل من جهتنا

رسائل شائعة في 422:

الرسالةالسبب
insufficient_fundsالرصيد أقل من السعر — أنشئ عملية شحن أولاً
unknown serviceرمز الخدمة هذا غير موجود؛ راجع قائمة الخدمات
unknown countryرمز الدولة هذا غير موجود؛ راجع قائمة الدول
unknown coinعملة غير مقبولة؛ راجع نقطة الشحن
amount_usd must be between…عمليات الشحن محصورة بين $25–$1000

هل هناك حدود للمعدّل؟

لا حصص معلنة، ولا مفتاح API يمكن خنقه — غير أن استدعاء النقاط في حلقة ليس مجانياً. واثنتان منها مصممتان للاستعلام المتكرر وتستدعيان انتباهاً خاصاً.

نقطة الوصولالوتيرة المعقولةلماذا
الكتالوج وحساب السعرخزّنهما مؤقتاً عندكالأسعار تتغير نادراً؛ ولا فائدة من إعادة تحميل الكتالوج مع كل طلب.
/topups/{id}كل 10 إلى 15 ثانيةتأكيد الشبكة يستغرق دقائق لا أجزاء من الثانية. والاستعلام الأكثر تواتراً لا يعلّمك شيئاً قبل أوانه.
/orders/{id}/smsكل 3 إلى 5 ثوانٍالرموز تصل عادة في ثوانٍ؛ والحلقة الأضيق لا تضيف إلا حملاً.
الشراءعند الحاجةكل عملية شراء تخصم مالاً حقيقياً، حتى إن حلقة بلا لجام ستكلفك أنت أكثر مما تكلفنا.

وحركة تشبه الهجوم ستُحجب قبل الوصول، بلا 429 مهذّب. فإن كان لديك سبب مشروع للاستعلام أكثر، فاكتب إلينا أولاً عبر صفحة الاتصال.

سرد الخدمات

GET/api/v1/services

جميع الخدمات مع رمزها وفئتها وأدنى سعر لها. لا تتطلب مصادقة.

الطلب

curl -s https://otpdrop.com/api/v1/services

الاستجابة

{
  "services": [
    {
      "code": "binance",
      "name": "Binance",
      "category": "Finance",
      "from_price_cents": 85,
      "color": "#F0B90B",
      "icon": "binance"
    }
  ],
  "count": 133
}

سرد الدول

GET/api/v1/countries

Every country with its dial code and how many services are available there. No authentication required.

الطلب

curl -s https://otpdrop.com/api/v1/countries

الاستجابة

{
  "countries": [
    {
      "code": "us",
      "name": "United States",
      "dial_code": "+1",
      "service_count": 133
    }
  ],
  "count": 197
}

مصفوفة الأسعار

GET/api/v1/catalog

The most useful service and country combinations with their prices, cheapest first. No authentication required.

المعاملات

الاسمالنوعالوصف
limitintegerاختياريHow many rows to return, 1 to 500. Defaults to 12.

الطلب

curl -s 'https://otpdrop.com/api/v1/catalog?limit=2'

الاستجابة

{
  "items": [
    {
      "service": "badoo",
      "country": "us",
      "price_cents": 35
    }
  ],
  "count": 2
}

حساب السعر

GET/api/v1/quote

The exact price for one service and country before you commit to buying. No authentication required.

المعاملات

الاسمالنوعالوصف
servicestringإلزاميService code, e.g. telegram
countrystringإلزاميCountry code, e.g. us

الطلب

curl -s 'https://otpdrop.com/api/v1/quote?service=telegram&country=us'

الاستجابة

{
  "service": "telegram",
  "country": "us",
  "price_cents": 111,
  "price_usd": "1.11",
  "currency": "USD",
  "purchasable": true
}

إنشاء حساب

POST/api/v1/accounts

Generates an account and returns its seed. This is the only time the seed is ever shown. No authentication required.

الطلب

curl -s -X POST https://otpdrop.com/api/v1/accounts

الاستجابة

{
  "public_id": "acc_7f3c1a92",
  "seed": "PABh-ZbRt-9xKm-Lq4V",
  "seed_prefix": "PABh",
  "balance_cents": 0,
  "warning": "This seed is shown exactly once, right now..."
}

إنشاء عملية شحن

POST/api/v1/topups

Claims a deposit address and returns the exact amount to send, as coin_amount, at the rate in rate_usd. Each top-up gets its own address, and it expires at expires_at. Send only the named coin, on the named network, before then.

المعاملات

الاسمالنوعالوصف
amount_usdnumberإلزاميHow much to add to the balance, in USD. Minimum 25, maximum 1000.
coinstringإلزاميBTC, LTC, ETH, XMR, SOL, TRX, BNB, USDT, USDC and more

الطلب

curl -s -X POST https://otpdrop.com/api/v1/topups \
  -H 'Authorization: Bearer YOUR-SEED' \
  -H 'content-type: application/json' \
  -d '{"amount_usd": 25, "coin": "XMR"}'

الاستجابة

{
  "topup_id": "top_019195919c80fc8f",
  "status": "awaiting_payment",
  "coin": "XMR",
  "address": "89Rm4XN39m9PCr8Sr3yAFnXvLRRWQVEE...",
  "amount_cents": 2500,
  "amount_usd": "25.00",
  "coin_amount": "0.1337",
  "rate_usd": 187.02,
  "bonus_cents": 0,
  "credited_total_cents": 2500,
  "expires_at": 1788532810
}

حالة عملية شحن

GET/api/v1/topups/{id}

Whether a deposit has been credited. Confirmation is not instant — poll this rather than assuming the funds arrived.

المعاملات

الاسمالنوعالوصف
idstringإلزاميThe top-up id, in the path

الطلب

curl -s https://otpdrop.com/api/v1/topups/top_019195919c80fc8f \
  -H 'Authorization: Bearer YOUR-SEED'

الاستجابة

{
  "topup_id": "top_019195919c80fc8f",
  "status": "credited",
  "coin": "XMR",
  "amount_usd": "25.00",
  "coin_amount": "0.1337",
  "credited_total_cents": 2500,
  "expires_at": 1788532810
}

شراء رقم

POST/api/v1/orders

Debits the balance and issues a number immediately. There is no per-purchase address and no second wait. Fails with insufficient_funds if the balance is short.

المعاملات

الاسمالنوعالوصف
servicestringإلزاميService code, e.g. telegram
countrystringإلزاميCountry code, e.g. us

الطلب

curl -s -X POST https://otpdrop.com/api/v1/orders \
  -H 'Authorization: Bearer YOUR-SEED' \
  -H 'content-type: application/json' \
  -d '{"service": "telegram", "country": "us"}'

الاستجابة

{
  "order_id": "ord_1ad450bf7a42519c",
  "service": "telegram",
  "country": "us",
  "phone": "+15558329008",
  "status": "paid",
  "price_usd": "1.11"
}

سرد طلباتك

GET/api/v1/orders

Every order on the account, newest first, with status, number and price. Useful for reconciling state after a restart rather than for polling.

الطلب

curl -s https://otpdrop.com/api/v1/orders \
  -H 'Authorization: Bearer YOUR-SEED'

الاستجابة

{
  "orders": [
    {
      "order_id": "ord_1ad450bf7a42519c",
      "service": "telegram",
      "country": "us",
      "phone": "+15558329008",
      "status": "paid",
      "price_usd": "1.11"
    }
  ],
  "count": 1
}

عرض طلب

GET/api/v1/orders/{id}

The current state of one order: its number, status and price.

المعاملات

الاسمالنوعالوصف
idstringإلزاميThe order id, in the path

الطلب

curl -s https://otpdrop.com/api/v1/orders/ord_1ad450bf7a42519c \
  -H 'Authorization: Bearer YOUR-SEED'

الاستجابة

{
  "order_id": "ord_1ad450bf7a42519c",
  "service": "telegram",
  "country": "us",
  "phone": "+15558329008",
  "status": "paid",
  "price_usd": "1.11"
}

جلب رسالة SMS التي تحمل الرمز

GET/api/v1/orders/{id}/sms

Poll this until arrived turns true. If the order expires with nothing delivered, the price returns to your balance automatically.

المعاملات

الاسمالنوعالوصف
idstringإلزاميThe order id, in the path

الطلب

curl -s https://otpdrop.com/api/v1/orders/ord_1ad450bf7a42519c/sms \
  -H 'Authorization: Bearer YOUR-SEED'

الاستجابة

{
  "order_id": "ord_1ad450bf7a42519c",
  "status": "paid",
  "arrived": false,
  "code": null
}

كيف يبدو تكامل كامل؟

من الحساب إلى الرمز، ستة استدعاءات. وكل ما يلي حقيقي: انسخه ونفّذه.

# 1. Create an account and keep the seed phrase
SEED=$(curl -s -X POST https://otpdrop.com/api/v1/accounts | jq -r .seed)

# 2. Top up — send coin_amount to the returned address
curl -s -X POST https://otpdrop.com/api/v1/topups \
  -H "Authorization: Bearer \$SEED" \
  -H 'content-type: application/json' \
  -d '{"amount_usd": 25, "coin": "USDT"}'

# 3. Poll until the top-up is credited
curl -s https://otpdrop.com/api/v1/topups/TOPUP_ID \
  -H "Authorization: Bearer \$SEED" | jq .status

# 4. Check the price before buying
curl -s 'https://otpdrop.com/api/v1/quote?service=telegram&country=us'

# 5. Buy — the balance is debited, the number issued at once
ORDER=$(curl -s -X POST https://otpdrop.com/api/v1/orders \
  -H "Authorization: Bearer \$SEED" \
  -H 'content-type: application/json' \
  -d '{"service": "telegram", "country": "us"}' | jq -r .order_id)

# 6. Poll for the code
until curl -s https://otpdrop.com/api/v1/orders/\$ORDER/sms \
  -H "Authorization: Bearer \$SEED" | jq -e .code; do sleep 4; done

والتسلسل نفسه بلغة Python، بلا صدفة أوامر:

import time, requests

API = "https://otpdrop.com/api/v1"
seed = requests.post(f"{API}/accounts").json()["seed"]
auth = {"Authorization": f"Bearer {seed}"}

topup = requests.post(f"{API}/topups", headers=auth,
                      json={"amount_usd": 25, "coin": "USDT"}).json()
print("send", topup["coin_amount"], topup["coin"], "to", topup["address"])

while requests.get(f"{API}/topups/{topup['topup_id']}",
                   headers=auth).json()["status"] != "credited":
    time.sleep(15)

order = requests.post(f"{API}/orders", headers=auth,
                      json={"service": "telegram", "country": "us"}).json()
print("number:", order["phone"])

while True:
    sms = requests.get(f"{API}/orders/{order['order_id']}/sms",
                       headers=auth).json()
    if sms["arrived"]:
        print("code:", sms["code"])
        break
    time.sleep(4)

خادم MCP

العمليات نفسها متاحة عبر Model Context Protocol على https://otpdrop.com/mcp، في صورة إحدى عشرة أداة. ولإضافته إلى Claude Code:

claude mcp add --transport http otpdrop https://otpdrop.com/mcp

وتجد الإعداد وقائمة الأدوات كاملة في صفحة الوكلاء.

ملفات الاكتشاف

أوصاف للخدمة تقرأها الآلة، وكلها تُقدَّم بلا مصادقة.

الملفالمحتوى
/openapi.jsonمخطط OpenAPI 3.1 كاملاً
/.well-known/agent.jsonالقدرات ونموذج المصادقة وقواعد التشغيل
/llms.txtدليل موجز لنماذج اللغة
/llms-full.txtالشيء نفسه، مع الكتالوج كاملاً

أسئلة شائعة

هل تحتاج واجهة OTPDrop API إلى مفتاح؟

لا. ليس هناك ما يُطلب ولا تحقق من أحد. المعرّف هو عبارة الحساب، تُرسَل رمزاً من نوع bearer — أما نقاط الكتالوج فلا تحتاج إليها أصلاً.

كم تكلّف واجهة OTPDrop API؟

لا شيء غير ثمن الأرقام نفسها. لا اشتراك ولا فوترة على الاستدعاءات ولا حد أدنى للحجم — والأسعار هي أسعار الموقع.

مع أي لغات البرمجة تعمل الواجهة؟

أي لغة تستطيع إرسال طلب HTTPS. فهي JSON عادي عبر HTTP مع ترويسة bearer: لا SDK تثبّته، ولا شيء تُبقيه متوافقاً مع إصداراتنا.

ماذا يحدث إن لم تصل رسالة SMS؟

يعيد الطلب ثمنه إلى الرصيد من تلقاء نفسه عند انتهاء مهلته؛ ويمكنك أيضاً إلغاؤه قبل ذلك من الموقع. أنت تدفع ثمن الرموز المسلَّمة لا ثمن المحاولات.

هل واجهة REST وخادم MCP شيء واحد؟

نعم، عن قصد. فكل نقطة REST ترجمة لاستدعاء أداة في MCP، ولذلك يستحيل أن يتباعدا: تغيير أحدهما تغيير للآخر. اختر ما يناسب عميلك.

هل يمكن تجربة الواجهة بلا إنفاق؟

الكتالوج وحساب السعر وإنشاء الحساب مجانية: فمعظم أي تكامل يمكن كتابته والتحقق منه قبل أي شحن. الشراء وحده هو ما يكلّف مالاً.