SMS-Empfangs-API
Kaufen Sie Nummern und lesen Sie Bestätigungscodes über eine JSON-API. Ohne Ausweisprüfung, Zahlung in Kryptowährung.
Wie ist die API aufgebaut?
- Legen Sie ein Konto an und sichern Sie die zurückgegebene Phrase. Sie ist der einzige Zugang und lässt sich nicht zurücksetzen.
- Legen Sie eine Aufladung an, senden Sie Kryptowährung und warten Sie auf die Gutschrift.
- Kaufen Sie eine Nummer für den gewünschten Dienst und das Land — das Guthaben wird sofort belastet.
- Fragen Sie die SMS mit dem Code ab. Kommt bis zum Ablauf der Bestellung kein Code, wird automatisch erstattet.
Einmal aufladen, oft kaufen: eine Aufladung reicht für so viele Nummern, wie das Guthaben zulässt, nur der erste Kauf wartet also auf eine Bestätigung.
Authentifizierung
Übergeben Sie die Kontophrase als Bearer-Token. Es gibt weder einen separaten API-Schlüssel noch einen Login-Aufruf — die Phrase ist die Zugangsberechtigung.
Authorization: Bearer YOUR-SEED-PHRASE
Die Katalog-Endpunkte brauchen überhaupt keine Authentifizierung, Dienste, Länder und Preise lassen sich also schon vor dem Anlegen eines Kontos ansehen. Alles rund um Geld und Bestellungen verlangt den Header.
Basisadresse
Alle Endpunkte sind relativ zu:
https://www.otpdrop.com/api/v1
Antworten kommen als JSON. POST-Bodies werden als application/json oder
application/x-www-form-urlencoded angenommen.
Fehler
Bei einem Fehlschlag kommt ein Status außerhalb von 2xx und ein einzelnes Fehlerobjekt zurück.
{
"error": {
"code": "invalid_request",
"message": "unknown service: \"whatsap\""
}
}
| Status | Bedeutung |
|---|---|
200 | Erfolg |
201 | Angelegt — Konto, Aufladung oder Bestellung existiert nun |
401 | Phrase im Authorization-Header fehlt oder ist falsch |
422 | Anfrage verstanden, aber nicht ausführbar |
500 | Fehler auf unserer Seite |
Häufige Meldungen bei 422:
| Meldung | Ursache |
|---|---|
insufficient_funds | Guthaben unter dem Preis — legen Sie zuerst eine Aufladung an |
unknown service | Diesen Dienstcode gibt es nicht; siehe Dienstliste |
unknown country | Diesen Ländercode gibt es nicht; siehe Länderliste |
unknown coin | Währung wird nicht angenommen; siehe Aufladeendpunkt |
amount_usd must be between… | Aufladungen sind auf $25–$1000 begrenzt |
Gibt es Ratenbegrenzungen?
Es gibt keine veröffentlichte Quote und auch keinen API-Schlüssel, den man drosseln könnte — aber Endpunkte in einer Schleife aufzurufen, ist nicht kostenlos. Zwei davon sind zum Abfragen gedacht und verlangen besondere Sorgfalt.
| Endpunkt | Vernünftiger Takt | Warum |
|---|---|---|
| Katalog und Preisabfrage | Bei sich zwischenspeichern | Preise ändern sich selten; den Katalog bei jeder Anfrage neu zu holen, bringt nichts. |
/topups/{id} | Alle 10–15 Sekunden | Eine Netzwerkbestätigung dauert Minuten, nicht Millisekunden. Häufigeres Abfragen erfährt nichts früher. |
/orders/{id}/sms | Alle 3–5 Sekunden | Codes kommen meist in Sekunden; eine engere Schleife erzeugt nur Last. |
| Kauf | Nach Bedarf | Jeder Kauf bucht echtes Geld ab, eine ungebremste Schleife kostet Sie also mehr als uns. |
Verkehr, der wie ein Angriff aussieht, wird vorgelagert blockiert, ohne höfliches 429.
Haben Sie einen berechtigten Grund, häufiger abzufragen, schreiben Sie uns vorher über die
Kontaktseite.
Dienste auflisten
GET/api/v1/services
Alle Dienste mit Code, Kategorie und Mindestpreis. Keine Authentifizierung nötig.
Anfrage
curl -s https://www.otpdrop.com/api/v1/services
Antwort
{
"services": [
{
"code": "binance",
"name": "Binance",
"category": "Finance",
"from_price_cents": 85,
"color": "#F0B90B",
"icon": "binance"
}
],
"count": 133
}
Länder auflisten
GET/api/v1/countries
Every country with its dial code and how many services are available there. No authentication required.
Anfrage
curl -s https://www.otpdrop.com/api/v1/countries
Antwort
{
"countries": [
{
"code": "us",
"name": "United States",
"dial_code": "+1",
"service_count": 133
}
],
"count": 197
}
Preismatrix
GET/api/v1/catalog
The most useful service and country combinations with their prices, cheapest first. No authentication required.
Parameter
| Name | Typ | Beschreibung | |
|---|---|---|---|
limit | integer | optional | How many rows to return, 1 to 500. Defaults to 12. |
Anfrage
curl -s 'https://www.otpdrop.com/api/v1/catalog?limit=2'
Antwort
{
"items": [
{
"service": "badoo",
"country": "us",
"price_cents": 35
}
],
"count": 2
}
Preis abfragen
GET/api/v1/quote
The exact price for one service and country before you commit to buying. No authentication required.
Parameter
| Name | Typ | Beschreibung | |
|---|---|---|---|
service | string | erforderlich | Service code, e.g. telegram |
country | string | erforderlich | Country code, e.g. us |
Anfrage
curl -s 'https://www.otpdrop.com/api/v1/quote?service=telegram&country=us'
Antwort
{
"service": "telegram",
"country": "us",
"price_cents": 111,
"price_usd": "1.11",
"currency": "USD",
"purchasable": true
}
Konto anlegen
POST/api/v1/accounts
Generates an account and returns its seed. This is the only time the seed is ever shown. No authentication required.
Anfrage
curl -s -X POST https://www.otpdrop.com/api/v1/accounts
Antwort
{
"public_id": "acc_7f3c1a92",
"seed": "PABh-ZbRt-9xKm-Lq4V",
"seed_prefix": "PABh",
"balance_cents": 0,
"warning": "This seed is shown exactly once, right now..."
}
Aufladung anlegen
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.
Parameter
| Name | Typ | Beschreibung | |
|---|---|---|---|
amount_usd | number | erforderlich | How much to add to the balance, in USD. Minimum 25, maximum 1000. |
coin | string | erforderlich | BTC, LTC, ETH, XMR, SOL, TRX, BNB, USDT, USDC and more |
Anfrage
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"}'
Antwort
{
"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 einer Aufladung
GET/api/v1/topups/{id}
Whether a deposit has been credited. Confirmation is not instant — poll this rather than assuming the funds arrived.
Parameter
| Name | Typ | Beschreibung | |
|---|---|---|---|
id | string | erforderlich | The top-up id, in the path |
Anfrage
curl -s https://www.otpdrop.com/api/v1/topups/top_019195919c80fc8f \ -H 'Authorization: Bearer YOUR-SEED'
Antwort
{
"topup_id": "top_019195919c80fc8f",
"status": "credited",
"coin": "XMR",
"amount_usd": "25.00",
"coin_amount": "0.1337",
"credited_total_cents": 2500,
"expires_at": 1788532810
}
Nummer kaufen
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.
Parameter
| Name | Typ | Beschreibung | |
|---|---|---|---|
service | string | erforderlich | Service code, e.g. telegram |
country | string | erforderlich | Country code, e.g. us |
Anfrage
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"}'
Antwort
{
"order_id": "ord_1ad450bf7a42519c",
"service": "telegram",
"country": "us",
"phone": "+15558329008",
"status": "paid",
"price_usd": "1.11"
}
Eigene Bestellungen auflisten
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.
Anfrage
curl -s https://www.otpdrop.com/api/v1/orders \ -H 'Authorization: Bearer YOUR-SEED'
Antwort
{
"orders": [
{
"order_id": "ord_1ad450bf7a42519c",
"service": "telegram",
"country": "us",
"phone": "+15558329008",
"status": "paid",
"price_usd": "1.11"
}
],
"count": 1
}
Bestellung abrufen
GET/api/v1/orders/{id}
The current state of one order: its number, status and price.
Parameter
| Name | Typ | Beschreibung | |
|---|---|---|---|
id | string | erforderlich | The order id, in the path |
Anfrage
curl -s https://www.otpdrop.com/api/v1/orders/ord_1ad450bf7a42519c \ -H 'Authorization: Bearer YOUR-SEED'
Antwort
{
"order_id": "ord_1ad450bf7a42519c",
"service": "telegram",
"country": "us",
"phone": "+15558329008",
"status": "paid",
"price_usd": "1.11"
}
SMS mit dem Code abrufen
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.
Parameter
| Name | Typ | Beschreibung | |
|---|---|---|---|
id | string | erforderlich | The order id, in the path |
Anfrage
curl -s https://www.otpdrop.com/api/v1/orders/ord_1ad450bf7a42519c/sms \ -H 'Authorization: Bearer YOUR-SEED'
Antwort
{
"order_id": "ord_1ad450bf7a42519c",
"status": "paid",
"arrived": false,
"code": null
}
Wie sieht eine fertige Integration aus?
Vom Konto bis zum Code sind es sechs Aufrufe. Alles Folgende ist echt: einfügen und ausführen.
# 1. Konto anlegen und Phrase sichern
SEED=$(curl -s -X POST https://www.otpdrop.com/api/v1/accounts | jq -r .seed)
# 2. Aufladen — senden Sie coin_amount an die zurückgegebene Adresse
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. Abfragen, bis die Aufladung gutgeschrieben ist
curl -s https://www.otpdrop.com/api/v1/topups/TOPUP_ID \
-H "Authorization: Bearer \$SEED" | jq .status
# 4. Vor dem Kauf den Preis prüfen
curl -s 'https://www.otpdrop.com/api/v1/quote?service=telegram&country=us'
# 5. Kaufen — es wird abgebucht, die Nummer kommt sofort
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. Code abfragen
until curl -s https://www.otpdrop.com/api/v1/orders/\$ORDER/sms \
-H "Authorization: Bearer \$SEED" | jq -e .code; do sleep 4; done
Dieselbe Abfolge in Python, ohne 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-Server
Dieselben Operationen gibt es über das Model Context Protocol unter https://www.otpdrop.com/mcp — als elf
Werkzeuge. So fügen Sie ihn Claude Code hinzu:
claude mcp add --transport http otpdrop https://www.otpdrop.com/mcp
Einrichtung und die vollständige Werkzeugliste stehen auf der Seite für Agenten.
Beschreibungsdateien
Maschinenlesbare Beschreibungen des Dienstes, alle ohne Authentifizierung abrufbar.
| Datei | Inhalt |
|---|---|
/openapi.json | Das vollständige OpenAPI-3.1-Schema |
/.well-known/agent.json | Fähigkeiten, Authentifizierungsmodell und Betriebsregeln |
/llms.txt | Eine kurze Orientierung für Sprachmodelle |
/llms-full.txt | Dasselbe samt vollständigem Katalog |
Häufige Fragen
Braucht die API von OTPDrop einen Schlüssel?
Nein. Es gibt nichts zu beantragen und keine Freigabe. Die Zugangsdaten sind die Kontophrase, übergeben als Bearer-Token — und die Katalog-Endpunkte brauchen nicht einmal die.
Was kostet die API von OTPDrop?
Nichts über die Nummern hinaus. Kein Abonnement, keine Abrechnung pro Aufruf, kein Mindestvolumen — es gelten dieselben Preise wie auf der Website.
Mit welchen Programmiersprachen funktioniert die API?
Mit jeder, die eine HTTPS-Anfrage stellen kann. Es ist gewöhnliches JSON über HTTP mit einem Bearer-Header: kein SDK zu installieren und nichts mit unseren Releases abzugleichen.
Was passiert, wenn die SMS mit dem Code nicht ankommt?
Die Bestellung erstattet sich bei Ablauf selbst aufs Guthaben; früher abbrechen können Sie über die Website. Sie zahlen für gelieferte Codes, nicht für Versuche.
Sind REST-API und MCP-Server dasselbe?
Ja, mit Absicht. Jeder REST-Endpunkt ist die Übersetzung eines MCP-Werkzeugaufrufs, sie können also nicht auseinanderlaufen: das eine zu ändern heißt, beides zu ändern. Nehmen Sie, was Ihrem Client besser passt.
Kann man die API testen, ohne etwas auszugeben?
Katalog, Preisabfrage und Kontoanlage sind kostenlos, der Großteil einer Integration lässt sich also vor jeder Aufladung schreiben und prüfen. Geld kostet nur der Kauf.