API nhận SMS xác minh

Mua số và đọc mã xác minh qua một API JSON. Không KYC, chỉ tiền mã hóa.

REST · JSONOpenAPI 3.1 Đặc tả OpenAPI →

Mọi thao tác ở đây cũng là một công cụ MCP. Các endpoint REST là bản dịch của chính những công cụ mà máy chủ MCP cung cấp, nên một tác nhân tự chủ và một tích hợp thông thường đều nhận được hành vi y hệt. Nếu bạn đang trỏ một tác nhân AI tới OTPDrop, hãy bắt đầu từ trang dành cho tác nhân.

Các phần của API ghép với nhau ra sao?

  1. Tạo tài khoản và lưu cụm từ hạt giống nhận được. Đó là thông tin xác thực duy nhất và không đặt lại được.
  2. Tạo một lần nạp, gửi tiền mã hóa, rồi chờ được ghi có.
  3. Mua số cho dịch vụ và quốc gia bạn cần — số dư bị trừ ngay lập tức.
  4. Hỏi mã SMS theo chu kỳ. Không mã nào đến trước khi đơn hết hạn thì tự hoàn tiền.

Nạp một lần, mua nhiều lần: một lần nạp đủ cho bao nhiêu số thì tùy số dư vươn tới đâu, nên chỉ lần mua đầu tiên phải chờ xác nhận.

Xác thực

Gửi cụm từ hạt giống của tài khoản dưới dạng token bearer. Không có khóa API riêng và không có lệnh đăng nhập — cụm từ hạt giống chính là thông tin xác thực.

Authorization: Bearer YOUR-SEED-PHRASE

Các endpoint danh mục hoàn toàn không cần xác thực, nên bạn có thể xem dịch vụ, quốc gia và giá trước khi có tài khoản. Mọi thứ đụng tới tiền hay đơn hàng đều cần tiêu đề đó.

Cụm từ hạt giống không khôi phục được. Chúng tôi chỉ lưu giá trị băm của nó. Mất nó là tài khoản cùng số dư biến mất, không đặt lại được và không có đường hỗ trợ nào để vào lại.

URL gốc

Mọi endpoint đều tính tương đối với:

https://otpdrop.com/api/v1

Phản hồi ở dạng JSON. Thân yêu cầu POST nhận cả application/json lẫn application/x-www-form-urlencoded.

Lỗi

Khi hỏng, hệ thống trả về mã trạng thái ngoài 2xx cùng một đối tượng lỗi duy nhất.

{
  "error": {
    "code": "invalid_request",
    "message": "unknown service: \"whatsap\""
  }
}
Trạng tháiÝ nghĩa
200Thành công
201Đã tạo — một tài khoản, lần nạp hoặc đơn hàng nay đã tồn tại
401Thiếu hoặc sai cụm từ hạt giống trong tiêu đề Authorization
422Yêu cầu hiểu được nhưng không thực hiện được
500Có gì đó hỏng ở phía chúng tôi

Các thông báo 422 thường gặp:

Thông báoNguyên nhân
insufficient_fundsSố dư thấp hơn giá — hãy tạo một lần nạp trước
unknown serviceKhông có mã dịch vụ đó; xem «liệt kê dịch vụ»
unknown countryKhông có mã quốc gia đó; xem «liệt kê quốc gia»
unknown coinKhông nhận đồng coin đó; xem endpoint nạp tiền
amount_usd must be between…Mỗi lần nạp giới hạn $25–$1000

Có giới hạn tần suất không?

Không có hạn mức công bố và cũng không có khóa API nào để bóp, nhưng gọi endpoint trong vòng lặp thì không miễn phí. Hai trong số đó là endpoint để hỏi theo chu kỳ và đáng được cẩn thận riêng.

EndpointNhịp hợp lýVì sao
Danh mục và báo giáHãy lưu đệm ở máy bạnGiá ít khi đổi; không cần tải danh mục ở mỗi yêu cầu.
/topups/{id}Mỗi 10-15 giâyMạng xác nhận mất vài phút chứ không phải vài mili giây. Hỏi dồn dập cũng không biết sớm hơn.
/orders/{id}/smsMỗi 3-5 giâyMã thường tới trong vài giây; vòng lặp sát hơn chỉ tăng tải.
Mua hàngKhi cầnMỗi lần mua trừ vào số dư thật, nên một vòng lặp mất kiểm soát tốn tiền của bạn trước khi tốn của chúng tôi.

Lưu lượng trông như một cuộc tấn công sẽ bị chặn ngay ở rìa mạng, không kèm mã 429 lịch sự nào. Nếu bạn có lý do chính đáng để hỏi dồn hơn, hãy nhắn trước qua trang liên hệ.

Liệt kê dịch vụ

GET/api/v1/services

Mọi dịch vụ kèm mã, danh mục và giá thấp nhất. Không cần xác thực.

Yêu cầu

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

Phản hồi

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

Liệt kê quốc gia

GET/api/v1/countries

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

Yêu cầu

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

Phản hồi

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

Bảng giá

GET/api/v1/catalog

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

Tham số

TênKiểuMô tả
limitintegertùy chọnHow many rows to return, 1 to 500. Defaults to 12.

Yêu cầu

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

Phản hồi

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

Báo giá

