参考
事件类型
每一种 simail 事件、轮询与 webhook 和 WebSocket 共用的薄载荷,以及哪些事件会唤醒 agent。
docs.simail.ai/zh/event-types
载荷是薄的,每个通道都一样(轮询、webhook、WebSocket)。它们从不包含主题、正文或附件名;需要内容时用你的 key 去取那封信(扣留的信仍然只有元数据)。
{ "event_id": "evt_…", "event_type": "message.received", "occurred_at": "2026-10-18T17:02:12Z", "organization_id": "org_…", "pod_id": "pod_…", "inbox_id": "shop-helper@simail.email", "thread_id": "thr_…", "message_id": "msg_…", "data": { "from": "ada@example.com", "labels": ["received", "unread"], "held": false, "classification": "normal", "wake": true }}| 字段 | 说明 |
|---|---|
event_id | 唯一;用它去重(webhook 把它放在 webhook-id) |
occurred_at | ISO 8601,UTC |
pod_id、inbox_id、thread_id、message_id | 事件关于该对象时才出现 |
data | 小的、随类型变化的字段(见下) |
| 类型 | 何时 | data |
|---|---|---|
message.received | 一封信已存入 | from、labels、held、classification、wake |
message.received.spam | 被标成垃圾的信已存入 | 同上 |
message.received.blocked | 带 blocked 标签的信已存入 | 同上 |
message.held | 一封信被扣留给人审(只有元数据) | from、hold_reasons |
message.released | 人放行了一封扣留的信 | from、wake |
message.sent | 外发信已交给邮件网络 | send_id |
message.delivered | 收件人的服务器接受了它 | recipient |
message.bounced | 退信 | recipient、bounce_type(hard 或 soft) |
message.complained | 收件人把它标成垃圾 | recipient |
message.rejected | 发信网络拒绝了它 | recipient |
draft.submitted | 草稿已提交发送 | draft_id、send_id |
approval.requested | 一次发送在等审批 | approval_id、send_id、flags |
approval.decided | 审批人批准或拒绝,或已过期 | approval_id、send_id、decision |
send.blocked | 一次发送被拦住 | send_id、reasons |
send.cancelled | 定时或待发的发送被取消 | send_id |
send.deferred | 发送在等待(暂停、锁定或每日上限)并会重试 | send_id、reason |
thread.locked | 人接管了一个线程 | |
thread.unlocked | 人交还了它 | |
label.added | 加了一个标签 | label |
label.removed | 去掉了一个标签 | label |
inbox.digest | 没有唤醒 agent 的事件的每日计数 | counts |
inbox.created | 建了一个邮箱 | |
inbox.deleted | 删了一个邮箱 | |
org.suspended | 该组织的发送被暂停 | reason |
org.resumed | 发送恢复 |
唤醒 agent
Section titled “唤醒 agent”每个 message.received(以及 message.released)事件都有 data.wake。邮件属于你参与的线程、来自该邮箱的联系人、或命中收信允许名单时,它为 true。陌生人的信唤醒 agent 有预算:每个邮箱每天(inbound.wake.stranger_daily,默认 50)以及每个发件人每小时(inbound.wake.per_sender_hourly,默认 5)。超过之后,事件仍会存下并由 GET /v0/events 返回,但 webhook 和 WebSocket 会跳过,除非订阅设置了 include_non_wake: true。每天一条 inbox.digest 报告被跳过的数量。扣留的信从不唤醒。
这样,一波邮件不会变成一波模型调用。