Zum Hauptinhalt springen
100+
Länder
1000+ Dienste. Bezahlen mit Krypto, kein KYC.
Nummer kaufen

SMS-Verifizierungs-API — SMSNoKYC

Automatisiere die OTP-Verifizierung von Anfang bis Ende. Reserviere virtuelle Nummern in über 190 Ländern, lies SMS-Codes in Sekunden, miete langfristige dedizierte Leitungen und steuere jede Bestellung über eine einzige REST-Oberfläche – ohne API-Schlüssel, ohne KYC, gezahlt in Kryptowährung.

Lesezeit: 5 Min. REST · JSON · OpenAPI 3.0 OpenAPI-Spezifikation →

Authentifizierung erforderlich. Jede Anfrage stützt sich auf ein Session-Cookie, du musst also in deinem SMSNoKYC-Konto angemeldet sein. Baue vor dem Aufruf eine Session über die Weboberfläche oder den Authentifizierungs-Endpunkt auf.

Warum Entwickler die SMSNoKYC-API wählen

SMSNoKYC ist die flexibelste SMS-Verifizierungs-API für Entwickler, die Anonymität, globale Abdeckung und kalkulierbare Preise benötigen. Anders als herkömmliche SMS-OTP-Anbieter, die den Zugang hinter Enterprise-Verträgen, monatlichen Mindestabnahmen und KYC-Fragebögen verstecken, funktioniert SMSNoKYC mit jedem HTTPS-Client, berechnet strikt pro Nummer und akzeptiert 20+ Kryptowährungen, darunter Bitcoin, Monero, Ethereum, USDT, USDC, Solana, Litecoin, XRP, TRON und Toncoin.

Typische Anwendungsfälle umfassen die Automatisierung von Account-Registrierungen für skaliertes QA, das Abrufen von Einmalpasswörtern für Headless-Agents und CI-Bots, die Validierung von Telefon-pflichtigen Abläufen in der Continuous Integration, die Miete dedizierter Langzeitnummern für Telegram- oder WhatsApp-Konten mit unterbrechungsfreiem SMS-Empfang sowie die Bereitstellung geo-verteilter Verifizierung in 190+ Ländern mit expliziter Betreiber-Tier-Kontrolle – virtuell, physisch oder Premium.

Authentifizierung

Die API verwendet cookie-basierte Sitzungsauthentifizierung. Um sich programmatisch zu authentifizieren:

  1. Senden Sie eine POST-Anfrage an /auth-api.php mit Ihrer Seed-Phrase
  2. Speichern Sie das Sitzungs-Cookie aus der Antwort
  3. Fügen Sie das Cookie allen nachfolgenden API-Anfragen hinzu
POST /auth-api.php

Authentifizieren Sie sich mit Ihrer Seed-Phrase und erstellen Sie eine Sitzung.

ParameterTypErforderlichBeschreibung
actionstringerforderlichMuss "login" sein
seedstringerforderlichIhr 16-Zeichen-Zugangs-Seed (z.B. AbC3-dEf4-gHj5-kLm6)
cURL
Python
JavaScript
# Login and save session cookie curl -X POST https://smsnokyc.com/auth-api.php \ -d "action=login&seed=AbC3-dEf4-gHj5-kLm6" \ -c cookies.txt
import requests session = requests.Session() resp = session.post("https://smsnokyc.com/auth-api.php", data={ "action": "login", "seed": "AbC3-dEf4-gHj5-kLm6" }) data = resp.json() print(data) # {"success": true, "user": {...}} # session object now holds the cookie for all future requests
const resp = await fetch("https://smsnokyc.com/auth-api.php", { method: "POST", credentials: "include", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: "action=login&seed=AbC3-dEf4-gHj5-kLm6" }); const data = await resp.json(); console.log(data); // {success: true, user: {...}}
Erfolgsantwort
{ "success": true, "user": { "id": 42, "prefix": "AbC3", "balance": "74.50" } }
Fehlerantwort
{ "success": false, "error": "Invalid seed." }

Basis-URL

Alle API-Endpunkte sind relativ zu:

https://smsnokyc.com/api.php?action={action}

