エージェントのツール呼び出し分析を取得
curl --request GET \
--url https://server.codeium.com/api/v2alpha/analytics/tools \
--header 'Authorization: Bearer <token>'import requests
url = "https://server.codeium.com/api/v2alpha/analytics/tools"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://server.codeium.com/api/v2alpha/analytics/tools', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://server.codeium.com/api/v2alpha/analytics/tools",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://server.codeium.com/api/v2alpha/analytics/tools"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://server.codeium.com/api/v2alpha/analytics/tools")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.codeium.com/api/v2alpha/analytics/tools")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"user_id": "user_abc123",
"user_email": "alice@example.com",
"tool": "RUN_COMMAND",
"calls": 1842
},
{
"user_id": "user_abc123",
"user_email": "alice@example.com",
"tool": "SEARCH_WEB",
"calls": 57
}
],
"pagination": {
"next_page_cursor": null
},
"metadata": {
"data_freshness": "2026-10-20T02:00:00.000Z",
"query_time_ms": 1104,
"team_id": "team_abc123"
}
}Analytics API
Devin agent のツール呼び出しを取得する
Devin Desktop および Devin CLI でチームが行ったエージェントのツール呼び出し(ウェブ検索やコマンド実行など)の回数を、ツール、ユーザー、モデル、IDE、OS 別に集計します。
GET
/
api
/
v2alpha
/
analytics
/
tools
エージェントのツール呼び出し分析を取得
curl --request GET \
--url https://server.codeium.com/api/v2alpha/analytics/tools \
--header 'Authorization: Bearer <token>'import requests
url = "https://server.codeium.com/api/v2alpha/analytics/tools"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://server.codeium.com/api/v2alpha/analytics/tools', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://server.codeium.com/api/v2alpha/analytics/tools",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://server.codeium.com/api/v2alpha/analytics/tools"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://server.codeium.com/api/v2alpha/analytics/tools")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.codeium.com/api/v2alpha/analytics/tools")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"user_id": "user_abc123",
"user_email": "alice@example.com",
"tool": "RUN_COMMAND",
"calls": 1842
},
{
"user_id": "user_abc123",
"user_email": "alice@example.com",
"tool": "SEARCH_WEB",
"calls": 57
}
],
"pagination": {
"next_page_cursor": null
},
"metadata": {
"data_freshness": "2026-10-20T02:00:00.000Z",
"query_time_ms": 1104,
"team_id": "team_abc123"
}
}これは v2 エンドポイントです。リクエストボディでサービスキーを渡す v1 の分析 API とは異なり、Bearer トークン認証とクエリパラメーターを利用します。詳しくは下記の認証を参照してください。
このエンドポイントはリアルタイムの使用量監視を目的としたものではありません。レート制限は低く設定されています
(チームごとに 1 時間あたり 10 リクエスト) 。定期的なレポート作成や一括エクスポートに利用してください。
認証
このエンドポイントでは Bearer トークン 認証を利用します。Authorization ヘッダーにあなたのトークンを含めてください:
Authorization: Bearer <your_token>
cascade_tool_usage
データソースとは異なり、このエンドポイントではDevinサービスユーザーのAPIキーを使用できます。そのため、Cognition プラットフォーム上のチームは
Windsurf のサービスキーがなくてもツール使用状況を取得できます。
メトリクス
metric クエリパラメーターは必須で、現在は calls(エージェントが実行したツール呼び出しの回数)のみ指定できます。
この値は、各行に整数型の calls フィールドとして含まれます。metric を指定しないリクエスト、または
他のメトリクスを指定したリクエストは 400 エラーで失敗します。
ツール呼び出しは、モデルを問わず、エージェントが Devin Desktop
または Devin CLI(他のエディター内でエージェントとして動作する CLI を含む)でツールを呼び出した時点でカウントされます。
product パラメーターも必須で、現在は agent のみ指定できます。
ツール
tool でグループ化すると、呼び出しをツールのカテゴリ別に集計できます。この場合、各行には次のいずれかの値を持つ tool フィールドが含まれます。
| ツール | 説明 |
|---|---|
SEARCH_WEB | ウェブ検索、ウェブフェッチ、ブラウザの利用 |
RUN_COMMAND | シェルコマンドの実行と、実行中のプロセスとのやり取り |
VIEW_FILE | ファイルおよびノートブックの読み取り |
CODE_ACTION | ファイルの編集、書き込み、パッチ適用 |
GREP_SEARCH | ファイル内容およびコードの検索 |
FIND | ファイル名によるファイルの検索 |
LIST_DIRECTORY | ディレクトリの一覧表示 |
MCP_TOOL | MCPサーバーのツールの呼び出し、およびMCPサーバー、ツール、リソースの一覧表示 |
SKILL | スキルの一覧表示、検索、呼び出し |
ASK_USER_QUESTION | ユーザーへの質問 |
MEMORY | メモリーの読み取りと書き込み |
PROPOSE_CODE | コードの変更の提案 |
PROXY_WEB_SERVER | ローカルウェブサーバーのブラウザプレビュー |
DEPLOY_WEB_APP | ウェブアプリのデプロイ |
MQUERY | コードベース検索 (Riptide) |
DEEPWIKI | DeepWiki へのリクエスト |
CODEMAP_GENERATION、CODEMAP_SUGGESTIONS | Codemaps へのリクエスト |
OTHER | 上記のいずれのカテゴリにも該当しない Devin CLI のツール |
LIST_DIRECTORY、MEMORY、PROPOSE_CODE、
PROXY_WEB_SERVER、DEPLOY_WEB_APP、MQUERY は Devin Desktop のエージェントでのみ記録されます。また、
カテゴリがまだ割り当てられていない新しい Devin CLI のツールは OTHER として集計されます。
グループ化と時間粒度
granularity と group_by を利用して、返されるデータの構造を制御します。
- 時間粒度もグループ化も指定しない場合 — 日付範囲全体を集計した 1 行を返します
granularity=daily— 各行にYYYY-MM-DD形式のtimestampが含まれますgranularity=monthly— 各行にYYYY-MM形式のtimestampが含まれますgroup_by=tool— 各行にtoolが含まれます (上記の ツール を参照)group_by=user— 各行にuser_idが含まれます。そのユーザーのuser_emailが記録されている場合は、それも含まれますgroup_by=model_uid— 各行にmodel_uidが含まれますgroup_by=ide— 各行にideが含まれますgroup_by=ide,ide_version— 各行にideとide_versionが含まれます (ide_versionでグループ化する場合は、ideも指定する必要があります)group_by=os— 各行にosが含まれます (例:darwin(macOS) 、windows、linux)
group_by=user,tool では、各ユーザーが各
ツールを呼び出した回数を集計できます。Get Output の session および source ディメンションは
ここではサポートされていません。
Get Consumption と同じ models、group_id、user_id フィルターを利用できるほか、カウント対象を 1 つのツールカテゴリに絞り込む tool フィルターも指定できます (例:tool=SEARCH_WEB) 。tool を
受け付けるのはこのエンドポイントのみです。他の Analytics API v2 エンドポイントに指定すると、400 エラーで失敗します。
例
ユーザーごとのウェブ検索回数を1週間分集計します:curl "https://server.codeium.com/api/v2alpha/analytics/tools?metric=calls&product=agent&start_date=2026-10-13&end_date=2026-10-19&group_by=user&tool=SEARCH_WEB" \
-H "Authorization: Bearer $DEVIN_API_KEY"
SEARCH_WEB の件数を表します。ユーザーごとにすべてのカテゴリを表示したい場合は、tool フィルターを外し、代わりに group_by=user,tool を追加してください。
ページネーション
結果はページ分割され、デフォルトのページサイズは 1,000 行(最大 10,000 行)です。さらに結果がある場合は、 レスポンスのpagination オブジェクトに next_page_cursor が含まれます。元のクエリパラメーターはそのままにして、この値を page_cursor クエリ
パラメーターとして追加したリクエストを送信してください。カーソルは発行元のエンドポイントに紐付けられているため、/consumption や /output から取得したカーソルは
400 で拒否されます。
ページカーソルの有効期限は 24 時間です。後続ページのリクエストは、レート制限上の新しいクエリとしてはカウントされません。
レート制限
このエンドポイントのレート制限は、Team ごとに 1 時間あたり 10 リクエスト です。この制限を超えると、 サーバーはRetry-After ヘッダー付きで 429 Too Many Requests を返します。
以前のクエリのページング (next_page_cursor をたどる操作) は、この制限にカウントされません。
カウントされるのは、各レポートの最初のクエリのみです。制限値が低めに設定されているのは、このエンドポイントが
リアルタイムの使用量監視ではなく、定期的なレポート作成向けであるためです。承認
クエリパラメータ
返すメトリクス。各行にフィールドとして含まれます。サポートされるメトリクス:
calls— エージェントが行ったツール呼び出し数
日付範囲の開始日(当日を含む)。YYYY-MM-DD 形式。
日付範囲の終了日(当日を含む)。YYYY-MM-DD 形式。範囲は90日以内である必要があります。
ツール呼び出しをクエリする対象の製品。
利用可能なオプション:
agent 結果をグループ化する際の時間粒度。指定すると、各行に timestamp フィールドが含まれます。
省略すると、日付範囲全体で結果が集計されます。
利用可能なオプション:
daily, monthly 結果のグループ化に利用するディメンションのカンマ区切りリスト。対応するディメンション:
tool— 各行にtool(SEARCH_WEBやRUN_COMMANDなどのツールカテゴリ)を含めますuser— 各行にuser_idを含めます。ユーザーのuser_emailが記録されている場合は、それも含めますmodel_uid— 各行にmodel_uidを含めますide— 各行にideを含めますide_version— 各行にide_versionを含めます。ideも含める必要がありますos— 各行にosを含めます
結果の絞り込みに利用するモデルUIDのカンマ区切りリスト。
集計対象をSEARCH_WEBやRUN_COMMANDなどの単一のツールカテゴリに限定します(完全一致)。
このエンドポイントでのみ指定できます。
結果を特定のグループに属するユーザーに絞り込みます。サービスキーには、このグループへのアクセス権が必要です。DevinサービスユーザーのAPIキーでは利用できません。
結果を特定のユーザー(認証UID)に絞り込みます。
1ページあたりに返す最大行数。
必須範囲:
1 <= x <= 10000次のページを取得するための不透明なカーソル。前の応答のpagination.next_page_cursorから取得します。カーソルを発行したリクエストと同じmetricを渡してください。他のエンドポイントで発行されたカーソルは拒否されます。

