واجهة API لاستقبال رسائل SMS
اشترِ أرقاماً واقرأ رموز التحقق عبر واجهة JSON. بلا فحص هوية، والدفع بالعملات الرقمية.
كيف تنتظم الواجهة؟
- أنشئ حساباً واحفظ العبارة المعادة. فهي السبيل الوحيد إليه، ولا يمكن إعادة ضبطها.
- أنشئ عملية شحن، وأرسل العملة الرقمية، وانتظر إضافتها إلى الرصيد.
- اشترِ رقماً للخدمة والدولة المطلوبتين — ويُخصم الرصيد في الحال.
- استعلم عن رسالة 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.
المعاملات
| الاسم | النوع | الوصف | |
|---|---|---|---|
limit | integer | اختياري | 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.
المعاملات
| الاسم | النوع | الوصف | |
|---|---|---|---|
service | string | إلزامي | Service code, e.g. telegram |
country | string | إلزامي | 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_usd | number | إلزامي | How much to add to the balance, in USD. Minimum 25, maximum 1000. |
coin | string | إلزامي | 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.
المعاملات
| الاسم | النوع | الوصف | |
|---|---|---|---|
id | string | إلزامي | 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.
المعاملات
| الاسم | النوع | الوصف | |
|---|---|---|---|
service | string | إلزامي | Service code, e.g. telegram |
country | string | إلزامي | 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.
المعاملات
| الاسم | النوع | الوصف | |
|---|---|---|---|
id | string | إلزامي | 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.
المعاملات
| الاسم | النوع | الوصف | |
|---|---|---|---|
id | string | إلزامي | 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، ولذلك يستحيل أن يتباعدا: تغيير أحدهما تغيير للآخر. اختر ما يناسب عميلك.
هل يمكن تجربة الواجهة بلا إنفاق؟
الكتالوج وحساب السعر وإنشاء الحساب مجانية: فمعظم أي تكامل يمكن كتابته والتحقق منه قبل أي شحن. الشراء وحده هو ما يكلّف مالاً.