Alle Antworten sind im JSON-Format. POST-Endpunkte akzeptieren sowohl application/json- als auch application/x-www-form-urlencoded-Anfragekörper.

Anfragelimits

Die API erzwingt folgende Ratenbegrenzungen:

EndpunktLimitZeitfenster
Authentifizierung5 Versuche15 Minuten
Alle anderen EndpointsKein festes Limit

Ratenbegrenzung: Die Authentifizierung ist auf 5 Versuche pro 15 Minuten begrenzt. Andere Endpoints sind derzeit nicht ratenbegrenzt, aber übermäßige Nutzung kann gedrosselt werden. Verwenden Sie angemessene Anfrage-Intervalle.

Fehlerbehandlung

Alle Fehler geben ein JSON-Objekt mit einem <code>error</code>-Feld zurück:

{ "error": "Description of what went wrong" }
HTTP-CodeBedeutung
200Erfolg (prüfen Sie den Antwortkörper auf Anwendungsfehler)
403Ungültiger CSRF-Token
405Falsche HTTP-Methode (z.B. GET auf einem POST-only Endpoint)
429Ratenlimit überschritten

Häufige Fehler auf Anwendungsebene:

FehlerUrsache
"Login required"Sitzung abgelaufen oder nicht authentifiziert
"Insufficient balance"Nicht genügend Guthaben — enthält die Felder need und have
"Service not available for this country"Kein Bestand oder Dienst inaktiv für das ausgewählte Land
"Missing country or service"Erforderliche Parameter wurden nicht angegeben

Länder auflisten

GET /api.php?action=countries

Gibt alle aktiven Länder mit verfügbaren virtuellen Nummern zurück. Keine Authentifizierung erforderlich.

cURL
Python
JavaScript
curl https://smsnokyc.com/api.php?action=countries
resp = session.get("https://smsnokyc.com/api.php", params={"action": "countries"}) countries = resp.json() for c in countries: print(c["code"], c["name"])
const resp = await fetch("https://smsnokyc.com/api.php?action=countries"); const countries = await resp.json();
Antwort
[ { "id": 1, "code": "us", "name": "USA" }, { "id": 2, "code": "gb", "name": "UK" }, { "id": 3, "code": "de", "name": "Germany" } ]

Dienste auflisten

GET /api.php?action=services&country={code}

Gibt verfügbare Dienste für ein bestimmtes Land zurück, einschließlich Preise und Bestand. Ohne Ländercode werden alle Dienste ohne Preise zurückgegeben.

ParameterTypErforderlichBeschreibung
countrystringoptionalISO 3166-1 Alpha-2-Ländercode (z.B. us, gb, de)
Antwort (mit Land)
[ { "id": 12, "name": "WhatsApp", "slug": "whatsapp", "icon_code": "WA", "icon_color": "#25d366", "category": "social", "price": "0.35", "stock": 847 } ]

Betreiber auflisten

GET /api.php?action=operators&country={code}

Gibt verfügbare Betreiber (Anbieter) für ein bestimmtes Land zurück. Jeder Betreiber hat einen Typ und einen Preismultiplikator, der auf den Basispreis des Dienstes angewendet wird.

ParameterTypErforderlichBeschreibung
countrystringerforderlichISO 3166-1 Alpha-2-Ländercode
Antwort
[ { "id": 5, "name": "T-Mobile", "type": "physical", "price_multiplier": "1.50", "icon_slug": "tmobile", "icon_domain": "t-mobile.com" } ]

Betreibertypen: virtual — VoIP-Nummern, am günstigsten, können von einigen Diensten blockiert werden. physical — echte SIM-Karten, höhere Erfolgsrate. premium — schnellste Lieferung (~10s), höchste Erfolgsrate.

Nummer kaufen (SMS-Aktivierung)

POST /api.php?action=buy

Kaufen Sie eine virtuelle Nummer für einmalige SMS-Verifizierung. Die Nummer ist 20 Minuten aktiv. Wenn keine SMS empfangen wird, wird Ihr Guthaben automatisch erstattet.

