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

API-Dokumentation

Automatisieren Sie SMS-Verifizierungsabläufe mit der SimNoKYC API. Kaufen Sie virtuelle Telefonnummern, empfangen Sie SMS-Codes, mieten Sie dedizierte Nummern und verwalten Sie Bestellungen — alles programmatisch.

Authentifizierung erforderlich. Alle API-Anfragen verwenden cookie-basierte Sitzungsauthentifizierung. Sie müssen in Ihrem SimNoKYC-Konto angemeldet sein, um die API zu nutzen. Melden Sie sich über die Weboberfläche an oder verwenden Sie den Authentifizierungs-Endpunkt, um eine Sitzung zu erstellen.

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://simnokyc.com/auth-api.php \ -d "action=login&seed=AbC3-dEf4-gHj5-kLm6" \ -c cookies.txt
import requests session = requests.Session() resp = session.post("https://simnokyc.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://simnokyc.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://simnokyc.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://simnokyc.com/api.php?action=countries
resp = session.get("https://simnokyc.com/api.php", params={"action": "countries"}) countries = resp.json() for c in countries: print(c["code"], c["name"])
const resp = await fetch("https://simnokyc.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://simnokyc.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://simnokyc.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://simnokyc.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://simnokyc.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")