API do odbioru SMS
Kupuj numery i odczytuj kody weryfikacyjne przez API JSON. Bez kontroli tożsamości, płatność kryptowalutą.
Jak zorganizowane jest API?
- Utwórz konto i zachowaj zwróconą frazę. To jedyny dostęp i nie da się go zresetować.
- Utwórz doładowanie, wyślij kryptowalutę i poczekaj na zaksięgowanie.
- Kup numer dla wybranego serwisu i kraju — saldo zostaje pobrane od razu.
- 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.
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\""
}
}
| Status | Znaczenie |
|---|---|
200 | Sukces |
201 | Utworzono — konto, doładowanie albo zamówienie już istnieje |
401 | Brak frazy albo błędna fraza w nagłówku Authorization |
422 | Żądanie zrozumiane, ale niewykonalne |
500 | Awaria po naszej stronie |
Częste komunikaty przy 422:
| Komunikat | Przyczyna |
|---|---|
insufficient_funds | Saldo jest niższe od ceny — utwórz najpierw doładowanie |
unknown service | Taki kod serwisu nie istnieje; zobacz listę serwisów |
unknown country | Taki kod kraju nie istnieje; zobacz listę krajów |
unknown coin | Waluta 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ńcowy | Rozsądne tempo | Dlaczego |
|---|---|---|
| Katalog i wyliczanie ceny | Trzymaj je w swoim cache | Ceny zmieniają się rzadko; przeładowywanie katalogu przy każdym żądaniu nic nie daje. |
/topups/{id} | Co 10–15 sekund | Potwierdzenie sieciowe trwa minuty, a nie milisekundy. Częstsze odpytywanie niczego nie przyspieszy. |
/orders/{id}/sms | Co 3–5 sekund | Kody przychodzą zwykle w kilka sekund; ciaśniejsza pętla dokłada tylko obciążenia. |
| Zakup | Wedle potrzeby | Każ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
| Nazwa | Typ | Opis | |
|---|---|---|---|
limit | integer | opcjonalne | How 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
| Nazwa | Typ | Opis | |
|---|---|---|---|
service | string | wymagane | Service code, e.g. telegram |
country | string | wymagane | Country 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
| Nazwa | Typ | Opis | |
|---|---|---|---|
amount_usd | number | wymagane | How much to add to the balance, in USD. Minimum 25, maximum 1000. |
coin | string | wymagane | BTC, 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
| Nazwa | Typ | Opis | |
|---|---|---|---|
id | string | wymagane | The 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
| Nazwa | Typ | Opis | |
|---|---|---|---|
service | string | wymagane | Service code, e.g. telegram |
country | string | wymagane | Country 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
| Nazwa | Typ | Opis | |
|---|---|---|---|
id | string | wymagane | The 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
| Nazwa | Typ | Opis | |
|---|---|---|---|
id | string | wymagane | The 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.
| Plik | Zawartość |
|---|---|
/openapi.json | Pełny schemat OpenAPI 3.1 |
/.well-known/agent.json | Możliwości, model uwierzytelniania i zasady działania |
/llms.txt | Krótki drogowskaz dla modeli językowych |
/llms-full.txt | To 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.