ParameterTypErforderlichBeschreibung
countrystringerforderlichLändercode (z.B. us)
service_idintegererforderlichDienst-ID aus Dienstliste
operator_idintegeroptionalBetreiber-ID aus Betreiberliste. Leer lassen für Standardbetreiber.
cURL
Python
JavaScript
curl -X POST https://smsnokyc.com/api.php?action=buy \ -b cookies.txt \ -H "Content-Type: application/json" \ -d '{"country":"us","service_id":12,"operator_id":5}'
resp = session.post("https://smsnokyc.com/api.php?action=buy", json={ "country": "us", "service_id": 12, "operator_id": 5 }) order = resp.json() print(f"Order #{order['order_id']} — ${order['price']}")
const resp = await fetch("https://smsnokyc.com/api.php?action=buy", { method: "POST", credentials: "include", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ country: "us", service_id: 12, operator_id: 5 }) }); const order = await resp.json();
Erfolgsantwort
{ "success": true, "order_id": 1847, "price": 0.53, "balance": "73.97" }
Fehler: Unzureichendes Guthaben
{ "error": "Insufficient balance", "need": 0.53, "have": "0.10" }

Bestellungen auflisten

GET /api.php?action=orders

Gibt Ihre 50 neuesten Bestellungen zurück, einschließlich Telefonnummern und SMS-Codes. Fragen Sie diesen Endpoint ab, um eingehende SMS-Codes bei aktiven Bestellungen zu prüfen.

Antwort
[ { "id": 1847, "price": "0.53", "status": "completed", "phone_number": "+12025551234", "sms_code": "847293", "created_at": "2026-04-09 14:32:00", "country_code": "us", "country_name": "USA", "service_name": "WhatsApp", "operator_name": "T-Mobile" } ]

Bestellstatus: active — wartet auf SMS. completed — SMS empfangen. cancelled — vom Benutzer storniert. refunded — automatisch erstattet (keine SMS vor Zeitüberschreitung empfangen). expired — abgelaufen.

Mietpreis abrufen

GET /api.php?action=rental_price&country={code}&operator_id={id}&duration={days}

Erhalten Sie den Preis für die Anmietung einer dedizierten Nummer von einem bestimmten Betreiber für eine bestimmte Dauer.

ParameterTypErforderlichBeschreibung
countrystringerforderlichLändercode
operator_idintegererforderlichBetreiber-ID
durationintegererforderlichMietdauer in Tagen: 7, 14, 30 oder 90
Antwort
{ "price": "12.50", "duration": 30, "operator": "T-Mobile", "type": "physical", "country": "USA" }

Nummer mieten

POST /api.php?action=rental_buy

Mieten Sie eine oder mehrere dedizierte Telefonnummern. Die Nummer gehört während der gesamten Mietdauer ausschließlich Ihnen und empfängt unbegrenzt eingehende SMS.

ParameterTypErforderlichBeschreibung
countrystringerforderlichLändercode
operator_idintegererforderlichBetreiber-ID
durationintegererforderlich7, 14, 30 oder 90 Tage
qtyintegeroptionalAnzahl der zu mietenden Nummern (1–10, Standard: 1)
Erfolgsantwort
{ "success": true, "order_ids": [1848, 1849], "total": 25.00, "qty": 2, "unit_price": 12.50, "duration": 30, "balance": "49.50" }

Benutzerinformationen abrufen

GET /api.php?action=user

Gibt die Kontoinformationen und das Guthaben des aktuellen Benutzers zurück. Verwenden Sie dies, um den Authentifizierungsstatus und verfügbare Mittel zu prüfen.

Authentifiziert
{ "logged_in": true, "id": 42, "prefix": "AbC3", "balance": "74.50" }
Nicht authentifiziert
{ "logged_in": false }

Vollständiges Workflow-Beispiel

Hier ist ein vollständiges Python-Beispiel, das sich authentifiziert, einen Dienst findet, eine Nummer kauft und den SMS-Code abfragt:

