# Webhook

> 在服务器状态变化、账单生成或攻击开始时接收签名的 HTTPS 回调。

Source: https://docs.avenlith.com/zh/webhooks  
Category: API 与自动化  
Last updated: 2026-09-22

## 事件

| 事件 | 触发时机 |
| --- | --- |
| `server.created`、`server.deleted` | 服务器创建或删除 |
| `server.status_changed` | 运行、停止、救援模式 |
| `invoice.issued`、`invoice.paid` | 计费事件 |
| `attack.started`、`attack.ended` | Shield 防护 |
| `backup.failed` | 计划备份未完成 |

## 校验签名

每个请求都带有 `X-Avenlith-Signature` 头，即使用端点密钥对原始请求体计算的 HMAC-SHA256：

```js
import crypto from 'node:crypto'

export function verify(rawBody, signature, secret) {
  const expected = crypto.createHmac('sha256', secret).update(rawBody).digest('hex')
  return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signature))
}
```

## 投递

端点须在 10 秒内返回 2xx 状态码。投递失败会以指数退避方式重试 24 小时，之后端点将被停用并通知项目所有者。

> **Tip:** > 同一事件可能投递多次，请使用 `event_id` 字段去重。
