There are two webhook surfaces:
  • wazapin.webhooks manages webhook endpoints and deliveries.
  • @wazapin/sdk/webhooks verifies signed deliveries on your server.

Manage webhook endpoints

const settings = await wazapin.webhooks.listSettings();

const { data: endpoint } = await wazapin.webhooks.createEndpoint({
  url: "https://yourapp.com/webhooks/wazapin",
  event_types: ["message.new", "message.status_update"],
});

await wazapin.webhooks.test(endpoint.id);

Rotate a signing secret

const { data } = await wazapin.webhooks.rotateSecret("endpoint_123");

console.log(data.signing_secret);

Retry a delivery

const deliveries = await wazapin.webhooks.listDeliveries({ limit: 50 });
await wazapin.webhooks.retryDelivery("msg_123");

Verify webhook signatures

Install the optional peer dependency:
npm install @wazapin/sdk svix
import { parseWebhookEvent, verifyWebhook } from "@wazapin/sdk/webhooks";

const verified = verifyWebhook(
  rawBody,
  req.headers,
  process.env.WAZAPIN_WEBHOOK_SECRET!,
);

const event = parseWebhookEvent(verified.eventType, verified.body);
Verify the signature using the raw request body. Do not verify a re-serialized JSON object.