💻

Microsoft Graph 従量制課金 API を利用する方法

に公開

Utilize the Microsoft Graph Metered API

Microsoft Graph API の多くは無償で利用できますが、一部のエンドポイントに関しては有償扱いのものがあります。

https://learn.microsoft.com/ja-jp/graph/metered-api-list

2025/07 時点では、下記の内容に関する Microsoft Graph API エンドポイントは Azure サブスクリプションに紐づく従量課金にて実行を行う必要があります。

  • Microsoft Teams
    • Teams Export APIs / Teams meeting APIs
  • OneDrive for Business
    • 秘密度ラベルの割り当て
  • SharePoint Online
    • 秘密度ラベルの割り当て
    • SharePoint アプリ/サービスの優先順位付け (ロールアウト中)

Teams に関しては、Teams 会議の録画/トランスクリプト取得、チャット/チャネル/Teamsアプリ上のメッセージ全取得といったものが挙げられますが、企業として利用する時は基本、従量課金で利用することを想定した方が良いです。
※最近は生成 AI との兼ね合いで、組織内の数多の会議録画データやトランスクリプトを取得したいニーズが増えていると思います。そういった要件では Microsoft Graph 従量制課金 API の利用を想定し、課金が発生する前提でシステム設計をすることになると思います。

従量課金の仕組み

Microsoft Graph 従量制課金 API の利用料は、Azure サブスクリプションを通じて請求/支払いすることになります。そのため、Microsoft Graph 従量制課金 API は、Azure サブスクリプションがないと利用ができません。

Microsoft Graph 従量制課金 API の課金形態については、Microsoft の公式ドキュメントを参照してください。

https://learn.microsoft.com/en-us/graph/metered-api-list

https://learn.microsoft.com/en-us/graph/teams-licenses#modela-requirements

例えば、GET /users/{user-id}/chats/getAllMessages で特定のユーザーのチャットを全取得する場合は、$0.00075 per message なので 1000 メッセージあたり $0.75 USD が課金されるということになります。

実際に Microsoft Graph 従量制課金 API がどれだけ利用されたか (課金発生したか) に関しては、Microsoft Azure ポータルの Cost Management + Billing の画面から参照が可能です。

https://learn.microsoft.com/ja-jp/graph/teams-licenses#view-the-costs-billed-for-the-metered-microsoft-teams-apis

Microsoft Graph 従量制課金 API の利用方法

Microsoft Graph 従量制課金 API は、Azure サブスクリプションと紐づけたサービスプリンシパルを通して利用することになります。
そのため、利用を始めるにあたっては、以下の流れで作業を行うことになります。

  1. Microsoft Entra ID サービスプリンシパルの発行
  2. サービスプリンシパルへの Microsoft Graph アクセス許可の設定
  3. Microsoft Azure サブスクリプションの発行
  4. 発行した Microsoft Azure サブスクリプション配下にリソースグループを作成
  5. サービスプリンシパルと Microsoft Azure サブスクリプションの紐付け
  6. Microsoft Graph 従量制課金 API エンドポイントの利用

サービスプリンシパルの発行や Microsoft Graph アクセス許可の設定、Microsoft Azure サブスクリプションの発行手順については、本題ではないためここでは触れません。
検索すれば公式ドキュメントや個人ブログの記事がたくさん出てくるので、そちらを参照してください。

発行した Microsoft Azure サブスクリプション配下にリソースグループを作成

Microsoft Graph 従量制課金 API を利用するためには、リソースグループ配下に Microsoft Graph 従量制課金 API 用のリソースを作成する形になります。
そのため、事前にリソースグループを作成しておきます。

サービスプリンシパルと Microsoft Azure サブスクリプションの紐付け

サービスプリンシパルを特定の Microsoft Azure サブスクリプションに紐づけるには、Azure CLI か Azure CloudShell を利用すれば良いです。
公式ドキュメントにコマンドが書いてあるので、その通りに実行すれば終わりです。

https://learn.microsoft.com/ja-jp/graph/metered-api-setup#enable-an-application

az graph-services account create --resource-group {リソースグループ名} --resource-name {従量制課金 API に紐づくサービスの名前} --subscription {サブスクリプション ID} --location global --app-id {サービスプリンシパルのクライアント ID}

上記を実行した後は、紐づけたサービスプリンシパル経由で Microsoft Graph 従量制課金 API のエンドポイントアクセスを実行する度、Microsoft Azure サブスクリプションに課金されるようになります。
課金がされる代わりに、シード容量に定められた制限量に関係なくデータの取得などができるようになるという形です。

Microsoft Graph 従量制課金 API エンドポイントの利用

ここは通常の Microsoft Graph API エンドポイントの利用と同じようにするだけで OK です。
ただし、Teams Export API を利用する場合は、model パラメータを渡す必要がある場合などもあるので、詳細は FAQ を参照です。

https://learn.microsoft.com/ja-jp/graph/metered-api-faq#are-there-more-requirements-beyond-setting-up-billing-to-call-microsoft-teams-export-apis

参考情報

Discussion