SMS-Activate-Migrationszentrum 2026: Entwickler-Checkliste, API-Mapping & Rückerstattungsvergleich
If you are still carrying handler_api.php calls in your repo pointed at sms-activate.org, this is the hub you open at 9pm on a Friday and close with a working integration before midnight. Real endpoint mapping, real code diffs, refund policy comparison, and the gotchas that will bite you between the line you change and the alert that wakes you up on Monday morning.
Warum dieses Handbuch existiert
Die meisten "SMS-Activate ist tot, hier ist eine Liste von Alternativen"-Beiträge übersehen den Teil, der tatsächlich Entwicklerstunden kostet: den Code. Die Anmeldung bei einem neuen Anbieter dauert fünf Minuten. Die Neuschreibung einer Integration, die jahrelang stillschweigend in der Produktion lief, mit ungetesteten Eckfällen und einem Kostenverfolger, dauert länger als man denkt.
Nachdem wir unsere Kompatibilitätsschicht im Januar 2026 ausgeliefert haben, begannen wir, dieselben drei Fragen von jedem Team zu erhalten, das sie ausprobierte:
- Welche Endpunkte passen sauber und welche benötigen manuelle Änderungen?
- Wie kann ich meine Kostenverfolgung und Rückflusslogik ohne Neuschreibung zum Laufen bringen?
- Was bricht stillschweigend und erscheint eine Woche später als überraschende Abrechnung?
Dieses Handbuch beantwortet diese drei Fragen in der Reihenfolge und gibt Ihnen Copy-Paste-Code, den Sie vor dem Ausführen prüfen können.
Die 48-Stunden-Zusammenfassung: Was tatsächlich geschah
SMS-Activate ging am 29. Dezember 2025 offline. Es gab kein geplantes Wartungsbanner, kein Migrationstool und keine öffentliche Ankündigung. Benutzer, die versuchten, sich anzumelden, trafen auf eine einzelne Seite, die besagte, dass der Dienst permanent geschlossen wurde. Die API gab innerhalb weniger Stunden Verbindungsabbrüche auf allen Endpunkten zurück.
Drei Dinge geschahen schnell:
- Dashboard-Guthaben wurden unerreichbar. Berichte auf dem
r/sms-Subreddit und den offiziellen Telegram-Kanälen beschrieben Guthaben von 20 bis mehreren tausend Dollar, die eingefroren waren und keinen Wiederherstellungsweg hatten. - Laufende Integrationen brachen hart. Jeder Dienst, der
handler_api.phpabfragte, erhielt HTTP-Verbindungsfehler, die in den meisten Fehlerverfolgern "Schaltkreisunterbrechung ausgelöst, Team alarmieren" bedeuten. - Das Migrationsfenster schloss sich innerhalb von Tagen, nicht Wochen. Innerhalb von 72 Stunden hatte jeder verbleibende Anbieter eine Warteschlange. 5sim, SMSPVA und SMS-MAN bestätigten alle Kapazitätsstrain. VerifySMS hielt stand, weil wir der kleinste in der Gruppe waren und über freie Kapazitäten verfügten, aber es war wirklich knapp.
Die Auswirkungen sind immer noch im Gange. Stand April 2026 gibt es aktive Kleinanspruchsfälle in Russland und mindestens zwei koordinierte Gemeinschaftsklagen, um eingefrorene Guthaben zurückzufordern. Nichts davon hilft Ihrem Code, weshalb wir uns auf den Teil konzentrieren werden, den Sie tatsächlich reparieren können.
Teil 1: API-Deprecationskarte
SMS-Activate lieferte einen einzigen öffentlichen Endpunkt unter https://sms-activate.org/stubs/handler_api.php. Jede Aktion war ein Abfragezeichenparameter auf dieser URL. Die folgende Tabelle bildet jede Hauptaktion auf ihr VerifySMS-Äquivalent ab. Die Kompatibilitätsschicht unter https://api.verifysms.app/compat/handler_api.php akzeptiert genau dieselbe Abfragezeichenform.
| SMS-Activate-Aktion | Zweck | VerifySMS-Kompatibilitätsschicht | Native VerifySMS-API |
|---|---|---|---|
getBalance | USD-Guthaben als Text zurückgeben | Funktioniert unverändert. Gibt ACCESS_BALANCE:X.YY zurück | GET /v1/balance gibt JSON zurück |
getNumbersStatus | Länderverfügbarkeit | Funktioniert. Gibt das alte Kartenformat zurück | GET /v1/countries/availability |
getNumber | Eine Nummer für einen Dienst leasen | Funktioniert. Gibt ACCESS_NUMBER:id:+phone zurück | POST /v1/rentals |
setStatus | Eine Miete bestätigen oder stornieren | Funktioniert. Statuscodes 1/3/6/8 verhalten sich identisch | POST /v1/rentals/{id}/status |
getStatus | Auf SMS-Eintreffen warten | Funktioniert. Gibt STATUS_WAIT_CODE, STATUS_OK:CODE, STATUS_WAIT_RETRY zurück | GET /v1/rentals/{id} |
getPrices | Preistabelle abrufen | Funktioniert. Gibt VerifySMS-Preise im alten JSON-Format zurück | GET /v1/prices |
getCountries | Ländercodekarte | Funktioniert. Gibt sowohl alte numerische IDs als auch ISO-3166-Codes zurück | GET /v1/countries |
getTopCountriesByService | Top-Länder pro Dienst | Gibt Echtzeit-VerifySMS-Daten anstelle von gecachten SMS-Activate-Rängen zurück | GET /v1/services/{id}/top-countries |
Einige weniger genutzte SMS-Activate-Aktionen bilden sich nicht eins-zu-eins ab. getRentServicesAndCountries und die Long-Lease-Miet-API waren SMS-Activate-spezifisch und haben keine Kompatibilitätsschicht. Wenn Ihre Integration diese verwendete, sollten Sie auf die native VerifySMS-Long-Lease-Endpunkt unter POST /v1/rentals/long umsteigen, der separat dokumentiert ist.
Teil 2: Code-Migrationsdurchläufe
Die folgenden Code-Snippets sind genau die Form, die ich gegen unsere eigene Staging-Umgebung im Januar getestet habe. Ich habe sie absichtlich langweilig gehalten, damit Sie sie gegen Ihren eigenen Code lesen können, ohne den Kontext zu wechseln.
Python (requests)
Die einzige erforderliche Änderung ist die Basis-URL. Wenn Sie die API bereits in einem kleinen Client-Modul eingewickelt haben, ist die Änderung eine einzelne Zeile.
import os
import requests
# VORHER
# BASE_URL = "https://sms-activate.org/stubs/handler_api.php"
# NACHHER
BASE_URL = "https://api.verifysms.app/compat/handler_api.php"
API_KEY = os.environ["SMS_API_KEY"]
def get_number(service: str, country: int) -> tuple[str, str]:
resp = requests.get(BASE_URL, params={
"api_key": API_KEY,
"action": "getNumber",
"service": service,
"country": country,
}, timeout=30)
resp.raise_for_status()
# ACCESS_NUMBER:12345:+441234567890
status, rental_id, phone = resp.text.split(":", 2)
if status != "ACCESS_NUMBER":
raise RuntimeError(f"unerwartete Antwort: {resp.text}")
return rental_id, phone
def wait_for_code(rental_id: str, deadline_seconds: int = 180) -> str:
import time
start = time.monotonic()
while time.monotonic() - start < deadline_seconds:
resp = requests.get(BASE_URL, params={
"api_key": API_KEY,
"action": "getStatus",
"id": rental_id,
}, timeout=15).text
if resp.startswith("STATUS_OK:"):
return resp.split(":", 1)[1]
time.sleep(4)
# Als nicht genutzt markieren, damit wir die Rückerstattung erhalten
requests.get(BASE_URL, params={
"api_key": API_KEY,
"action": "setStatus",
"status": 8,
"id": rental_id,
}, timeout=15)
raise TimeoutError(f"kein Code nach {deadline_seconds}s")
Node.js (axios)
import axios from "axios";
// VORHER
// const BASE_URL = "https://sms-activate.org/stubs/handler_api.php";
// NACHHER
const BASE_URL = "https://api.verifysms.app/compat/handler_api.php";
const API_KEY = process.env.SMS_API_KEY;
export async function getNumber(service, country) {
const { data } = await axios.get(BASE_URL, {
params: { api_key: API_KEY, action: "getNumber", service, country },
timeout: 30_000,
});
const [status, rentalId, phone] = data.split(":");
if (status !== "ACCESS_NUMBER") {
throw new Error(`unerwartete Antwort: ${data}`);
}
return { rentalId, phone };
}
export async function waitForCode(rentalId, deadlineMs = 180_000) {
const start = Date.now();
while (Date.now() - start < deadlineMs) {
const { data } = await axios.get(BASE_URL, {
params: { api_key: API_KEY, action: "getStatus", id: rentalId },
timeout: 15_000,
});
if (data.startsWith("STATUS_OK:")) return data.split(":")[1];
await new Promise((r) => setTimeout(r, 4000));
}
await axios.get(BASE_URL, {
params: { api_key: API_KEY, action: "setStatus", status: 8, id: rentalId },
timeout: 15_000,
});
throw new Error(`kein Code nach ${deadlineMs}ms`);
}
PHP (curl)
<?php
// VORHER
// const BASE_URL = "https://sms-activate.org/stubs/handler_api.php";
// NACHHER
const BASE_URL = "https://api.verifysms.app/compat/handler_api.php";
function sms_call(array $params): string {
$params["api_key"] = getenv("SMS_API_KEY");
$url = BASE_URL . "?" . http_build_query($params);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$body = curl_exec($ch);
curl_close($ch);
return $body;
}
function get_number(string $service, int $country): array {
$resp = sms_call(["action" => "getNumber", "service" => $service, "country" => $country]);
[$status, $id, $phone] = explode(":", $resp, 3);
if ($status !== "ACCESS_NUMBER") {
throw new RuntimeException("unerwartet: $resp");
}
return ["id" => $id, "phone" => $phone];
}
Go (net/http)
package sms
import (
"errors"
"fmt"
"io"
"net/http"
"net/url"
"os"
"strings"
"time"
)
// VORHER
// const baseURL = "https://sms-activate.org/stubs/handler_api.php"
// NACHHER
const baseURL = "https://api.verifysms.app/compat/handler_api.php"
func call(params url.Values) (string, error) {
params.Set("api_key", os.Getenv("SMS_API_KEY"))
req, _ := http.NewRequest("GET", baseURL+"?"+params.Encode(), nil)
client := &http.Client{Timeout: 30 * time.Second}
resp, err := client.Do(req)
if err != nil {
return "", err
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
return string(body), nil
}
func GetNumber(service string, country int) (id, phone string, err error) {
body, err := call(url.Values{
"action": {"getNumber"},
"service": {service},
"country": {fmt.Sprint(country)},
})
if err != nil {
return "", "", err
}
parts := strings.SplitN(body, ":", 3)
if len(parts) != 3 || parts[0] != "ACCESS_NUMBER" {
return "", "", errors.New("unerwartet: " + body)
}
return parts[1], parts[2], nil
}
Das Go-Beispiel ist absichtlich ohne externe Bibliothek geschrieben, damit Sie es in einen minimalen Dienst einfügen können, ohne Abhängigkeiten hinzuzufügen. Dasselbe Muster gilt für jede andere Sprache: Ersetzen Sie die URL, behalten Sie den Rest und lassen Sie Ihre bestehende Fehlerbehandlung übernehmen.
Teil 3: Fallstricke, die Sie verbrennen werden
Dies sind die Stellen, an denen die Kompatibilitätsschicht treu zu SMS-Activates Eigenheiten ist, aber die Eigenheiten selbst Sie überraschen werden, wenn Sie diesen Code nicht seit langem berührt haben.
Länder-IDs sind keine ISO-Codes
SMS-Activate nummerierte Länder in eigener Reihenfolge: Russland war 0, USA war 187, Indonesien war 6 usw. Wenn Ihre Integration diese magischen Zahlen hartcodiert hat, funktionieren sie auf der Kompatibilitätsschicht immer noch. Wenn Sie neuen Code schreiben, bevorzugen Sie die ISO-3166-Alpha-2-Form (RU, US, ID), die die Kompatibilitätsschicht auch akzeptiert. Mischen Sie nicht beide Stile im selben Aufruf, da zukünftige Debugging-Arbeiten schmerzhaft sein werden.
Statuscode 3 versus 6
Die setStatus-Aktion Code 3 bedeutete "eine weitere SMS anfordern" in der SMS-Activate-Welt, und Code 6 bedeutete "den Code als gültig akzeptieren". Diese beiden Codes sind leicht zu vertauschen und haben entgegengesetzte Abrechnungsausgänge: 3 hält Sie in Rechnung, 6 bestätigt die erfolgreiche Verifizierung. Die Kompatibilitätsschicht verhält sich genauso. Durchsuchen Sie Ihren Code nach setStatus und stellen Sie sicher, dass der Zweig, der Code 6 verwendet, nur ausgeführt wird, nachdem Sie sicher sind, dass die Verifizierung erfolgreich war.
Timeouts und Schaltkreisunterbrechungen
SMS-Activate gab unter Last manchmal eine 200 mit einem leeren Körper zurück, anstatt eines HTTP-Fehlers. Defensive Clients wickeln den Aufruf in ein Timeout ein und behandeln den leeren Körper als Wiederholungssignal. VerifySMS gibt niemals einen leeren Körper auf der Kompatibilitätsschicht zurück. Wenn Ihr Client immer noch leeren als Wiederholungssignal behandelt, wird er Budget für ein flackerndes Netzwerk ausgeben, weil die Wiederholung eine andere Miet-ID trifft. Das sicherere Muster ist, nach den bekannten Antwortpräfixen (ACCESS_, STATUS_, BAD_) zu suchen und alles andere als einen harten Fehler zu behandeln, nicht als vorübergehenden.
Rate-Limits wechseln von pro Schlüssel zu pro IP
SMS-Activate-Rate-Limits waren auf den API-Schlüssel beschränkt. VerifySMS-Rate-Limits sind auf die Kombination aus API-Schlüssel und Quell-IP-Adresse beschränkt, da wir viel Missbrauch von Skripten sehen, die einen Schlüssel über ein Botnetz teilen. Für normalen Produktionsverkehr von einem einzigen Server oder einem load-balanced Pool ist dies unsichtbar. Wenn Sie verteilte CI-Jobs ausführen, die alle einen Staging-Schlüssel teilen, können Sie einen 429 sehen, wenn die Flotte zum ersten Mal zusammen warm wird. Die Lösung besteht darin, den Canary von einem Knoten für einen Tag ausführen zu lassen, bevor Sie ihn ausweiten.
Rückerstattungszeit fühlt sich sofort an, weil es tatsächlich sofort ist
Dies ist kein Fallstrick, sondern eine angenehme Überraschung. Wo SMS-Activate-Rückerstattungen einige Stunden dauerten, um in Ihrem Guthaben zu erscheinen, erscheinen VerifySMS-Rückerstattungen innerhalb von 60 Sekunden. Wenn Ihr Kostenverfolger das Guthaben auf einem Zeitplan liest, wird er die Rückerstattung als Gutschrift registrieren, die das alte System übersehen hätte. Überprüfungsdashboards kennzeichnen dies manchmal als Anomalie am ersten Tag.
Teil 4: Preisvergleichs-Reality-Check
Vor dem Shutdown war SMS-Activate der Boden des Marktes. Russische Nummern kosteten 0,03 bis 0,05 $ pro Verifizierung, und Großabnehmer zahlten noch weniger. Dieser Boden ist weg. Hier ist, wo die verbleibenden Anbieter im April 2026 für die häufigsten Dienste sitzen, abgezogen von der öffentlichen Preisseite jedes Anbieters am :
| Dienst | 5sim | TextVerified | SMSPVA | SMS-MAN | VerifySMS |
|---|---|---|---|---|---|
| WhatsApp / Russland | $0.014 | — | $0.05 | $0.035 | $0.10 |
| WhatsApp / USA | $0.27 | $0.25 | $0.28 | $0.22 | $0.18 |
| Telegram / Russland | $0.016 | — | $0.05 | $0.04 | $0.10 |
| Telegram / USA | $0.35 | $0.40 | $0.38 | $0.30 | $0.20 |
| Google / Indonesien | $0.07 | — | $0.08 | $0.06 | $0.10 |
Das Muster ist einfach: 5sim und SMS-MAN gewinnen bei rock-bottom russischen Preisen, TextVerified ist die US-Premium-Klasse, und VerifySMS sitzt in der Mitte mit einem flachen $0.10-Baseline für alles außer den teuersten US-Nicht-VoIP-Nummern. Wenn Ihr Budget auf SMS-Activate's Bodenpreisen eingestellt war, erwarten Sie, zwei bis fünf Mal mehr pro Verifizierung zu zahlen, unabhängig davon, welchen Ersatz Sie wählen.
Zwei Anmerkungen zu dieser Tabelle. Erstens: Jeder Anbieter (einschließlich VerifySMS) erhöht und senkt individuelle Länderpreise als Reaktion auf Trägerkosten, also bestätigen Sie den aktuellen Preis in Ihrem eigenen Dashboard, bevor Sie ein Budget festlegen. Zweitens: Der effektive Preis pro erfolgreicher Verifizierung hängt vom Rückerstattungsanteil ab. Ein Anbieter mit einem $0.08-Preisschild und einer 70%igen Erfolgsrate kostet Sie mehr pro Erfolg als ein $0.10-Anbieter mit automatischen Rückerstattungen und einer 90%igen Erfolgsrate.
Teil 5: Die 10-Schritte-Migrationscheckliste
Dies ist die tatsächliche Sequenz, die wir unseren eigenen Benutzern im Januar durchführten. Es wird angenommen, dass ein einzelner Entwickler mit Repo-Zugriff, einem Produktionsdienst und einer Staging-Umgebung vorhanden ist. Skalieren Sie die Canary-Prozentwerte hoch, wenn Sie mehrere Dienste oder ein Monorepo ausführen.
- Inventarisieren Sie jeden Aufruf. Führen Sie
git grep -n 'sms-activate\.org\|handler_api\.php\|getNumber\|setStatus'aus und listen Sie jede Datei auf, die die alte API trifft. Wenn Sie mehr als ein Dutzend finden, wählen Sie ein Wrapper-Modul und zentralisieren Sie die Aufrufe zuerst, bevor Sie migrieren. - Erhalten Sie einen VerifySMS-API-Schlüssel. Melden Sie sich an, fügen Sie einen kleinen Betrag hinzu und generieren Sie einen scoped-Schlüssel für das Staging. Halten Sie den Produktions-Schlüssel außerhalb des Repos.
- Ändern Sie die Basis-URL. Ersetzen Sie den SMS-Activate-Host durch
api.verifysms.app/compat/handler_api.php. Ändern Sie nicht die Abfragezeichenfolge. Committen Sie dies allein, damit der Diff sauber ist. - Führen Sie Ihre vorhandenen Tests aus. Wenn die Tests die echte API treffen, weisen Sie sie auf das Staging hin und beobachten Sie auf Formmismatches. Wenn sie die API mocken, führen Sie sie auch gegen den live-Staging-Endpunkt aus, damit Sie Vertragsdurchweichungen erfassen.
- Bestätigen Sie die Länder-IDs erneut. Überfliegen Sie Ihren Code auf Länderkonstanten. Wenn Sie die alten numerischen IDs verwenden, funktionieren diese noch. Wenn Sie die Gelegenheit haben, ersetzen Sie sie durch ISO-3166-Codes, weil der nächste Entwickler, der diese Datei berührt, Ihnen dankt.
- Verkabeln Sie Rückerstattungsansprüche. Bestätigen Sie, dass Ihr Timeout-Pfad
setStatusmitstatus=8aufruft. Ohne dies erhalten Sie immer noch Rückerstattungen (wir refundieren automatisch abgelaufene Leases), aber Ihr Kostentracker wird die Realität verzögern. - Aktualisieren Sie Ihren Kostentracker. Lesen Sie die Kosten aus dem
X-VerifySMS-Cost-Antwortheader, anstatt ihn aus der Preisabelle zu parsen. Diese einzelne Änderung macht Ihre Finanz-Dashboard genau auf den Cent. - Überwachung. Fügen Sie Erfolgsrate, p95-Latenz und Rückerstattungsanteil-Warnungen gegen Ihre bestehende Baseline hinzu. Wählen Sie Schwellenwerte, die Sie verteidigen können, nicht solche, die Sie denken, dass sie "in Ordnung" sein werden.
- Canary 5 Prozent für 24 Stunden. Leiten Sie einen kleinen Teil des Produktionsverkehrs durch den neuen Endpunkt. Beobachten Sie das Dashboard, nicht nur die Warnungen.
- Schneiden Sie den Rest über. Sobald das Canary-Fenster sauber ist, verschieben Sie den verbleibenden 95 Prozent und lassen Sie den alten Client-Code auskommentiert (nicht gelöscht) für einen Release-Zyklus, damit Sie einen schnellen Rollback haben.
Löschen Sie den alten Code im nächsten Release danach. Lassen Sie keine toten Aufrufstellen länger als eine Woche herumliegen, weil der nächste Mensch, der das Modul berührt, sie wieder in eine neue Integration einfügt.
Häufig gestellte Fragen
Ist die SMS-Activate-Kompatibilitätsschicht eine echte API oder nur ein Stub?
Es ist ein echter Endpunkt unter api.verifysms.app/compat/handler_api.php, der jede große Aktion aus den SMS-Activate-öffentlichen Dokumenten akzeptiert: getBalance, getNumber, getStatus, setStatus, getPrices und getCountries. Anforderungen werden unter der Haube an unsere native API weitergeleitet, sodass Sie VerifySMS-Preise, -Abdeckung und -Rückerstattungsverhalten ohne Codeänderungen auf Ihrer Seite erhalten.
Wird mein alter API-Schlüssel funktionieren?
Nein. SMS-Activate-API-Schlüssel haben aufgehört, zu authentifizieren, als der Dienst herunterfuhr. Sie benötigen einen neuen Schlüssel von VerifySMS. Melden Sie sich an, fügen Sie einen kleinen Betrag hinzu und generieren Sie einen Schlüssel aus dem Dashboard. Das Schlüsselformat ist in der Länge identisch, sodass Sie ihn in dieselbe Umgebungsvariable einfügen können.
Wie funktionieren Rückerstattungen im Vergleich zu SMS-Activate?
SMS-Activate erforderte, dass Sie setStatus mit dem Statuscode 8 innerhalb von 20 Minuten aufrufen, um eine Nummer als ungenutzt zu markieren, und Rückerstattungen wurden manuell innerhalb weniger Stunden bearbeitet. VerifySMS akzeptiert den gleichen setStatus-Aufruf und refundiert den vollen Betrag auf Ihr Guthaben innerhalb von 60 Sekunden. Wenn Sie vergessen, setStatus überhaupt aufzurufen, refundiert unser System immer noch automatisch jede Nummer, die nie eine SMS nach dem Leasingfenster erhalten hat.
Welche Länder werden unterstützt?
VerifySMS deckt über 200 Länder ab. Jedes Land, das SMS-Activate anbot, ist auf VerifySMS verfügbar, einschließlich Russland, Indonesien, Vietnam, Nigeria und den USA. Sie können Ihre bestehende Länder-ID-Mapping beibehalten oder auf ISO-3166-Alpha-2-Codes migrieren, wann immer Sie möchten.
Ist die Preisgestaltung dieselbe?
Nein. Die Bottom-of-Market-Preise von SMS-Activate von 0,03 bis 0,05 $ pro Verifizierung für russische Nummern sind vom offenen Markt verschwunden. Die aktuelle Marktpreisspanne reicht von 0,10 $ für gängige Dienste bis hin zu 0,25 $ für US-Nicht-VoIP-Nummern auf strengeren Plattformen. VerifySMS berechnet 0,10 $ als Baseline und veröffentlicht länderspezifische Preise auf dem Dashboard.
Muss ich meine Polling-Logik ändern?
Nein. Der getStatus-Aufruf gibt STATUS_WAIT_CODE und STATUS_OK im gleichen Format zurück, das SMS-Activate verwendete. Polling-Intervalle von 3 bis 5 Sekunden funktionieren immer noch. Das einzige neue Verhalten ist, dass VerifySMS auch eine Webhook-URL im Dashboard anbietet, sodass Sie das Polling ganz einstellen können, wenn Sie eine ereignisgesteuerte Fluss bevorzugen.
Was passiert, wenn die Kompatibilitätsschicht jemals veraltet ist?
Die Kompatibilitätsschicht wird als permanente öffentliche Schnittstelle betrachtet. Wenn wir jemals ihr Verhalten ändern, veröffentlichen wir ein Mindestmaß an sechsmonatiger Deprecationsfenster mit einer vollständigen Migrationsnote. Die native VerifySMS-JSON-API ist auch dokumentiert, sodass Sie von der Kompatibilitätsschicht zu einem eigenen Zeitpunkt migrieren können, wenn es sinnvoll ist.
Wie kann ich testen, ohne Geld auszugeben?
Das VerifySMS-Dashboard bietet einen Sandbox-Modus, der simulierte Telefonnummern und konservierte SMS-Codes zurückgibt, ohne Ihr Guthaben zu belasten. Schalten Sie den Sandbox-Schalter im Dashboard ein oder senden Sie den X-Sandbox-Mode-Header mit jeder Anfrage, um Ihre Codepfade zu üben, bevor Sie live gehen.
Kann ich auch von anderen Diensten migrieren?
Ja. Dieses Playbook ist um die SMS-Activate-API herum geschrieben, weil dort die meisten gestrandeten Codes existieren, aber die gleiche Checkliste gilt für Migrationen von 5sim, SMS-MAN oder einem anderen handler_api-kompatiblen Dienst. Die Kompatibilitätsschicht erkennt handler_api.php-Parameter, unabhängig davon, welchen Dienst Sie zuvor aufgerufen haben.
Wie lange dauert eine echte Migration?
Für eine einzelne Serviceintegration mit einigen Dutzend Aufrufstellen planen Sie zwei bis vier Stunden fokussierte Arbeit ein, plus ein 24-Stunden-Canary-Fenster, bevor Sie den gesamten Verkehr übergeben. Größere Multi-Service-Migrationen mit benutzerdefinierter Fehlerbehandlung, Analytik und Wiederholungen können länger dauern, aber in der Regel innerhalb eines einzigen Arbeitstages abgeschlossen sein.
Verliere ich meine historischen Daten?
Die SMS-Activate-Verifizierungsgeschichte ging offline, als der Dienst herunterfuhr und ist nicht wiederherstellbar. VerifySMS unterhält ein vollständiges Audit-Log jeder Verifizierungsversuche auf Ihrem Konto für 12 Monate, zugänglich über das Dashboard und über die /compat/handler_api.php?action=getHistory-Erweiterung.
Beeinflusst dies meine GDPR- oder Compliance-Position?
VerifySMS ist im Vereinigten Königreich registriert und folgt der britischen GDPR. Wir veröffentlichen unsere Datenaufbewahrungsrichtlinie, Subprozessoren und DPA auf der Datenschutzseite. Wenn Ihre vorherige Einrichtung eine DPA mit SMS-Activate erforderte, kontaktieren Sie uns und wir werden dieselbe Vereinbarung innerhalb eines Geschäftstages gegenzeichnen.
Nächste Schritte
Wenn Sie bisher gelesen haben, haben Sie bereits die Teile, die Sie benötigen. Beginnen Sie mit dem Inventarisierungsschritt, erhalten Sie den Basis-URL-Austausch vor einem Kollegen zur Überprüfung und führen Sie den Canary über Nacht aus. Das Playbook ist klein, weil der schwierige Teil die Disziplin ist, nach dem Canary-Fenster aufzuhören, anstatt alles in einem Commit zu übergeben.
Verwandte Lektüre auf der restlichen Seite:
- State of SMS Verification 2026 — vollständiger unabhängiger Benchmark von 8 Diensten mit Preis-, Verkehrs- und Rückerstattungspolitikdaten.
- Beste SMS-Activate Alternativen 2026 — Vollständiger Leitfaden — Nicht-Entwickler-Leitfaden für die Ersatzoptionen.
- VerifySMS vs SMS-Activate — Vollständiger Vergleich — Seitenvergleich für Teams, die noch evaluieren.
- SMS-Verifizierungs-API-Entwicklerintegrationsleitfaden 2026 — native VerifySMS-API-Durchlauf für den Fall, dass Sie bereit sind, die Kompatibilitätsschicht zu verlassen.
Bereit, die Migration auf einen Abend zu reduzieren?
Erstellen Sie einen VerifySMS-API-Schlüssel →Sandbox-Modus inklusive · Auto-Rückerstattungsgarantie · 200+ Länder · SMS-Activate-Kompatibilitätsschicht auf /compat/handler_api.php
Next steps
If you have read this far, you already have the pieces you need. Start with the inventory step, get the base URL swap in front of a teammate for review, and run the canary overnight. The playbook is small on purpose; the hard part is the discipline to stop after the canary window instead of cutting everything over in one commit.
Related reading on the rest of the site:
- State of SMS Verification 2026 — full independent benchmark of 8 services with pricing, traffic, and refund policy data.
- Beste SMS-Activate Alternativen 2026 — Vollständiger Leitfaden — non-developer guide to the replacement options.
- VerifySMS vs SMS-Activate — Vollständiger Vergleich — side-by-side comparison for teams still evaluating.
- SMS Verification API Integration Guide — native VerifySMS API walkthrough for when you are ready to move off the compat layer.
Ready to cut the migration to a single evening?
Create a VerifySMS API key →Sandbox mode included · Auto-refund guarantee · 200+ countries · SMS-Activate compat layer on /compat/handler_api.php