메인 콘텐츠로 건너뛰기
이벤트는 사용 기반 청구의 기초입니다. 청구 가능한 작업이 발생할 때 이벤트를 전송하고, 미터가 이를 집계하여 요금으로 변환합니다.

API 참조 - 이벤트 수집

예제 및 응답 코드가 포함된 전체 API 문서입니다.

이벤트 구조

event_id
string
required
고유 식별자. UUID를 사용하거나 고객 ID + 타임스탬프 + 작업을 결합하여 사용합니다.
customer_id
string
required
Dodo Payments 고객 ID. 유효한 기존 고객이어야 합니다.
event_name
string
required
미터의 이벤트 이름과 일치하는 이벤트 유형(대소문자 구분). 예: api.call, image.generated
timestamp
string
ISO 8601 타임스탬프. 생략 시 서버 시간으로 기본 설정됩니다. 지연/배치 이벤트의 정확한 청구를 위해 포함합니다.
metadata
object
집계 및 필터링을 위한 추가 속성:
  • 숫자 값: bytes, tokens, duration_ms
  • 필터: endpoint, method, quality
metadata: {
  endpoint: "/v1/orders",
  method: "POST",
  tokens: 1024
}

이벤트 전송

await fetch('https://test.dodopayments.com/events/ingest', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.DODO_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_id, customer_id, event_name
  • 메타데이터 키는 미터의 “속성 초과”와 정확히 일치해야 합니다
  • 문자열이 아닌 숫자를 사용하세요: tokens: 150가 아닌 tokens: "150"

다음 단계