SMS पाने का API
एक JSON API से नंबर खरीदिए और सत्यापन कोड पढ़िए। बिना पहचान की जाँच के, भुगतान क्रिप्टोकरेंसी में।
यह API कैसे व्यवस्थित है?
- खाता बनाइए और लौटाया गया वाक्यांश सहेज लीजिए। यही एकमात्र पहुँच है, और इसे रीसेट नहीं किया जा सकता।
- टॉप-अप बनाइए, क्रिप्टोकरेंसी भेजिए और जमा होने का इंतज़ार कीजिए।
- जिस सेवा और देश के लिए चाहिए, उसका नंबर खरीदिए — बैलेंस उसी क्षण कट जाता है।
- कोड वाला 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. खाता बनाइए और वाक्यांश सहेज लीजिए
SEED=$(curl -s -X POST https://otpdrop.com/api/v1/accounts | jq -r .seed)
# 2. बैलेंस भरिए — लौटाए गए पते पर coin_amount भेजिए
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. टॉप-अप जमा होने तक पूछते रहिए
curl -s https://otpdrop.com/api/v1/topups/TOPUP_ID \
-H "Authorization: Bearer \$SEED" | jq .status
# 4. खरीदने से पहले क़ीमत जाँच लीजिए
curl -s 'https://otpdrop.com/api/v1/quote?service=telegram&country=us'
# 5. खरीदिए — बैलेंस कटता है, नंबर तुरंत मिल जाता है
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. कोड के लिए पूछते रहिए
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 सर्वर
वही सारे काम https://otpdrop.com/mcp पर Model Context Protocol के ज़रिए भी उपलब्ध हैं, ग्यारह
टूलों के रूप में। इसे 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 का ख़र्च कितना है?
नंबरों के अलावा कुछ नहीं। न सदस्यता, न प्रति कॉल शुल्क, न कोई न्यूनतम मात्रा — क़ीमतें वही हैं जो साइट पर हैं।
यह API किन प्रोग्रामिंग भाषाओं के साथ काम करता है?
हर उस भाषा के साथ जो HTTPS अनुरोध कर सके। यह HTTP पर सामान्य JSON है, एक bearer हेडर के साथ: न कोई SDK इंस्टॉल करना है, न हमारे संस्करणों से कुछ मिलाकर रखना है।
अगर SMS न आए तो क्या होता है?
अवधि ख़त्म होने पर ऑर्डर का पैसा अपने आप बैलेंस में लौट आता है; आप उसे साइट से पहले भी रद्द कर सकते हैं। आप डिलीवर हुए कोड के पैसे देते हैं, कोशिशों के नहीं।
क्या REST API और MCP सर्वर एक ही चीज़ हैं?
हाँ, जान-बूझकर। हर REST एंडपॉइंट किसी MCP टूल कॉल का ही अनुवाद है, इसलिए वे अलग-अलग रास्ते नहीं जा सकते: एक को बदलना दूसरे को बदलना है। जो आपके क्लाइंट के लिए ज़्यादा सुविधाजनक हो, वही चुनिए।
क्या बिना कुछ ख़र्च किए API आज़माया जा सकता है?
कैटलॉग, क़ीमत की गणना और खाता बनाना मुफ़्त हैं: यानी एकीकरण का ज़्यादातर हिस्सा किसी भी टॉप-अप से पहले लिखा और जाँचा जा सकता है। पैसा सिर्फ़ खरीद पर लगता है।