GET/api/v1/quote

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

Tham số

TênKiểuMô tả
servicestringbắt buộcService code, e.g. telegram
countrystringbắt buộcCountry code, e.g. us

Yêu cầu

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

Phản hồi

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

Tạo tài khoản

POST/api/v1/accounts

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

Yêu cầu

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

Phản hồi

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

Tạo lần nạp

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.

Tham số

TênKiểuMô tả
amount_usdnumberbắt buộcHow much to add to the balance, in USD. Minimum 25, maximum 1000.
coinstringbắt buộcBTC, LTC, ETH, XMR, SOL, TRX, BNB, USDT, USDC and more

Yêu cầu

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"}'

Phản hồi

{
  "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
}

Trạng thái lần nạp

GET/api/v1/topups/{id}

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

Tham số

TênKiểuMô tả
idstringbắt buộcThe top-up id, in the path

Yêu cầu

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

Phản hồi

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

Mua một số

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.

Tham số

TênKiểuMô tả
servicestringbắt buộcService code, e.g. telegram
countrystringbắt buộcCountry code, e.g. us

Yêu cầu

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"}'

Phản hồi

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

Liệt kê đơn hàng của bạn

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.

Yêu cầu

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

Phản hồi

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

Lấy một đơn hàng

GET/api/v1/orders/{id}

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

Tham số

TênKiểuMô tả
idstringbắt buộcThe order id, in the path

Yêu cầu

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

Phản hồi

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

Lấy mã 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.

Tham số

TênKiểuMô tả
idstringbắt buộcThe order id, in the path

Yêu cầu

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

Phản hồi

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

Một tích hợp hoàn chỉnh trông ra sao?

Từ tài khoản tới mã trong sáu lần gọi. Mọi thứ bên dưới đều thật: dán vào là chạy.

# 1. Tạo tài khoản và giữ cụm từ hạt giống
SEED=$(curl -s -X POST https://otpdrop.com/api/v1/accounts | jq -r .seed)

# 2. Nạp tiền — gửi coin_amount tới địa chỉ nhận được
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. Hỏi cho tới khi tiền nạp được ghi có
curl -s https://otpdrop.com/api/v1/topups/TOPUP_ID \
  -H "Authorization: Bearer \$SEED" | jq .status

# 4. Xem giá trước khi quyết
curl -s 'https://otpdrop.com/api/v1/quote?service=telegram&country=us'

# 5. Mua — số dư bị trừ và số được cấp ngay
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. Hỏi cho tới khi có mã
until curl -s https://otpdrop.com/api/v1/orders/\$ORDER/sms \
  -H "Authorization: Bearer \$SEED" | jq -e .code; do sleep 4; done

Vẫn trình tự đó trong Python, không cần shell:

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)

Máy chủ MCP

Vẫn những thao tác đó, có sẵn qua Model Context Protocol tại https://otpdrop.com/mcp, dưới dạng mười một công cụ. Thêm vào Claude Code bằng:

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

Cách thiết lập và danh sách công cụ đầy đủ nằm ở trang dành cho tác nhân.

Tệp khám phá

Các mô tả dịch vụ đọc được bằng máy, tất cả đều phục vụ mà không cần xác thực.

TệpNội dung
/openapi.jsonToàn bộ lược đồ OpenAPI 3.1
/.well-known/agent.jsonKhả năng, mô hình xác thực và quy tắc nghiệp vụ
/llms.txtBản dẫn nhập ngắn cho mô hình ngôn ngữ
/llms-full.txtVẫn vậy, kèm trọn danh mục bên trong

Câu hỏi thường gặp

API của OTPDrop có cần khóa API không?

Không. Không có gì để xin cấp và không có bước phê duyệt. Thông tin xác thực chính là cụm từ hạt giống của tài khoản, gửi dưới dạng token bearer, còn các endpoint danh mục thì không cần gì cả.

API của OTPDrop tốn bao nhiêu?

Không tốn gì ngoài chính những số bạn mua. Không thuê bao, không phí theo lượt gọi, không mức tối thiểu — bạn trả đúng giá như người dùng trang web.

Những ngôn ngữ lập trình nào dùng được với API?

Bất kỳ ngôn ngữ nào gửi được một yêu cầu HTTPS. Đây là JSON thuần trên HTTP kèm một tiêu đề bearer, nên không có SDK phải cài và cũng chẳng có gì phải chạy theo các bản phát hành của chúng tôi.

Nếu mã SMS không bao giờ đến thì sao?

Đơn hàng tự hoàn về số dư khi hết hạn, và bạn có thể hủy sớm hơn qua trang web. Bạn bị tính tiền cho mã đã được giao, không phải cho một lần thử.

API REST có giống máy chủ MCP không?

Giống, và đó là chủ ý. Mỗi endpoint REST là bản dịch của một lần gọi công cụ MCP, nên hai bên không thể lệch nhau: sửa bên này là sửa luôn bên kia. Hãy chọn cái nào hợp với ứng dụng của bạn.

Thử API mà không tốn tiền được không?

Danh mục, báo giá và việc tạo tài khoản đều miễn phí, nên bạn có thể dựng và thử gần như trọn bộ tích hợp trước khi nạp số dư. Chỉ việc mua mới tốn tiền.