Logo
Logo
CTRLK


課金利用状況APIガイド


課金利用状況APIは、毎月の請求書の根拠となる課金データにプログラム経由でアクセスできるようにします。必要に応じてコストを照会し、その結果をお客様のシステムに統合し、自動化されたレポート作成パイプラインを構築することができます。

課金利用状況APIの利用は、次のようなことをする必要が生じた時に役立ちます:

  • コストレポートパイプラインの自動化
  • 独自のダッシュボードまたは財務システムへの課金データの統合
  • アカウント階層全体を対象にしたオンデマンドのクエリ
  • 期間ごとの比較分析用の日次または月次コストの集計
機能課金利用状況APIメトリクスAPI財務レポート
データの種類財務(コスト)パフォーマンス(配信、エンゲージメント)財務(コスト)
アクセス非同期API非同期APIWebインターフェイス
時間の粒度日次、月次時間単位から年単位まで月別合計、日ごとの内訳(任意)
保持期間当月+過去2か月1回のクエリにつき最大366日当月+過去2か月
キャンペーン参照番号でのフィルタリング可可不可(ディメンションとしてのみ利用可能)
マルチテナントアプリケーション、エンティティアプリケーション、エンティティアプリケーション、エンティティ


アクセスと可用性

課金利用状況APIを使用するには、以下が必要です:

  • APIキー: billing:usage:viewスコープが必要です。詳細については、 API認可 について詳述しているドキュメントをご参照ください。
  • コールバックURL: クエリが完了した際に、NTT CPaaSが結果をPOSTする、サーバー上の一般にアクセス可能なエンドポイントです。localhostは使用できません。
  • 日付範囲: データは、当月および過去2か月の暦月分のみ利用可能です。

