SMSForge Anmelden Registrieren
API-Referenz 14 Integrationen 12
Rückmeldung

Webhooks

Unter API & Konto hinterlegst du eine https-Adresse. Wir senden dorthin einen POST mit JSON, sobald sich der Status einer SMS ändert:

{"event":"message.delivered","id":123,"to":"+491711234567","status":"delivered",
 "error":null,"sent_at":"2026-10-19T09:15:02+02:00","delivered_at":"2026-10-19T09:15:09+02:00"}
  • Ereignisse: message.sent, message.delivered, message.failed und zum Testen webhook.test.
  • Antworte mit einem 2xx-Status; sonst versuchen wir es bis zu 3-mal (nach 1, 5 und 30 Minuten).
  • Die Adresse muss öffentlich erreichbar sein (https, Port 443/8443). Weiterleitungen folgen wir nicht.

Signatur prüfen

Damit nur wir deinen Webhook aufrufen können, signieren wir jede Anfrage: Header X-SMSForge-Timestamp und X-SMSForge-Signature: sha256=… – HMAC-SHA256 über Timestamp + "." + Rohdaten mit deinem Secret.

$body = file_get_contents('php://input');
$ts   = $_SERVER['HTTP_X_SMSFORGE_TIMESTAMP'];
$sig  = $_SERVER['HTTP_X_SMSFORGE_SIGNATURE'];
$ok   = hash_equals('sha256=' . hash_hmac('sha256', $ts . '.' . $body, $SECRET), $sig)
        && abs(time() - (int) $ts) < 300;   // Replay-Schutz