Python
import requests, time BASE = "https://smsnokyc.com" SEED = "AbC3-dEf4-gHj5-kLm6" s = requests.Session() # 1. Authenticate s.post(f"{BASE}/auth-api.php", data={"action": "login", "seed": SEED}) # 2. Check balance user = s.get(f"{BASE}/api.php?action=user").json() print(f"Balance: ${user['balance']}") # 3. Get services for USA services = s.get(f"{BASE}/api.php?action=services&country=us").json() whatsapp = next(svc for svc in services if svc["name"] == "WhatsApp") print(f"WhatsApp: ${whatsapp['price']} ({whatsapp['stock']} in stock)") # 4. Buy a number order = s.post(f"{BASE}/api.php?action=buy", json={ "country": "us", "service_id": whatsapp["id"] }).json() print(f"Order #{order['order_id']} created") # 5. Poll for SMS code for _ in range(60): orders = s.get(f"{BASE}/api.php?action=orders").json() my_order = next(o for o in orders if o["id"] == order["order_id"]) if my_order["sms_code"]: print(f"SMS code: {my_order['sms_code']}") print(f"Phone: {my_order['phone_number']}") break print("Waiting for SMS...") time.sleep(5) else: print("Timeout — balance will be refunded automatically")

Häufig gestellte Fragen

Wofür ist die Verifizierungs-API von SMSNoKYC da?

Sie öffnet deinem eigenen Code denselben Katalog wie die Website: virtuelle Nummern in über 190 Ländern für einmalige OTP-Verifizierung und für Mieten von 7 bis 90 Tagen. Über eine schlichte JSON-REST-Schnittstelle kannst du Apps durchsuchen, Live-Preise lesen, Nummern reservieren, eingehende Codes abholen und fehlgeschlagene Aktivierungen erstatten – ohne KYC, Abrechnung nur in Krypto.

Braucht man einen API-Schlüssel oder ein OAuth-Token?

Nein. Die Authentifizierung ist ein Session-Cookie: sende deine 16-stellige Zugangsphrase einmal per POST an /auth-api.php und reiche danach das zurückgegebene Cookie bei jedem weiteren Aufruf mit. Nichts zu provisionieren, zu rotieren oder zu widerrufen – du meldest dich einmal pro Session an und bleibst es, solange das Cookie lebt.

Was kostet die API?

Die API aufzurufen ist kostenlos – keine Monatsgebühr, kein Abo, kein Mindestvolumen. Du zahlst nur pro Nummer: einmalige Aktivierungen ab 0,05 $, dedizierte Mieten ab ein paar Dollar für 7 Tage. Alles wird vom Prepaid-Guthaben abgezogen, und jede Aktivierung, die nie eine SMS erhält, wird von selbst erstattet.

Welche Sprachen und Frameworks können sie aufrufen?

Alles, was eine HTTPS-Anfrage senden kann, funktioniert – Python (requests, httpx), Node.js (fetch, axios), Go, PHP, Ruby, Java, C#, cURL aus Bash und der Rest. Die Doku enthält kopierfertige Beispiele in cURL, Python und JavaScript, und eine vollständige OpenAPI-3.0-Datei unter /openapi.json lässt dich einen typisierten Client in der Sprache deiner Wahl erzeugen.

Was passiert, wenn ein Verifizierungscode nie ankommt?

Jede Aktivierung hat ein Fenster von 20 Minuten. Kommt bis zum Ende nichts an, storniert sich die Bestellung von selbst und der volle Preis kehrt aufs Guthaben zurück – ohne Ticket, ohne manuellen Neuversuch. Das erstattete Guthaben kannst du sofort für eine andere Nummer ausgeben, vielleicht in einer anderen Anbieterkategorie (virtuell, physisch oder Premium) für eine bessere Erfolgsquote.

Hat die API Ratenbegrenzungen?

Die Anmeldung ist auf 5 Versuche pro 15 Minuten und IP gedeckelt, um das Erraten der Phrase zu blockieren. Der Rest – Katalog, Kauf, Bestellungen, Mieten – hat vorerst kein hartes Limit, aber halte vernünftige Abstände: /api.php?action=orders alle 3-5 Sekunden abzufragen reicht zum Lesen von SMS mehr als aus, und anhaltende Spitzen über etwa 10 Anfragen/s können auf WAF-Ebene gedrosselt werden.