使用文档

数据收集 API

接口与用途

接口 方法 用途
/api/collect POST 单条浏览器/客户端事件
/api/collect/batch POST 批量事件
/api/v1/workspaces/:workspaceId/requests POST 认证的服务器访问日志,不是通用业务 JSON 导入
/api/ai/trace/batch POST AI SDK 专用追踪,使用独立契约

浏览器优先使用控制台生成的 SDK 安装代码。业务服务可按下面格式主动推送事件,需要自行完成业务字段适配。目前没有可配置的外部业务 API 定时拉取连接器。

批量事件

POST /api/collect/batch
Content-Type: application/json
Origin: https://example.com

{
  "events": [{
    "appId": "your-app-id",
    "eventId": "subscription-started-123",
    "type": "event",
    "sessionId": "sess-123",
    "visitorId": "visitor-123",
    "userId": "user-123",
    "url": "https://example.com/billing",
    "path": "/billing",
    "hostname": "example.com",
    "timestamp": 1791676800000,
    "data": {"name": "subscription_started", "plan": "pro", "amount": 49.5}
  }]
}

timestamp 使用实际发生时间(Unix 毫秒);不要照抄示例时间。重试必须保留同一 eventId,不要每次重新生成。事件 ID 的去重能力受队列和存储的去重窗口约束,不是永久幂等保证。

正常响应为 HTTP 200:

{"accepted": 1, "dropped": 0, "sourceRejected": 0}

accepted 表示持久受理,不表示已经入库可查询,也不表示业务事件的真实性已经验证。重传被受理后可以在队列中去重,因此它不是最终新增记录数。dropped 包含结构不合格、应用不可采集、功能关闭、来源拒收、配额采样和超出单批上限等情况;sourceRejected 是其中的来源拒收数。当前没有逐条事件错误列表。

字段与限制

字段 说明
appId 必填,控制台应用 ID,不是工作空间 ID
type 必填,受支持的事件类型
eventId 推荐,稳定且唯一,最长 128 字节,重试复用
sessionId / visitorId 最长 128 字节;缺失时无法可靠去重会话/访客
userId 可选稳定业务用户 ID,最长 256 字节
url / hostname / path 网站事件应填写实际来源,长度上限分别 4096/255/2048 字节
timestamp 实际发生时间;服务端对异常时间做归一化
data 事件附加 JSON,上限 64 KiB;自定义事件使用 data.name

支持 pageview、event、identify、click、scroll、error、form、api、performance、webvital、session、heartbeat、media、兼容类型 leave。AI 追踪及服务器 request 日志使用独立接口。

单批最多 100 条,多出的事件会计入 dropped,请在客户端拆批。服务端对其他元数据、屏幕尺寸、UTM 和来源字段也有校验;不承诺旧文档中的 JSON 深度 5 层或统一 30 天拒收规则。

自定义事件属性分组只支持标量,键须以英文字母开头,使用字母、数字、下划线或连字符,最长 40 字符。金额属性不会自动成为收入求和指标;标准电商报表需使用 trackEcommerce。

单条事件

/api/collect 请求体为上述 events 数组中的单个对象。正常接收返回 {"status":"ok"};关闭采集、关闭功能或采样可能返回其他状态。来源拒收返回 403;无效结构返回 400;应用不存在返回 404。检查响应正文,不能仅判断 response.ok。

鉴权、来源与重试

浏览器采集接口不需要登录,应用 ID 是公开标识。来源域名校验不能防止服务端伪造 Origin,也不能代替业务数据源鉴权。不要把 API Key 放入网页。

服务器访问日志 /api/v1/workspaces/:workspaceId/requests 需要 X-API-Key、工作空间上下文,且应用必须属于该工作空间;受理成功返回 HTTP 202。它接受 {appId, requests},每条包含稳定 eventId、时间、IP、User-Agent、URL、HTTP 方法、状态和耗时,不接受任意订单字段映射。

采集端点支持跨域,应用的允许来源策略仍然生效。代理提供的客户端 IP 只有在可信代理设置正确时才可信。不要通过客户端请求头或 JSON 冒充真实客户 IP。

网络错误、429 和 5xx 可按退避策略重试,并尊重 Retry-After。503 ingestion_unavailable 表示持久入队失败。200 丢弃不宜盲目重试,应先检查来源、设置、配额与结构。默认 SDK 有有限重试和缓存,页面退出时的 sendBeacon 返回 true 只表示浏览器接收发送任务。

接入验收应确认受理后在「验证接入」和事件分析中可查询。业务数据质量还需要独立鉴权、字段契约、幂等业务键、完整性对账和失败重放;当前公共采集不等于通用业务数据平台。