跳转到主要内容
事件是基于使用的计费的基础。当可计费操作发生时发送事件,计量器将其汇总为费用。

API Reference - Events Ingestion

完整的 API 文档,包含示例和响应代码。

事件结构

event_id
string
必填
唯一标识符。使用 UUID 或组合客户 ID + 时间戳 + 操作。
customer_id
string
必填
Dodo Payments 客户 ID。必须为有效的现有客户。
event_name
string
必填
与您的计量器事件名称相匹配的事件类型(区分大小写)。示例:api.callimage.generated
timestamp
string
ISO 8601 时间戳。如省略则默认使用服务器时间。对于延迟/批量事件请务必包含,以确保计费准确。
metadata
object
用于聚合和过滤的附加属性:
  • 数值:bytestokensduration_ms
  • 过滤器:endpointmethodquality
metadata: {
  endpoint: "/v1/orders",
  method: "POST",
  tokens: 1024
}

发送事件

await fetch('https://test.dodopayments.com/events/ingest', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.DODO_PAYMENTS_API_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    events: [{
      event_id: "api_call_1234",
      customer_id: "cus_abc123",
      event_name: "api.call",
      metadata: { endpoint: "/v1/orders" }
    }]
  })
});
每次请求最多批量处理 100 条事件,以提升性能。

摄取蓝图

适用于常见用例的现成事件模式。使用经过验证的蓝图开始,而不是从头开始构建。

最佳实践

使用确定性 ID 防止重复:${customerId}_${action}_${timestamp}
在遇到 5xx 错误时使用指数退避重试。不要对 4xx 错误重试。
实时事件可省略。对于延迟/批量事件请包含,以确保准确性。
跟踪成功率并将失败事件排队以便重试。

故障排除

  • 事件名称必须与计量器完全匹配(区分大小写)
  • 客户 ID 必须存在
  • 检查计量器过滤器是否排除了事件
  • 确认时间戳是最近的
验证 API 密钥是否正确并使用格式:Bearer YOUR_API_KEY
确保所有必填字段都已提供:event_idcustomer_idevent_name
  • 元数据键必须与计量器的“Over Property”完全一致
  • 使用数字,而非字符串:tokens: 150,而不是 tokens: "150"

下一步