デフォルトでは、検索結果には、お持ちのアカウント、関連するサブアカウント、およびお客様の会社の管理下にあるすべてのアカウントのデータが含まれます。このアカウント横断的な表示は、請求書の構造を反映したものです。サブアカウントとしてログインした場合は、お客様専用のデータのみが表示されます。詳細[アについては、アカウントの階層と可視性 について詳述しているドキュメントをご参照ください。

重要課金利用状況APIは、レガシーアカウントのセットアップではご利用いただけません。これは構造上の制限であり、リクエストに応じて有効化することはできません。お使いのアカウントがレガシーセットアップであるかどうかご不明な場合は、アカウントマネージャーにお問い合わせください。


対応範囲

課金利用状況APIは、以下のチャネルとプラットフォームサービスをサポートしています:


Apple Messages for BusinessSMSMMSEmailWhatsAppRCSViberNumber LookupMobile PushEmail ValidationAgentOSVoice and Video

課金カテゴリーコードの完全なリストについては、課金データリファレンス内のカテゴリー をご参照ください。



仕組み

課金利用状況APIは、非同期のリクエスト/レスポンスパターンを使用します:

1

リクエストの送信
フィルター、集計ディメンション、サーバーを指す callbackUrlを含めて、 課金利用状況APIエンドポイントにPOSTします。

2

リクエストIDの受信
APIは直ちにrequestId (HTTP 201) を返します。処理は非同期に実行されます。

3

コールバックURLでの結果の受信
処理が完了すると、NTT CPaaSは結果をJSON形式でcallbackUrlにPOSTします。処理時間は、クエリの複雑さと日付範囲によって異なります。



データの確定

当月の課金データは、月次決算が完了するまでは暫定的なものです。合計額は、請求書が発行される翌月5日に確定するまでは変わる可能性があります。

重要確定したデータは、財務システムまたは課金システムにのみ統合されます。

当月のデータは、以下の状況が生じた場合に変更になることがあります:

  • トラフィックのレコードが届くのが遅くなった場合
  • 数量ベースの割引が遡及的に適用された場合
  • 価格調整が発生した場合

APIのレスポンスには、クエリに記述した各課金期間の確定ステータスを示すmetadata.billingPeriods配列が含まれています。財務計画または請求の目的で課金データを使用する際は、必ずその前に請求書と照合して、確定したデータであることを確認するようにしてください。

備考WhatsAppの月間アクティブユーザー数(MAU)ベースの定額サブスクリプションプランをご利用の場合、データには超過分の料金のみが表示されます。プランに含まれるユーザー数は表示されません。これは、財務レポート、課金利用状況APIおよびAgentOSレポートに適用されます。

メトリクスAPIとより広範な比較を行いたい時は、メトリクスAPI をご利用ください。但し、これら2つのAPIは測定対象が異なるため、直接比較することはできません。


データの対象範囲 [#data-scope]

以下に示す制約は、すべての課金データ表示画面(財務レポート、課金利用状況API)に適用されます:

  • 保持期間: 当月および過去2か月まで
  • タイムゾーン: UTC。カスタムタイムゾーンはサポートされていません。
  • マルチデータセンター: データはデータセンターごとに生成され、アクセスされます。データセンター間の集計はサポートされていません。お客様のアカウントがどのデータセンターでホストされているかを確認したい場合、アカウントマネージャーまたはサポートまでお問い合わせください。
  • 請求書の整合性: 課金データは、NTT CPaaSの請求書と同じ月次サイクル、通貨形式および課金体系に従います。

オプション [#options]

  • includeUnfinalizedData(ブール値、デフォルトは true): falseに設定すると、確定した課金期間のみが返され、当月の暫定データが除外されます。
json
1"options": {
2 "includeUnfinalizedData": false
3}


リクエストの作成

すべてのリクエストには、callbackUrl、request.filterBy.dateIntervalおよび request.aggregateByに少なくとも1つのエントリーがある3つのフィールドが必要です。その他のフィルターはすべて任意です。

備考dateIntervalまたはaggregateByが指定されていないリクエストについては、検証エラーが返されます。日付範囲は3か月を超えてはなりません。

例 [#example]

http
POST /billing/1/usage/query
json
1{
2 "callbackUrl": "https://example.com/billing-callback",
3 "request": {
4 "filterBy": {
5 "dateInterval": {
6 "sentSince": "2026-04-01",
7 "sentUntil": "2026-05-01"
8 }
9 },
10 "aggregateBy": ["DAY"]
11 }
12}

これは、2026年4月のコストが日別内訳として返された例です。sentUntilは「終了日を含まない」という意味になるため、暦月全体を網羅したい場合は、翌月の1日を指定してください。この例では、アカウントやカテゴリーのディメンションが指定されていないため、ACCOUNT_NAMEとCATEGORY_CODEはデフォルト値として自動的に追加されます。


フィルター [#filters]

フィルターは、対象として含めたいデータを処理前に絞り込みたい時に使用します。dateIntervalは必須です。その他のフィルターはすべて任意です。

フィルター説明備考
dateIntervalUTCで表示する課金データの対象期間このフィルターは必須です。sentSinceとsentUntilは yyyy-MM-dd形式で指定してください。sentSinceは開始日を含み、、sentUntilは終了日を含みません。最大範囲:当月および過去2か月まで。
categoriesフィルターで絞り込むチャネルまたはサービス詳細については、カテゴリー について詳述しているドキュメントをご参照ください。
trafficTypesチャネル内のトラフィックの種類値はチャネルによって異なります。
platformsCPaaS Xアプリケーションとエンティティ の組み合わせテナントまたはユースケースごとのコストを個別に把握したい時に使用します。
campaignReferenceIdsキャンペーン参照IDAPIでのみ利用可能で、財務レポートでは使用できません。
countryCodes送信先の国々ISO 3166-1 alpha-2 形式(例:["US", "DE"])。
subCategoriesカテゴリー内のサービスバリアントViber および VoiceとVideo カテゴリーに適用されます。詳細については、サブカテゴリー について詳述しているドキュメントをご参照ください。
accountKeys、senders、senderTypes、 directions、campaignIds、templateIds追加可能な任意フィルター有効な値については、課金データリファレンス をご参照ください。
備考米国では、SMS、MMSとRCSのトラフィックに対して、通信事業者向けのサーチャージとしてSMS_OPERATOR_FEE、MMS_OPERATOR_FEEまたはRCS_OPERATOR_FEEカテゴリーがそれぞれ別途生成されます。そのため、総コストを把握するには、フィルターに基本カテゴリーとその通信事業者向けの追加手数料カテゴリーの両方を含める必要があります(例:categories: ["SMS", "SMS_OPERATOR_FEE"]またはcategories: ["RCS", "RCS_OPERATOR_FEE"])。

集計ディメンション [#aggregation-dimensions]

集計ディメンションは、レスポンス内で結果がどのようにグループ化されるかを定義します。フィルターは、どのデータを含めるかを絞り込み、ディメンションは、どのようにグループ化されるかを定義します。例えば、フィルターで対象をcategories: ["SMS"]に絞り込むと、結果はSMSに限定されます。さらに、aggregateByに "COUNTRY_NAME"を追加すると、その結果が国ごとに分類されます。その結果が国ごとに分類されます。

aggregateByには少なくとも1つのディメンションを指定する必要がありです。ペアのいずれかのバリアントも指定しない場合、2つのペアにはデフォルト値が自動的に追加されます:

以下を送信すると...結果には以下が含まれます...
["DAY"]ACCOUNT_NAME、CATEGORY_CODE、DAY
["ACCOUNT_KEY", "DAY"]CATEGORY_CODE、ACCOUNT_KEY、 DAY
["ACCOUNT_NAME", "CATEGORY_NAME", "DAY"]ACCOUNT_NAME、CATEGORY_NAME、DAY
["ACCOUNT_KEY", "CATEGORY_NAME", "DAY"]ACCOUNT_KEY、CATEGORY_NAME、DAY

デフォルトで自動的に追加されるディメンション:

  • ACCOUNT_NAME: ACCOUNT_NAMEもACCOUNT_KEYも指定されていない場合に自動的に追加されます。`
  • CATEGORY_CODE: CATEGORY_CODEもCATEGORY_NAMEも指定されていない場合に自動的に追加されます。`

一方のバリアントを指定すると、もう一方は無効になります。両方を明示的に含めない限り、両方が同時に追加されることはありません。

指定可能な追加のディメンションには、時間(DAY、MONTH)、地域(COUNTRY_NAME、NETWORK_NAME)、送信者、キャンペーン、マルチテナントのコンテキスト(APPLICATION_ID、ENTITY_ID)が含まれます。キャンペーンおよびテンプレートのディメンションからは、IDのみが返されます。課金データには名前は含まれません。

詳細情報
For the full list of aggregateBy enum values and their definitions, see Dimensions in the Billing data reference.


レスポンスデータ

結果は、JSON形式でコールバックURLに送信されます。レスポンスには以下の内容が含まれます:

フィールド説明
requestIdクエリを送信した際に返されたIDと一致します
statusSUCCESSまたはFAILED
response.requestedPeriodクエリで使用された時間範囲。粒度の調整や確定処理のトリミングにより、指定した範囲とは異なる場合があります。
response.totalRows返されたデータ行の総数
response.columns各カラムに記載される配列: columnName(ディメンションまたはコストフィールドコード)と columnDataType(STRING、INTEGER、NUMBER、BOOLEAN、DATE_TIME)
response.rowsデータ行の配列。各行には、columns配列と同じ順序の値が含まれています。N/Aと表示される場合、その行の組み合わせに適用できないフィールドであることを示します。
failureMessageステータスがFAILEDの場合に表示されます。
metadata.clientRequestedPeriodsentSinceとsentUntilの値は、送信したとおりに表示されます。response.requestedPeriodと照合して、範囲が調整されたかどうかを確認するようにしてください。
metadata.billingPeriodsクエリ内の各請求期間の確定ステータスは、month(yyyy-MM 形式)とvolumeFinalizedで表示されます。volumeFinalizedがtrueの場合、その月のユニット数は確定しており、これ以上の数量の変更は見込まれません。請求書が発行されるまでは請求額が変わる可能性があるため、最終金額については必ず請求書で確認するようにしてください。

コストフィールドの定義および通貨の表示形式については、コストフィールド について詳述しているドキュメントをご参照ください。



アカウントの階層と可視性

デフォルトでは、課金利用状況APIは、アカウント階層全体(お持ちのアカウント、関連するサブアカウント、およびお客様の会社の管理下にあるすべてのアカウント)のデータを返します。このアカウント横断的な表示は、請求書の構造を反映したものです。

サブアカウントでログインすると、ご自身のアカウントデータのみが表示されます。結果を特定のアカウントに絞り込みたい時は、accountKeysフィルタパラメーターを使用してください。



トラブルシューティング

問題解決策
コールバックURLに結果が届いていないコールバックURLが外部からアクセス可能であることを検証してください(localhostでは動作しません)。着信リクエストをブロックする可能性のあるファイアウォールのルールをチェックしてください。最初のレスポンスで返されたrequestIdを参照し、リクエストが受理されたことを確認してください。
401 UnauthorizedエラーAPIキーにbilling:usage:viewスコープが含まれていることを確認します。詳細については、 API認可 について詳述しているドキュメントをご参照ください。
検証エラーdateIntervalと少なくとも1つの aggregateByディメンションが含まれていることを確認してください。また、日付範囲が3か月を超えていないこともご確認ください。
課金利用状況APIにアクセスできないAPIキーにbilling:usage:viewスコープが含まれていることを確認してください。スコープに問題がない場合、アカウントがレガシーセットアップで使用されている可能性があります。レガシーアカウントには構造上の制限があり、リクエストに応じて有効化することができません。お使いのアカウントがレガシーセットアップであるかどうかご不明な場合は、アカウントマネージャーにお問い合わせください。



関連ページ

課金データリファレンス
コストフィールド、請求カテゴリー、チャネル別のトラフィックの種類、および利用可能なすべての集計ディメンションを検索します。

財務レポート
Webインターフェース上でスケジュール設定やエクスポート機能を利用すると、同じ課金データが確認できます。

メトリクスAPI
すべてのチャネルでの配信やエンゲージメントの状況の分析に使用できる、集計されたパフォーマンス関連メトリクスを照会できます。