SMS-Empfangs-API

Kaufen Sie Nummern und lesen Sie Bestätigungscodes über eine JSON-API. Ohne Ausweisprüfung, Zahlung in Kryptowährung.

REST · JSONOpenAPI 3.1 OpenAPI-Spezifikation →

Jede Operation hier ist zugleich ein MCP-Werkzeug. Die REST-Endpunkte sind die Übersetzung derselben Werkzeuge, die der MCP-Server bereitstellt, ein autonomer Agent und eine gewöhnliche Integration verhalten sich also gleich. Wenn Sie einen KI-Agenten auf OTPDrop richten, beginnen Sie beim Abschnitt für Agenten.

Wie ist die API aufgebaut?

  1. Legen Sie ein Konto an und sichern Sie die zurückgegebene Phrase. Sie ist der einzige Zugang und lässt sich nicht zurücksetzen.
  2. Legen Sie eine Aufladung an, senden Sie Kryptowährung und warten Sie auf die Gutschrift.
  3. Kaufen Sie eine Nummer für den gewünschten Dienst und das Land — das Guthaben wird sofort belastet.
  4. 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.

Die Phrase lässt sich nicht wiederherstellen. Wir speichern nur ihren Hash. Geht sie verloren, sind Konto und Guthaben weg — ohne Zurücksetzen und ohne Umweg über den Support.

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\""
  }
}
StatusBedeutung
200Erfolg
201Angelegt — Konto, Aufladung oder Bestellung existiert nun
401Phrase im Authorization-Header fehlt oder ist falsch
422Anfrage verstanden, aber nicht ausführbar
500Fehler auf unserer Seite

Häufige Meldungen bei 422:

MeldungUrsache
insufficient_fundsGuthaben unter dem Preis — legen Sie zuerst eine Aufladung an
unknown serviceDiesen Dienstcode gibt es nicht; siehe Dienstliste
unknown countryDiesen Ländercode gibt es nicht; siehe Länderliste
unknown coinWä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.

EndpunktVernünftiger TaktWarum
Katalog und PreisabfrageBei sich zwischenspeichernPreise ändern sich selten; den Katalog bei jeder Anfrage neu zu holen, bringt nichts.
/topups/{id}Alle 10–15 SekundenEine Netzwerkbestätigung dauert Minuten, nicht Millisekunden. Häufigeres Abfragen erfährt nichts früher.
/orders/{id}/smsAlle 3–5 SekundenCodes kommen meist in Sekunden; eine engere Schleife erzeugt nur Last.
KaufNach BedarfJeder 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

NameTypBeschreibung
limitintegeroptionalHow 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

NameTypBeschreibung
servicestringerforderlichService code, e.g. telegram
countrystringerforderlichCountry 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

NameTypBeschreibung
amount_usdnumbererforderlichHow much to add to the balance, in USD. Minimum 25, maximum 1000.
coinstringerforderlichBTC, 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

NameTypBeschreibung
idstringerforderlichThe 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

NameTypBeschreibung
servicestringerforderlichService code, e.g. telegram
countrystringerforderlichCountry 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

NameTypBeschreibung
idstringerforderlichThe 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

NameTypBeschreibung
idstringerforderlichThe 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.

DateiInhalt
/openapi.jsonDas vollständige OpenAPI-3.1-Schema
/.well-known/agent.jsonFähigkeiten, Authentifizierungsmodell und Betriebsregeln
/llms.txtEine kurze Orientierung für Sprachmodelle
/llms-full.txtDasselbe 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.