# Asynchronous Knowledge Events

**You do not call this URL.** This page is a **reference** for **your webhook endpoint**: it documents the request
bodies the **eGain server** sends **to the URL you configure** (e.g. in the eGain Admin console). When knowledge
events occur, the server **PUTs** to your webhook; the callbacks below define each event type and the payload your
endpoint will receive.<br><br>
Webhook registration is done outside this API (e.g. via the eGain Admin console). Any "Try it" or request sample
below is for illustration only — in practice the **server** PUTs to **your** webhook URL, not the other way around.<br><br>
**Your webhook response:** Your endpoint should return **204 No Content** on successful processing so that the
server does not retry.<br><br>
**Note:** When the server puts event details to your callback URL:
<ul>
<li>Read timeout happens if your callback takes more than 10 seconds.</li>
<li>Only response codes <strong>429</strong>, <strong>502</strong>, or <strong>503</strong> (or read timeout)
trigger a retry; the server retries with a 30 second interval for a maximum of 3 times.</li>
<li>Any other response code is ignored; the server does not retry and considers the delivery complete.</li>
<li>Events provide at-least-once delivery guarantee. The same event may be delivered more than once.</li>
<li>Implement idempotent processing using the notificationId for deduplication.</li>
<li>Events may be delivered out of order.</li>
<li>New event types may be added in the future. Your endpoint should ignore event types it does not recognize.</li>
<li>Existing event payloads may gain new fields in the future. Existing attributes will not be renamed or removed,
so changes remain backwards compatible. Your endpoint should tolerate (ignore) unknown fields rather than failing on them.</li>
</ul>

Endpoint: PUT /webhook
