Skip to main content
API Gateway Blueprint は、サービスが処理する各 API call の usage event を Dodo Payments に送信し、Count meter によってそれらの event を customer ごとの call 単位の料金に変換します。API endpoint の usage の追跡、rate limit の判断、API usage に対する請求に使用できます。@dodopayments/ingestion-blueprints npm package に trackAPICall() として含まれており、call ごとに 1 つの event を送信します。また、リクエスト数が多い場合に event をキューに追加する createBatch() も含まれています。

ユースケース

API Gateway Blueprint は、次のシナリオに適しています:

API-as-a-Service

API platform 上で customer ごとの call 数を追跡し、call 数に応じて請求します。

Rate Limiting

usage-based rate limit の判断に使用するため、customer ごとの call volume を記録します。blueprint は usage を記録しますが、limit の適用は行いません。

Performance Monitoring

各 event とともに response time と status code を記録し、error rate を billing data の隣に表示します。

Multi-Tenant SaaS

異なる endpoint における API consumption に対して customer に請求します。
各 event には、請求対象の customer の Dodo Payments customer ID が必要です。この ID は cus_ で始まります。customer の作成時に user record とともに保存し、customerId として渡してください。

クイックスタート

API call を追跡するには、package をインストールし、meter を作成して、各 call に対して event を送信します。
1

Install the SDK

Dodo Payments Ingestion Blueprints package をインストールします:
2

Get Your API Keys

Dodo Payments dashboard の Developer → API Keys で Dodo Payments API key を作成し、DODO_PAYMENTS_API_KEY environment variable に保存します。構築中は test mode key を使用してください。test mode key は test_mode でのみ使用できます。
3

Create a Meter

Dodo Payments dashboard で Products → Meters に移動し、Create Meter をクリックします。次の field を設定します:
  • Meter Name: API Calls などの説明的な名前。
  • Event Name: api_call、または任意の名前。code 内の eventName と完全に一致する必要があります(大文字と小文字を区別)。
  • Aggregation Type: call 数に基づいて請求するための Count。
  • Measurement Unit: 請求書に表示される単位。例: calls。
一部の call のみをカウントするには、Enable Event Filtering をオンにし、endpoint、method、status_code などの metadata key に条件を追加します。
4

Track API Calls

API key と event name を指定して Ingestion instance を 1 つ作成し、pattern を選択します。call ごとに 1 つの event を送信する方法、high volume 向けの batch、またはすべての request を追跡する Express.js middleware から選択できます。middleware では、req.user は authentication middleware から取得され、その id は Dodo Payments customer ID である必要があります。sign in していない user からの request には anonymous が customer ID として送信されますが、これはどの customer とも一致しません。

Configuration

Ingestion Configuration

new Ingestion() に次の option を渡します:
string
必須
dashboard から取得した Dodo Payments API key。
string
Environment mode: test_mode または live_mode。デフォルトは test_mode です。Dodo Payments SDKs のデフォルトは代わりに live_mode であるため、production では live_mode を明示的に設定してください。
string
必須
meter の Event Name と一致する event name(大文字と小文字を区別)。この instance が送信するすべての event で使用されます。

API Call の追跡 option

trackAPICall() と batch.add() に次の option を渡します:
string
必須
call の請求対象となる Dodo Payments customer ID。例: cus_123。
object
API call に関する任意の metadata。endpoint、method、status code、response time などを指定できます。各 value は string、number、または boolean である必要があります。API は nested object、array、null value を拒否します。

Batch Configuration

createBatch(ingestion, options) は event を memory にキューに追加し、3 つの method を持つ object を返します。add() は event をキューに追加し、flush() はキューに追加された event を送信し、cleanup() は event を送信して timer を停止します。flush では、event ごとに 1 つの ingest request を並列で送信します。
number
即時 flush を実行するキュー内の event 数。デフォルト: 100。
number
batch が flush されるまで、最後に add() を呼び出してから待機する時間(ミリ秒)。add() を呼び出すたびに timer が再開されます。デフォルト: 5000(5 秒)。

ベストプラクティス

高トラフィックにはバッチ処理を使用: 高トラフィックのアプリケーションでは、createBatch() を使用してください。batch.add() は即座に戻るため、トラッキングによってリクエストハンドラーに遅延が生じることはありません。
batch は flush されるまで event を memory に保持し、送信に失敗した event の retry は行いません。automatic flush では、console.error を使用して error を log に記録します。flush() または cleanup() を呼び出すと、その error が throw されます。
Shutdown 時に Batch を Clean Up する: application の shutdown 時に batch.cleanup() を呼び出し、pending event が失われずに flush されるようにします。
最終更新日 2026年9月26日