Microsoft Graph 従量制課金 API を利用する方法
Utilize the Microsoft Graph Metered API
Microsoft Graph API の多くは無償で利用できますが、一部のエンドポイントに関しては有償扱いのものがあります。
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 の公式ドキュメントを参照してください。
例えば、GET /users/{user-id}/chats/getAllMessages
で特定のユーザーのチャットを全取得する場合は、$0.00075 per message
なので 1000 メッセージあたり $0.75 USD が課金されるということになります。
実際に Microsoft Graph 従量制課金 API がどれだけ利用されたか (課金発生したか) に関しては、Microsoft Azure ポータルの Cost Management + Billing の画面から参照が可能です。
Microsoft Graph 従量制課金 API の利用方法
Microsoft Graph 従量制課金 API は、Azure サブスクリプションと紐づけたサービスプリンシパルを通して利用することになります。
そのため、利用を始めるにあたっては、以下の流れで作業を行うことになります。
- Microsoft Entra ID サービスプリンシパルの発行
- サービスプリンシパルへの Microsoft Graph アクセス許可の設定
- Microsoft Azure サブスクリプションの発行
- 発行した Microsoft Azure サブスクリプション配下にリソースグループを作成
- サービスプリンシパルと Microsoft Azure サブスクリプションの紐付け
- Microsoft Graph 従量制課金 API エンドポイントの利用
サービスプリンシパルの発行や Microsoft Graph アクセス許可の設定、Microsoft Azure サブスクリプションの発行手順については、本題ではないためここでは触れません。
検索すれば公式ドキュメントや個人ブログの記事がたくさん出てくるので、そちらを参照してください。
発行した Microsoft Azure サブスクリプション配下にリソースグループを作成
Microsoft Graph 従量制課金 API を利用するためには、リソースグループ配下に Microsoft Graph 従量制課金 API 用のリソースを作成する形になります。
そのため、事前にリソースグループを作成しておきます。
サービスプリンシパルと Microsoft Azure サブスクリプションの紐付け
サービスプリンシパルを特定の Microsoft Azure サブスクリプションに紐づけるには、Azure CLI か Azure CloudShell を利用すれば良いです。
公式ドキュメントにコマンドが書いてあるので、その通りに実行すれば終わりです。
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 を参照です。
参考情報
- Metered APIs and services in Microsoft Graph (Microsoft Learn)
- Enable metered APIs and services in Microsoft Graph (Microsoft Learn)
- Metered APIs and services in Microsoft Graph FAQ (Microsoft Learn)
- Payment models and licensing requirements for Microsoft Teams APIs (Microsoft Learn)
- Export content with the Microsoft Teams Export APIs (Microsoft Learn)
- Service Prioritization in SharePoint (Microsoft Learn)
Discussion