smartchat

Webhook-Tests

#Ein Test-Ereignis senden

Der Test-Aufruf sendet ein Ereignis webhook.test an deinen Endpunkt, signiert wie ein echtes, und wartet auf die Antwort. Die Antwort der API enthält den HTTP-Status, den dein Server gegeben hat, und wie lange es gedauert hat.

curl -X POST "https://api.smartchat.marketing/v1/webhook-endpoints/whe_0f8c1a2e4b7d4c3e9a5b6d7e8f901234/test" \
  -H "Authorization: Bearer $SMARTCHAT_API_KEY"
import os
import requests

response = requests.post(
    "https://api.smartchat.marketing/v1/webhook-endpoints/whe_0f8c1a2e4b7d4c3e9a5b6d7e8f901234/test",
    headers={"Authorization": "Bearer " + os.environ["SMARTCHAT_API_KEY"]},
)
response.raise_for_status()
print(response.json())
const response = await fetch("https://api.smartchat.marketing/v1/webhook-endpoints/whe_0f8c1a2e4b7d4c3e9a5b6d7e8f901234/test", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.SMARTCHAT_API_KEY}`,
  },
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());

Response (200):

{
  "object": "webhook_test_result",
  "endpoint_id": "whe_0f8c1a2e4b7d4c3e9a5b6d7e8f901234",
  "delivery_id": "whd_7a1b2c3d4e5f40718293a4b5c6d7e8f9",
  "delivered": true,
  "http_status": 200,
  "duration_ms": 182,
  "error": null
}

Ein Test-Ereignis ändert den Zustand des Endpunkts nicht. Das Recht für das Test-Ereignis ist webhooks:write.

#Auf deinem eigenen Rechner testen

SmartChat ruft nur https-Adressen auf Port 443 auf. Um mit einem Programm auf deinem Rechner zu testen, nutze ein Werkzeug, das deinem lokalen Server eine öffentliche https-Adresse gibt, und trage diese Adresse als Endpunkt ein. Entferne den Endpunkt, wenn du fertig bist.

#Herausfinden, warum eine Zustellung gescheitert ist

Das Zustellprotokoll listet jeden Versuch mit seinem Status, dem HTTP-Status, einem kurzen bereinigten Fehlertext und der Dauer.

curl "https://api.smartchat.marketing/v1/webhook-endpoints/whe_0f8c1a2e4b7d4c3e9a5b6d7e8f901234/deliveries?status=failed&limit=20" \
  -H "Authorization: Bearer $SMARTCHAT_API_KEY"
import os
import requests

response = requests.get(
    "https://api.smartchat.marketing/v1/webhook-endpoints/whe_0f8c1a2e4b7d4c3e9a5b6d7e8f901234/deliveries",
    headers={"Authorization": "Bearer " + os.environ["SMARTCHAT_API_KEY"]},
    params={
        "status": "failed",
        "limit": "20",
    },
)
response.raise_for_status()
print(response.json())
const response = await fetch("https://api.smartchat.marketing/v1/webhook-endpoints/whe_0f8c1a2e4b7d4c3e9a5b6d7e8f901234/deliveries?status=failed&limit=20", {
  method: "GET",
  headers: {
    Authorization: `Bearer ${process.env.SMARTCHAT_API_KEY}`,
  },
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());

Response (200):

{
  "object": "list",
  "data": [
    {
      "object": "webhook_delivery",
      "id": "whd_7a1b2c3d4e5f40718293a4b5c6d7e8f9",
      "endpoint_id": "whe_0f8c1a2e4b7d4c3e9a5b6d7e8f901234",
      "event_id": "evt_0f8c1a2e4b7d4c3e9a5b6d7e8f905678",
      "type": "contact.created",
      "attempt": 1,
      "status": "delivered",
      "http_status": 200,
      "error": null,
      "duration_ms": 182,
      "next_attempt_at": null,
      "created_at": "2026-10-25T09:44:59Z",
      "finished_at": "2026-10-25T09:45:00Z"
    }
  ],
  "has_more": false,
  "next_cursor": null,
  "url": "/v1/webhook-endpoints/whe_0f8c1a2e4b7d4c3e9a5b6d7e8f901234/deliveries"
}

Typische Gründe:

Du siehstGrund
http_status 401 oder 403Dein Server hat die Anfrage abgelehnt. Prüfe die Anmelde-Regeln deines eigenen Servers für diese Adresse.
http_status 404Der Pfad ist falsch.
ZeitüberschreitungDein Server hat mehr als 10 Sekunden gebraucht. Antworte zuerst, arbeite später.
Die Signaturprüfung scheitert in deinem CodeDu hast einen geparsten Body statt des rohen Bodys genutzt oder das falsche Geheimnis. Siehe Eine Signatur prüfen.