エージェントの出力分析(コード行数)を取得
curl --request GET \
--url https://server.codeium.com/api/v2alpha/analytics/output \
--header 'Authorization: Bearer <token>'import requests
url = "https://server.codeium.com/api/v2alpha/analytics/output"
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/output', 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/output",
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/output"
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/output")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.codeium.com/api/v2alpha/analytics/output")
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": [
{
"timestamp": "2026-06-15T00:00:00.000Z",
"source": "CASCADE_CLIENT",
"loc_inserted": 18420,
"loc_deleted": 3105
},
{
"timestamp": "2026-06-15T00:00:00.000Z",
"source": "CHISEL",
"loc_inserted": 92310,
"loc_deleted": 11874
}
],
"pagination": {
"next_page_cursor": null
},
"metadata": {
"data_freshness": "2026-06-16T03:00:00.000Z",
"query_time_ms": 1311,
"team_id": "team_abc123"
}
}
Analytics API
エージェントの出力を取得(コード行数)
Devin Desktop および Devin CLI で、エージェントが挿入・削除し、チームが採用したコード行数をクエリします。フィルタリング、グループ化、ページネーションに対応しています。
GET
/
api
/
v2alpha
/
analytics
/
output
エージェントの出力分析(コード行数)を取得
curl --request GET \
--url https://server.codeium.com/api/v2alpha/analytics/output \
--header 'Authorization: Bearer <token>'import requests
url = "https://server.codeium.com/api/v2alpha/analytics/output"
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/output', 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/output",
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/output"
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/output")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.codeium.com/api/v2alpha/analytics/output")
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": [
{
"timestamp": "2026-06-15T00:00:00.000Z",
"source": "CASCADE_CLIENT",
"loc_inserted": 18420,
"loc_deleted": 3105
},
{
"timestamp": "2026-06-15T00:00:00.000Z",
"source": "CHISEL",
"loc_inserted": 92310,
"loc_deleted": 11874
}
],
"pagination": {
"next_page_cursor": null
},
"metadata": {
"data_freshness": "2026-06-16T03:00:00.000Z",
"query_time_ms": 1311,
"team_id": "team_abc123"
}
}
これは v2 エンドポイント です。リクエストボディでサービスキーを渡す v1 Analytics API とは異なり、Bearer トークン認証とクエリパラメーターを使用します。詳しくは下記の認証を参照してください。
このエンドポイントは、リアルタイムでの使用量監視を目的としたものではありません。データは1時間単位で集計され、
レート制限も厳しく設定されています (Team ごとに1時間あたり10リクエスト) 。定期的なレポート作成や一括エクスポートに利用してください。
認証
このエンドポイントでは Bearer トークン 認証を利用します。Authorization ヘッダーにトークンを含めてください。
Authorization: Bearer <your_token>
メトリクス
metric クエリパラメーターは必須で、返すメトリクスをカンマ区切りのリストで指定します。
リクエストした各メトリクスは、すべての行に整数フィールドとして含まれます。
| メトリクス | 説明 |
|---|---|
loc_inserted | エージェントが挿入し、ユーザーが採用した行数 |
loc_deleted | エージェントが削除し、ユーザーが採用した行数 |
?metric=loc_inserted,loc_deleted は両方を返し、?metric=loc_inserted は
loc_inserted のみを返します。metric を指定しないリクエスト、または不明なメトリクスを指定したリクエストは 400 エラーになります。
行数は、Devin Desktop または
Devin CLI でユーザーがエージェントの編集を採用した時点でカウントされます (モデルの種類は問いません) 。product パラメータも必須で、現在指定できる値は
agent のみです。
グループ化と時間粒度
granularity と group_by を利用して、返されるデータの構造を制御します。
- 時間粒度もグループ化も指定しない場合 — 期間全体を集計した 1 行を返します
granularity=daily— 各行にYYYY-MM-DD形式のtimestampが含まれますgranularity=monthly— 各行にYYYY-MM形式のtimestampが含まれますgroup_by=user— 各行にuser_idとuser_emailが含まれますgroup_by=session— 各行にsession_id(その行が採用された Devin Desktop の会話または CLI セッション) が含まれます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=source— 各行にsourceが含まれます。Devin Desktop で採用された行はCASCADE_CLIENT、Devin CLI (他のエディタ内でエージェントとして動作する CLI を含む) で採用された行はCHISELになります
group_by=user,source,model_uid) 。Get Consumption と同じ models、
group_id、user_id のフィルターも
適用されます。
ページネーション
結果はページ分割して返され、デフォルトのページサイズは 1,000 行 (最大 10,000 行) です。取得できる結果がさらにある場合は、 レスポンスのpagination オブジェクトに next_page_cursor が含まれます。次のページを取得するには、この値を page_cursor クエリ
パラメーターとして渡し、元のリクエストと同じ metric リストを指定してください。カーソルは、発行元の
エンドポイントとメトリクスに紐付けられています。/consumption から発行されたカーソルや、別の
metric リストに対して発行されたカーソルを使用すると、400 エラーで拒否されます。
ページカーソルの有効期限は 24 時間です。後続ページのリクエストは新しいクエリとして扱われず、レート制限にはカウントされません。
レート制限
このエンドポイントには、Team ごとに 1 時間あたり 10 リクエスト のレート制限があります。この制限を超えると、 サーバーはRetry-After ヘッダー付きで 429 Too Many Requests を返します。
以前のクエリのページネーション (next_page_cursor を使った後続ページの取得) は、この制限にカウントされません。
カウントされるのは、各レポートの最初のクエリのみです。制限値が低く設定されているのは、このエンドポイントが
リアルタイムの使用量監視ではなく、定期的なレポート作成を目的としているためです。承認
クエリパラメータ
返す出力メトリクスをカンマ区切りで指定します。各メトリクスは、各行にフィールドとして含まれます。対応するメトリクス:
loc_inserted— エージェントによる行の挿入をユーザーが採用した行数loc_deleted— エージェントによる行の削除をユーザーが採用した行数
日付範囲の開始日(当日を含む)。YYYY-MM-DD 形式で指定します。
日付範囲の終了日(当日を含む)。YYYY-MM-DD 形式で指定します。範囲は90日以内にする必要があります。
出力をクエリする対象の製品。
利用可能なオプション:
agent 結果をグループ化する際の時間粒度です。指定すると、各行に timestamp フィールドが含まれます。
省略すると、指定した日付範囲全体で結果が集計されます。
利用可能なオプション:
daily, monthly 結果をグループ化するディメンションをカンマ区切りで指定します。対応するディメンション:
user— 各行にuser_idとuser_emailが含まれますsession— 各行にsession_idが含まれますmodel_uid— 各行にmodel_uidが含まれますide— 各行にideが含まれますide_version— 各行にide_versionが含まれます。ideも指定する必要がありますos— 各行にosが含まれますsource— 各行にsourceが含まれます(Devin Desktop はCASCADE_CLIENT、Devin CLI はCHISEL)
結果の絞り込みに使用するモデルUIDのカンマ区切りリスト。
特定のグループに属するユーザーに結果を絞り込みます。サービスキーには、このグループへのアクセス権が必要です。Devin サービスユーザーのAPIキーでは利用できません。
特定のユーザー(認証UID)に結果を絞り込みます。
1ページあたりに返す行数の上限。
必須範囲:
1 <= x <= 10000次のページを取得するための不透明なカーソルです。前のレスポンスの pagination.next_page_cursor の値を指定します。カーソルを発行したリクエストと同じ metric リストを渡してください。他のエンドポイントや異なる metric リストに対して発行されたカーソルは拒否されます。

