API دریافت پیامک

با یک API از نوع JSON شماره بخرید و کدهای تأیید را بخوانید. بدون بررسی هویت، پرداخت با ارز دیجیتال.

REST · JSONOpenAPI 3.1 مشخصات OpenAPI →

هر عملیاتی که اینجا هست یک ابزار MCP هم هست. نقاط پایانی REST ترجمهٔ همان ابزارهایی هستند که سرور MCP عرضه می‌کند: پس یک عامل خودگردان و یک یکپارچه‌سازی معمولی یکسان رفتار می‌کنند. اگر یک عامل هوش مصنوعی را به سوی OTPDrop هدایت می‌کنید، از بخش عامل‌ها آغاز کنید.

API چگونه سازمان یافته است؟

  1. یک حساب بسازید و عبارت بازگشتی را نگه دارید. تنها دسترسی همین است و بازنشانی‌شدنی نیست.
  2. یک شارژ بسازید، ارز دیجیتال را بفرستید و منتظر افزوده شدن آن بمانید.
  3. برای سرویس و کشور دلخواه یک شماره بخرید — موجودی بی‌درنگ کسر می‌شود.
  4. پیامک حاوی کد را استعلام کنید. اگر تا پایان اعتبار سفارش کدی نرسد، پول خودکار بازپرداخت می‌شود.

یک بار شارژ کنید، بارها بخرید: یک شارژ به اندازه‌ای که موجودی اجازه دهد شماره را پوشش می‌دهد، پس تنها نخستین خرید در انتظار یک تأیید می‌ماند.

احراز هویت

عبارت حساب را به‌عنوان توکن bearer بفرستید. نه کلید API جداگانه‌ای هست و نه فراخوان ورودی — عبارت خودش شناسه است.

Authorization: Bearer YOUR-SEED-PHRASE

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

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

نشانی پایه

همهٔ نقاط پایانی نسبت به این نشانی‌اند:

https://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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://www.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"
}

دریافت پیامک حاوی کد

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://www.otpdrop.com/api/v1/orders/ord_1ad450bf7a42519c/sms \
  -H 'Authorization: Bearer YOUR-SEED'

پاسخ

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

یک یکپارچه‌سازی کامل چه شکلی است؟

از حساب تا کد، شش فراخوان. هر آنچه در پی می‌آید واقعی است: بچسبانید و اجرا کنید.

# 1. ساخت حساب و نگه داشتن عبارت
SEED=$(curl -s -X POST https://www.otpdrop.com/api/v1/accounts | jq -r .seed)

# 2. شارژ — coin_amount را به آدرس بازگشتی بفرستید
curl -s -X POST https://www.otpdrop.com/api/v1/topups \
  -H "Authorization: Bearer \$SEED" \
  -H 'content-type: application/json' \
  -d '{"amount_usd": 25, "coin": "USDT"}'

# 3. استعلام تا افزوده شدن شارژ
curl -s https://www.otpdrop.com/api/v1/topups/TOPUP_ID \
  -H "Authorization: Bearer \$SEED" | jq .status

# 4. بررسی قیمت پیش از خرید
curl -s 'https://www.otpdrop.com/api/v1/quote?service=telegram&country=us'

# 5. خرید — موجودی کسر و شماره بی‌درنگ تحویل می‌شود
ORDER=$(curl -s -X POST https://www.otpdrop.com/api/v1/orders \
  -H "Authorization: Bearer \$SEED" \
  -H 'content-type: application/json' \
  -d '{"service": "telegram", "country": "us"}' | jq -r .order_id)

# 6. استعلام کد
until curl -s https://www.otpdrop.com/api/v1/orders/\$ORDER/sms \
  -H "Authorization: Bearer \$SEED" | jq -e .code; do sleep 4; done

همان دنباله در Python، بدون shell:

import time, requests

API = "https://www.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://www.otpdrop.com/mcp و در قالب یازده ابزار در دسترس‌اند. برای افزودن آن به Claude Code:

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

پیکربندی و فهرست کامل ابزارها در صفحهٔ عامل‌ها آمده است.

فایل‌های کشف

توصیف‌های ماشین‌خوان سرویس، همه بدون احراز هویت ارائه می‌شوند.

فایلمحتوا
/openapi.jsonشمای کامل OpenAPI 3.1
/.well-known/agent.jsonتوانمندی‌ها، مدل احراز هویت و قواعد کار
/llms.txtنشانه‌ای کوتاه برای مدل‌های زبانی
/llms-full.txtهمان، با فهرست کامل

پرسش‌های متداول

آیا برای API در OTPDrop کلید لازم است؟

خیر. چیزی برای درخواست کردن نیست و هیچ بررسی‌ای در کار نیست. شناسه همان عبارت حساب است که به‌عنوان توکن bearer فرستاده می‌شود — و نقاط پایانی فهرست حتی به آن هم نیازی ندارند.

API در OTPDrop چقدر هزینه دارد؟

فراتر از خودِ شماره‌ها هیچ. نه اشتراکی، نه صورت‌حسابی به‌ازای هر فراخوان، نه کمینهٔ حجمی — قیمت‌ها همان قیمت‌های سایت‌اند.

این API با چه زبان‌های برنامه‌نویسی کار می‌کند؟

هر زبانی که بتواند یک درخواست HTTPS بفرستد. این JSON معمولی روی HTTP با یک سرآیند bearer است: نه SDKای برای نصب، نه چیزی برای هماهنگ نگه داشتن با نسخه‌های ما.

اگر پیامک نرسد چه می‌شود؟

سفارش در پایان اعتبارش خودبه‌خود به موجودی بازپرداخت می‌شود؛ می‌توانید زودتر هم از سایت لغوش کنید. شما بهای کدهای تحویل‌شده را می‌پردازید، نه بهای تلاش‌ها.

آیا API از نوع REST و سرور MCP یک چیزند؟

بله، عمداً. هر نقطهٔ پایانی REST ترجمهٔ یک فراخوان ابزار MCP است، پس نمی‌توانند واگرا شوند: تغییر یکی یعنی تغییر دیگری. آن را برگزینید که با کلاینت شما بهتر می‌خواند.

آیا می‌توان API را بدون خرج کردن آزمود؟

فهرست، محاسبهٔ قیمت و ساخت حساب رایگان‌اند: پس بخش عمدهٔ یک یکپارچه‌سازی را می‌توان پیش از هر شارژی نوشت و آزمود. تنها خرید است که پول می‌برد.