API do odbioru SMS

Kupuj numery i odczytuj kody weryfikacyjne przez API JSON. Bez kontroli tożsamości, płatność kryptowalutą.

REST · JSONOpenAPI 3.1 Specyfikacja OpenAPI →

Każda operacja tutaj jest zarazem narzędziem MCP. Punkty końcowe REST są tłumaczeniem tych samych narzędzi, które udostępnia serwer MCP: autonomiczny agent i zwykła integracja zachowują się więc identycznie. Jeśli kierujesz do OTPDrop agenta AI, zacznij od sekcji dla agentów.

Jak zorganizowane jest API?

  1. Utwórz konto i zachowaj zwróconą frazę. To jedyny dostęp i nie da się go zresetować.
  2. Utwórz doładowanie, wyślij kryptowalutę i poczekaj na zaksięgowanie.
  3. Kup numer dla wybranego serwisu i kraju — saldo zostaje pobrane od razu.
  4. Odpytaj o SMS z kodem. Jeśli żaden kod nie dotrze przed wygaśnięciem zamówienia, pieniądze wracają automatycznie.

Doładuj raz, kupuj często: jedno doładowanie pokrywa tyle numerów, na ile pozwala saldo, więc tylko pierwszy zakup czeka na potwierdzenie.

Uwierzytelnianie

Przekaż frazę konta jako token bearer. Nie ma osobnego klucza API ani wywołania logowania — fraza jest identyfikatorem.

Authorization: Bearer YOUR-SEED-PHRASE

Punkty końcowe katalogu nie wymagają uwierzytelniania: serwisy, kraje i ceny można więc przeglądać jeszcze przed założeniem konta. Wszystko, co dotyczy pieniędzy i zamówień, wymaga nagłówka.

Frazy nie da się odzyskać. Przechowujemy tylko jej skrót. Jeśli ją zgubisz, konto i jego saldo znikają, bez resetu i bez ratunku ze strony wsparcia.

Adres bazowy

Wszystkie punkty końcowe są względne wobec:

https://www.otpdrop.com/api/v1

Odpowiedzi są w formacie JSON. Treści POST przyjmujemy jako application/json albo application/x-www-form-urlencoded.

Błędy

W razie niepowodzenia zwracamy status spoza zakresu 2xx wraz z jednym obiektem błędu.

{
  "error": {
    "code": "invalid_request",
    "message": "unknown service: \"whatsap\""
  }
}
StatusZnaczenie
200Sukces
201Utworzono — konto, doładowanie albo zamówienie już istnieje
401Brak frazy albo błędna fraza w nagłówku Authorization
422Żądanie zrozumiane, ale niewykonalne
500Awaria po naszej stronie

Częste komunikaty przy 422:

KomunikatPrzyczyna
insufficient_fundsSaldo jest niższe od ceny — utwórz najpierw doładowanie
unknown serviceTaki kod serwisu nie istnieje; zobacz listę serwisów
unknown countryTaki kod kraju nie istnieje; zobacz listę krajów
unknown coinWaluta nieprzyjmowana; zobacz punkt końcowy doładowania
amount_usd must be between…Doładowania ograniczono do $25–$1000

Czy są limity zapytań?

Nie publikujemy żadnych limitów i nie ma klucza API, który dałoby się przydusić — ale wywoływanie punktów końcowych w pętli nie jest darmowe. Dwa z nich są przeznaczone do odpytywania w pętli i wymagają szczególnej uwagi.

Punkt końcowyRozsądne tempoDlaczego
Katalog i wyliczanie cenyTrzymaj je w swoim cacheCeny zmieniają się rzadko; przeładowywanie katalogu przy każdym żądaniu nic nie daje.
/topups/{id}Co 10–15 sekundPotwierdzenie sieciowe trwa minuty, a nie milisekundy. Częstsze odpytywanie niczego nie przyspieszy.
/orders/{id}/smsCo 3–5 sekundKody przychodzą zwykle w kilka sekund; ciaśniejsza pętla dokłada tylko obciążenia.
ZakupWedle potrzebyKażdy zakup pobiera prawdziwe pieniądze, więc pętla bez hamulca będzie kosztować Ciebie więcej niż nas.

Ruch przypominający atak zablokujemy wcześniej, bez uprzejmego 429. Jeśli masz uzasadniony powód, by odpytywać częściej, napisz do nas najpierw przez stronę kontaktu.

Lista serwisów

GET/api/v1/services

Wszystkie serwisy z kodem, kategorią i ceną minimalną. Uwierzytelnianie niewymagane.

Żądanie

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

Odpowiedź

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

Lista krajów

GET/api/v1/countries

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

Żądanie

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

Odpowiedź

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

Macierz cen

GET/api/v1/catalog

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

Parametry

NazwaTypOpis
limitintegeropcjonalneHow many rows to return, 1 to 500. Defaults to 12.

Żądanie

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

