@dodopayments/ingestion-blueprints npm packageに含まれています(createLLMTracker())。
Quick Start
SDKをインストールし、meterを作成して、LLM clientをラップします。
API Reference - Events Ingestion
usage eventを受信するAPI endpointです。
API Reference - Meters
請求用のmeterを作成して設定します。
Usage-Based Billing Guide
meterを使ったusage-based billingを最初から最後まで設定します。
SaaS app、AI chatbot、コンテンツ生成tool、その他usageベースで請求するLLM-powered applicationで使用できます。
クイックスタート
token usageを追跡するには、packageをインストールし、meterを作成して、LLM clientをラップします。1
Install the SDK
Dodo Payments Ingestion Blueprints packageをインストールします:使用するLLM providerのSDKもインストールします。たとえば、
openai、@anthropic-ai/sdk、groq-sdk、@google/genai、またはaiと@ai-sdk/googleです。2
Get Your API Keys
2つのAPI keyが必要です:
- Dodo Payments API key: Dodo Payments dashboardのDeveloper → API Keysで作成し、
DODO_PAYMENTS_API_KEYに保存します。構築中はtest mode keyを使用してください。test mode keyはtest_modeでのみ機能します。 - LLM provider API key: OpenAI、Anthropic、Groq、OpenRouter、Googleなど、呼び出すproviderのkeyです。例では
OPENAI_API_KEYなどのvariableから読み取ります。
3
Create a Meter in Dodo Payments
usageを追跡する前にmeterを作成します:詳しい手順については、Usage-Based Billing Guideを参照してください。
- Dodo Payments dashboardでProducts → Metersに移動します。
- Create Meterをクリックします。
- meterを設定します:
- Meter Name:
LLM Token Usageなどの説明的な名前。 - Event Name:
llm.chat_completionなどの一意なevent identifier。 - Aggregation Type: token countを合計するSum。
- Over Property: 請求対象とするtoken count:
inputTokens: input(prompt)token。outputTokens: output(completion)token。modelが報告する場合はreasoning tokenを含みます。totalTokens: inputとoutput tokenの合計。
- Measurement Unit: 請求書に表示する単位。たとえば
tokensです。
- Meter Name:
- Create Meterをクリックします。
ここで設定するEvent Nameは、SDKに渡す
eventNameと完全に一致している必要があります(大文字と小文字を区別します)。4
Track Token Usage
trackerを作成し、LLM clientをラップして、通常どおりclientを呼び出します:
ラップしたclientを通じて完了した各呼び出しは、billingのためにtoken countを含むusage eventをDodo Paymentsへ送信するようになります。
設定
トラッカー設定
application startup時にtrackerを1回作成し、すべての顧客で再利用します。createLLMTracker()はこれらのoptionを受け取り、apiKeyまたはeventNameがmissingまたはemptyの場合はerrorをthrowします:
string
必須
Dodo PaymentsのAPIキー。API Keys pageから取得できます。
string
trackerのenvironment modeです:
test_mode: developmentとtesting用。これがdefaultです。live_mode: production用。
live_modeをdefaultにするため、productionではlive_modeを明示的に設定してください。string
必須
meterをtriggerするevent nameです。Dodo Payments meterのEvent Nameと完全に一致している必要があります(大文字と小文字を区別します)。
このevent nameによって、追跡したusageがbilling calculationに使用する正しいmeterに紐付けられます。
wrap()以外に、trackerにはtrack(response, customerId, metadata)もあります。これはすでに取得したresponseからusageを記録します。またhealthCheck()は、Dodo Payments APIに接続できる場合にtrueを返します。
Wrapper Configuration
wrap()に次のparameterを渡します:
object
必須
OpenAI、Anthropic、Groq、Google GenAI clientなどのLLM client instance、または
{ generateText }などのAI SDK functionを保持するobjectです。string
必須
請求対象の顧客のDodo Payments customer IDです。
cus_で始まります。object
各tracking eventに付加するoptionalな追加dataです。filteringとanalysisに使用できます。各valueはstring、number、またはbooleanである必要があります。
inputTokens、outputTokens、totalTokens、またはmodelという名前のkeyは、追跡対象のvalueを置き換えます。完全な設定例
この例ではAI SDK callを追跡し、provider metadataをeventに付加します:
Automatic Tracking: wrapperはproviderのresponseを変更せずに返すため、codeは元のprovider SDKを使用する場合と同じままです。responseを返す前にusage eventを送信するため、各呼び出しはingestion requestを待機します。また、provider callが成功していてもingestion requestが失敗すると、ラップされたcallはthrowします。streaming responseには返却object上の最終token countが含まれないため、wrapperは追跡しません。
対応provider
trackerは次のproviderとSDKのresponse formatからtoken countを読み取ります:AI SDK (Vercel)
AI SDK (Vercel)
多くのLLM providerに1つのinterfaceを提供するVercel AI SDKでusageを追跡します。Tracked Metrics:
inputTokens→inputTokensoutputTokens+reasoningTokens→outputTokenstotalTokens→totalTokens- Model name: AI SDK resultにはtop-level
modelfieldがないため、trackerはunknownを記録します。modelを記録するには、この例のようにwrappermetadataでmodelとして渡してください。
AI SDK経由でreasoning-capable model(thinking modeのGoogle Gemini 2.5 Flashなど)を使用すると、trackerは報告されたreasoning tokenを
outputTokensに加算します。OpenRouter
OpenRouter
OpenRouterのunified APIを通じて200以上のmodelのtoken usageを追跡します。Tracked Metrics:
prompt_tokens→inputTokenscompletion_tokens→outputTokenstotal_tokens→totalTokens- Model name
OpenAI
OpenAI
OpenAIのGPT modelのtoken usageを追跡します。Tracked Metrics:
prompt_tokens→inputTokenscompletion_tokens→outputTokenstotal_tokens→totalTokens- Model name
Anthropic Claude
Anthropic Claude
AnthropicのClaude modelのtoken usageを追跡します。Tracked Metrics:
input_tokens→inputTokensoutput_tokens→outputTokenstotalTokens。input_tokens+output_tokensとして計算されます- Model name
Groq
Groq
Groqが提供するmodelのtoken usageを追跡します。Tracked Metrics:
prompt_tokens→inputTokenscompletion_tokens→outputTokenstotal_tokens→totalTokens- Model name
Google Gemini
Google Gemini
Google GenAI SDKを通じてGoogleのGemini modelのtoken usageを追跡します。Tracked Metrics:
promptTokenCount→inputTokenscandidatesTokenCount+thoughtsTokenCount→outputTokenstotalTokenCount→totalTokensmodelVersionから取得したmodel version
Gemini Thinking Mode: Gemini 2.5 Proなど、回答前に思考するGemini modelでは、trackerが
thoughtsTokenCount(reasoning token)をoutputTokensに加算します。これにより、eventはmodelが生成したoutput全体を反映します。高度な使用方法
複数provider
LLM providerごとにusageを個別に追跡するには、providerごとにtrackerを1つ作成します:Express.js API Integration
このExpress.js APIは、requestを行った顧客の各chat completionを追跡します。簡潔にするため、request bodyからuserIdを読み取ります。userIdはuserのDodo Payments customer IDである必要があります。productionでは、request bodyを信頼するのではなく、authenticated sessionから読み取ってください。
追跡される内容
追跡された各callは、次のstructureのusage eventを1つDodo Paymentsに送信します:イベントフィールド
string
このeventの一意なidentifierです。SDKが生成します。Format:
llm_[timestamp]_[random]。timestampはmilliseconds単位の時刻、randomは6個のrandom characterです。string
clientをラップしたときに渡したcustomer IDです。Dodo Paymentsはこの顧客に請求します。
string
meterをtriggerするevent nameです。tracker configurationから取得されます。
string
ISO 8601 timestampです。providerがresponseを返した後、trackerがeventを送信する時点で設定されます。
object
トークン使用量および追加のトラッキングデータ:
inputTokens: 使用したinput(prompt)tokenの数。outputTokens: 使用したoutput(completion)tokenの数。該当する場合はreasoning tokenを含みます。totalTokens: total token(input + output)。model: 使用したLLM model。たとえばgpt-4です。responseで指定されていない場合はunknownになります。provider: wrapper metadataに含めた場合のLLM provider。- clientをラップしたときに指定したcustom metadata。
Reasoning Tokens: reasoning capabilityを持つmodelでは、
outputTokensにcompletion tokenとreasoning tokenの両方が含まれます。Dodo Payments meterは
metadata fields(通常はinputTokens、outputTokens、またはtotalTokens)を使用してusageとbillingを計算します。