SIM Swap
SIM Swap (SIM-Kartenwechsel) bezeichnet den Vorgang, bei dem die Telefonnummer eines Benutzers an eine neue SIM-Karte gebunden wird. Dies geschieht typischerweise in folgenden Szenarien: Verlustmeldung und Ersatzkarte, Upgrade der SIM-Karte, Rufnummernmitnahme (Portierung), Aktivierung von Multi-SIM-Diensten oder wenn ein neuer Benutzer eine Nummer übernimmt, die zuvor von einer anderen Person verwendet wurde.
Angreifer können SIM Swap nutzen, um die Telefonnummer einer anderen Person zu kapern, SMS-Verifizierungscodes abzufangen und anschließend Passwörter zurückzusetzen sowie Konten zu übernehmen. Die SIM Swap API kann in Echtzeit erkennen, ob für eine bestimmte Telefonnummer ein SIM-Kartenwechsel stattgefunden hat. Dies hilft Unternehmen, potenzielle SIM-Hijacking-Risiken in kritischen Prozessen wie der SMS-OTP-Verifizierung zu identifizieren und die Wahrscheinlichkeit einer Kontoübernahme zu verringern.
Hinweis: Derzeit wird die SIM Swap-Abfrage nur für Nummern in den folgenden Ländern/Regionen unterstützt: Brasilien, Indonesien.
Diese API bietet zwei unabhängige Endpunkte:
- Retrieve Date: Abfrage des Zeitpunkts des letzten SIM Swaps für eine bestimmte Telefonnummer
- Check: Erkennung, ob für eine bestimmte Telefonnummer innerhalb der letzten N Stunden ein SIM Swap stattgefunden hat
Aufrufverifizierung
Beide Endpunkte verwenden die HTTP Basic Auth-Authentifizierungsmethode. Fügen Sie Authorization im HTTP-Header hinzu:
Authorization: Basic ${base64_auth_string}
Der Generierungsalgorithmus für ${base64_auth_string} lautet: base64(dev_key:dev_secret).
Weitere Details zur Durchführung der API-Authentifizierung finden Sie unter Aufrufverifizierung.
Retrieve Date
Abfrage des Zeitpunkts des letzten SIM Swaps für eine bestimmte Telefonnummer.
Aufrufadresse
POST https://otp.api.engagelab.cc/v1/sim-swap/retrieve-date
Anfragebeispiel
Ein Anfrageobjekt wird im JSON-Format ausgedrückt, daher muss der Anfrage-Header Content-Type: application/json enthalten.
Anfrage-Header
POST /v1/sim-swap/retrieve-date HTTP/1.1
Content-Type: application/json
Authorization: Basic ${base64_auth_string}
Anfrage-Body
{
"phone_number": "+381692223535"
}
Anfrageparameter
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
phone_number |
String | Erforderlich | Die abzufragende Zieltelefonnummer, E.164-Format wird empfohlen |
Antwortparameter
Erfolgsantwort
| Feld | Typ | Option | Beschreibung |
|---|---|---|---|
request_id |
String | Erforderlich | ID des aktuellen Abfragedatensatzes |
latest_sim_change |
String / null | Erforderlich | Zeitpunkt des letzten SIM Swaps im RFC3339-Format; gibt den Zeitpunkt der ersten Aktivierung zurück, wenn die Karte nie gewechselt wurde; gibt null zurück, wenn Daten aufgrund von Datenschutzbestimmungen nicht zurückgegeben werden können |
Beispiel für eine Erfolgsantwort:
{
"request_id": "2055136570436075520",
"latest_sim_change": "2026-05-01T15:00:00Z"
}
Fehlerantwort
Der HTTP-Statuscode ist 4xx oder 5xx, und der Antwort-Body enthält die folgenden Felder:
| Feld | Typ | Option | Beschreibung |
|---|---|---|---|
code |
int | Erforderlich | Fehlercode, siehe Abschnitt Fehlercodes für Details |
message |
String | Erforderlich | Fehlerdetails |
Beispiele für häufige Fehlerantworten:
Beispiel für Parameterfehler:
{
"code": 3002,
"message": "invalid phone_number"
}
Beispiel für unzureichendes Guthaben:
{
"code": 3005,
"message": "balance not enough"
}
Beispiel für Nummer nicht im Serviceabdeckungsbereich:
{
"code": 5101,
"message": "phone number is not in sim swap service coverage"
}
Beispiel für allgemeinen Fehler:
{
"code": 5100,
"message": "failed to retrieve sim swap date"
}
Check
Erkennung, ob für eine bestimmte Telefonnummer innerhalb der letzten N Stunden ein SIM Swap stattgefunden hat.
Aufrufadresse
POST https://otp.api.engagelab.cc/v1/sim-swap/check
Anfragebeispiel
Ein Anfrageobjekt wird im JSON-Format ausgedrückt, und der Anfrage-Header muss ebenfalls Content-Type: application/json enthalten.
Anfrage-Header
POST /v1/sim-swap/check HTTP/1.1
Content-Type: application/json
Authorization: Basic ${base64_auth_string}
Anfrage-Body
{
"phone_number": "+381692223535",
"max_age": 400
}
Anfrageparameter
| Parameter | Typ | Option | Beschreibung |
|---|---|---|---|
phone_number |
String | Erforderlich | Die abzufragende Zieltelefonnummer, E.164-Format wird empfohlen |
max_age |
Integer | Erforderlich | Das Abfragefenster in Stunden, Wertebereich 1 ~ 2400 |
Antwortparameter
Erfolgsantwort
| Feld | Typ | Option | Beschreibung |
|---|---|---|---|
request_id |
String | Erforderlich | ID des aktuellen Abfragedatensatzes |
swapped |
Boolean | Erforderlich | Ob innerhalb des angegebenen Zeitfensters ein SIM Swap stattgefunden hat |
Beispiel für eine Erfolgsantwort:
{
"request_id": "2055136570293469184",
"swapped": true
}
Fehlerantwort
Die Struktur ist identisch mit dem Retrieve Date-Endpunkt. Spezifisches Beispiel für eine Fehlerantwort:
Parameterfehler (max_age außerhalb des Bereichs):
{
"code": 3002,
"message": "max_age must be between 1 and 2400"
}
Fehlercodes
| Fehlercode | HTTP Code | Beschreibung |
|---|---|---|
1000 |
500 | Interner Fehler |
2001 |
401 | Authentifizierung fehlgeschlagen, kein korrektes Token angegeben |
2002 |
401 | Authentifizierung fehlgeschlagen, Token ist abgelaufen oder wurde deaktiviert |
2004 |
403 | Keine Berechtigung zum Aufrufen dieser API |
3001 |
400 | Ungültiges Format der Anfrageparameter, bitte prüfen Sie, ob der Inhalt dem JSON-Format entspricht |
3002 |
400 | Fehler bei den Anfrageparametern, bitte prüfen Sie, ob die Anfrageparameter die Anforderungen erfüllen |
3005 |
400 | Unzureichendes Guthaben |
5100 |
400 | Allgemeiner SIM Swap-Fehler |
5101 |
400 | Diese Nummer befindet sich nicht im Serviceabdeckungsbereich für SIM Swap, einschließlich Ländern, Betreibern und Nummernsegmenten, die derzeit nicht unterstützt werden, oder die Nummer kann nicht erkannt werden |










