API دریافت پیامک
با یک API از نوع JSON شماره بخرید و کدهای تأیید را بخوانید. بدون بررسی هویت، پرداخت با ارز دیجیتال.
API چگونه سازمان یافته است؟
- یک حساب بسازید و عبارت بازگشتی را نگه دارید. تنها دسترسی همین است و بازنشانیشدنی نیست.
- یک شارژ بسازید، ارز دیجیتال را بفرستید و منتظر افزوده شدن آن بمانید.
- برای سرویس و کشور دلخواه یک شماره بخرید — موجودی بیدرنگ کسر میشود.
- پیامک حاوی کد را استعلام کنید. اگر تا پایان اعتبار سفارش کدی نرسد، پول خودکار بازپرداخت میشود.
یک بار شارژ کنید، بارها بخرید: یک شارژ به اندازهای که موجودی اجازه دهد شماره را پوشش میدهد، پس تنها نخستین خرید در انتظار یک تأیید میماند.
احراز هویت
عبارت حساب را بهعنوان توکن 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.
پارامترها
| نام | نوع | توضیح | |
|---|---|---|---|
limit | integer | اختیاری | 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.
پارامترها
| نام | نوع | توضیح | |
|---|---|---|---|
service | string | الزامی | Service code, e.g. telegram |
country | string | الزامی | 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_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://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.
پارامترها
| نام | نوع | توضیح | |
|---|---|---|---|
id | string | الزامی | 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.
پارامترها
| نام | نوع | توضیح | |
|---|---|---|---|
service | string | الزامی | Service code, e.g. telegram |
country | string | الزامی | 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.
پارامترها
| نام | نوع | توضیح | |
|---|---|---|---|
id | string | الزامی | 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.
پارامترها
| نام | نوع | توضیح | |
|---|---|---|---|
id | string | الزامی | 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 را بدون خرج کردن آزمود؟
فهرست، محاسبهٔ قیمت و ساخت حساب رایگاناند: پس بخش عمدهٔ یک یکپارچهسازی را میتوان پیش از هر شارژی نوشت و آزمود. تنها خرید است که پول میبرد.