Odpowiedź

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

Wylicz cenę

GET/api/v1/quote

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

Parametry

NazwaTypOpis
servicestringwymaganeService code, e.g. telegram
countrystringwymaganeCountry code, e.g. us

Żądanie

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

Odpowiedź

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

Utwórz konto

POST/api/v1/accounts

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

Żądanie

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

Odpowiedź

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

Utwórz doładowanie

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.

Parametry

NazwaTypOpis
amount_usdnumberwymaganeHow much to add to the balance, in USD. Minimum 25, maximum 1000.
coinstringwymaganeBTC, LTC, ETH, XMR, SOL, TRX, BNB, USDT, USDC and more

Żądanie

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

Odpowiedź

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

Status doładowania

GET/api/v1/topups/{id}

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

Parametry

NazwaTypOpis
idstringwymaganeThe top-up id, in the path

Żądanie

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

Odpowiedź

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

Kup numer

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.

Parametry

NazwaTypOpis
servicestringwymaganeService code, e.g. telegram
countrystringwymaganeCountry code, e.g. us

Żądanie

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

Odpowiedź

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

Lista Twoich zamówień

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.

Żądanie

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

Odpowiedź

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

Pobierz zamówienie

GET/api/v1/orders/{id}

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

Parametry

NazwaTypOpis
idstringwymaganeThe order id, in the path

Żądanie

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

Odpowiedź

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

Pobierz SMS z kodem

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.

Parametry

NazwaTypOpis
idstringwymaganeThe order id, in the path

Żądanie

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

Odpowiedź

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

Jak wygląda pełna integracja?

Od konta do kodu — sześć wywołań. Wszystko poniżej jest prawdziwe: wklej i uruchom.

# 1. Utwórz konto i zachowaj frazę
SEED=$(curl -s -X POST https://www.otpdrop.com/api/v1/accounts | jq -r .seed)

# 2. Doładuj — wyślij coin_amount na zwrócony adres
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. Odpytuj, aż doładowanie zostanie zaksięgowane
curl -s https://www.otpdrop.com/api/v1/topups/TOPUP_ID \
  -H "Authorization: Bearer \$SEED" | jq .status

# 4. Sprawdź cenę przed zakupem
curl -s 'https://www.otpdrop.com/api/v1/quote?service=telegram&country=us'

# 5. Kup — saldo zostaje pobrane, numer wydany od razu
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. Odpytuj o kod
until curl -s https://www.otpdrop.com/api/v1/orders/\$ORDER/sms \
  -H "Authorization: Bearer \$SEED" | jq -e .code; do sleep 4; done

Ta sama sekwencja w Pythonie, bez powłoki:

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)

Serwer MCP

Te same operacje są dostępne przez Model Context Protocol pod https://www.otpdrop.com/mcp, w postaci jedenastu narzędzi. Aby dodać go do Claude Code:

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

Konfigurację i pełną listę narzędzi znajdziesz na stronie dla agentów.

Pliki odkrywania

Czytelne maszynowo opisy serwisu, wszystkie serwowane bez uwierzytelniania.

PlikZawartość
/openapi.jsonPełny schemat OpenAPI 3.1
/.well-known/agent.jsonMożliwości, model uwierzytelniania i zasady działania
/llms.txtKrótki drogowskaz dla modeli językowych
/llms-full.txtTo samo, wraz z pełnym katalogiem

Częste pytania

Czy do API OTPDrop potrzebny jest klucz?

Nie. Nie ma o co prosić i nie ma żadnej weryfikacji. Identyfikatorem jest fraza konta przekazywana jako token bearer — a punkty końcowe katalogu nie potrzebują nawet tego.

Ile kosztuje API OTPDrop?

Nic ponad same numery. Bez abonamentu, bez rozliczania za wywołanie, bez minimalnego wolumenu — ceny są takie same jak na stronie.

Z jakimi językami programowania działa API?

Z każdym, który potrafi wykonać żądanie HTTPS. To zwykły JSON po HTTP z nagłówkiem bearer: nie ma SDK do instalowania ani niczego, co trzeba synchronizować z naszymi wersjami.

Co się dzieje, gdy SMS nie dotrze?

Zamówienie zwraca się samo na saldo w chwili wygaśnięcia; możesz je też anulować wcześniej ze strony. Płacisz za dostarczone kody, a nie za próby.

Czy API REST i serwer MCP to to samo?

Tak, celowo. Każdy punkt końcowy REST jest tłumaczeniem wywołania narzędzia MCP, więc nie mogą się rozejść: zmiana jednego to zmiana drugiego. Wybierz to, co lepiej pasuje do Twojego klienta.

Czy można przetestować API, nic nie wydając?

Katalog, wyliczanie ceny i tworzenie konta są darmowe: większość integracji można więc napisać i sprawdzić przed jakimkolwiek doładowaniem. Pieniądze kosztuje wyłącznie zakup.