アクティブユーザー分析を取得する
curl --request GET \
--url https://server.codeium.com/api/v2alpha/analytics/active-users \
--header 'Authorization: Bearer <token>'import requests
url = "https://server.codeium.com/api/v2alpha/analytics/active-users"
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/active-users', 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/active-users",
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/active-users"
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/active-users")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.codeium.com/api/v2alpha/analytics/active-users")
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": [
{
"active_users": 142
}
],
"pagination": {
"next_page_cursor": null
},
"metadata": {
"data_freshness": "2026-01-16T03:00:00.000Z",
"query_time_ms": 612,
"team_id": "team_abc123"
}
}アナリティクス API
アクティブユーザー数を取得
時間粒度やユーザーごとのグループ化を任意で指定して、チーム内の重複を除いたアクティブユーザー数をクエリします。
GET
/
api
/
v2alpha
/
analytics
/
active-users
アクティブユーザー分析を取得する
curl --request GET \
--url https://server.codeium.com/api/v2alpha/analytics/active-users \
--header 'Authorization: Bearer <token>'import requests
url = "https://server.codeium.com/api/v2alpha/analytics/active-users"
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/active-users', 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/active-users",
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/active-users"
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/active-users")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.codeium.com/api/v2alpha/analytics/active-users")
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": [
{
"active_users": 142
}
],
"pagination": {
"next_page_cursor": null
},
"metadata": {
"data_freshness": "2026-01-16T03:00:00.000Z",
"query_time_ms": 612,
"team_id": "team_abc123"
}
}これは、リクエストボディで サービスキー を使用する v1 Analytics API とは異なり、Bearer トークン認証とクエリパラメータを使用する v2 エンドポイントです。詳しくは以下の認証を参照してください。
このエンドポイントは、リアルタイムでの使用量監視を目的としたものではありません。データは1時間単位で集計され、
レート制限も厳しく設定されています (チームごとに1時間あたり10リクエスト) 。定期的なレポートや一括エクスポートに利用してください。
認証
Authorization ヘッダーにトークンを含めてください。
Authorization: Bearer <your_token>
アクティブユーザーと見なされる条件
active_users
フィールドには、重複のないユーザー数が記録されます。
アクティブユーザー数には、Devin CLI と Devin Desktop の両方の使用量が含まれます。いずれか一方
(または両方) でアクティブなユーザーはカウントされ、時間バケットごとに1回だけ計上されます。
グループ化と時間粒度
granularity と group_by を利用します。
- 時間粒度やグループ化の指定なし — 指定した日付範囲全体におけるアクティブユーザーの合計数を 1 行で返します
granularity=daily— 各行にYYYY-MM-DD形式のtimestampが含まれます (デイリーアクティブユーザー)granularity=monthly— 各行にYYYY-MM形式のtimestampが含まれます (マンスリーアクティブユーザー)group_by=user— アクティブユーザーごとに 1 行ずつ返し、各行にuser_idが含まれます。各行のactive_usersは1です
消費量を取得 とは異なり、アクティブユーザー エンドポイントでは
group_by に指定できるのは user のみです。その他のディメンション (model_uid、ide、os) はここでは無効です。ページネーション
pagination オブジェクトに next_page_cursor が含まれます。これを page_cursor クエリ
パラメータとして渡すと、次のページを取得できます。
ページカーソルは 24 時間で期限切れになります。後続のページリクエストは、レート制限上の新たなクエリとしてカウントされません。
キャッシュ
ETag ヘッダーが含まれます。不要なデータ転送を避けるには、前回の ETag の値を
If-None-Match ヘッダーに含めてください。データが変更されていない場合、サーバーは 304 Not Modified を返します。
レート制限
Retry-After ヘッダーとともに 429 Too Many Requests を返します。
以前のクエリのページネーション (next_page_cursor をたどる場合) は、この制限にカウントされません —
対象となるのは、各レポートの初回クエリのみです。制限が低く設定されているのは、このエンドポイントが
リアルタイムの使用量監視ではなく、定期的なレポート作成を目的としているためです。承認
ヘッダー
前回のレスポンスの ETag 値。データが変更されていない場合、server は 304 Not Modified を返します。
クエリパラメータ
日付範囲の開始日(この日を含む)。形式は YYYY-MM-DD です。
日付範囲の終了日(この日を含む)。形式は YYYY-MM-DD です。範囲は 90 日を超えてはいけません。
アクティブユーザーをクエリする対象の product。
利用可能なオプション:
agent 結果をグループ化する時間粒度。指定した場合、各行に timestamp フィールドが含まれます。
省略した場合、アクティブユーザー数は日付範囲全体で集計されます。
利用可能なオプション:
daily, monthly 結果をグループ化するディメンション。アクティブユーザー endpoint でサポートされているのは user のみで、この場合は
アクティブユーザーごとに 1 行(各行の active_users = 1)が返されます。
利用可能なオプション:
user 結果の絞り込みに使用する model UID のカンマ区切りリスト。
結果を特定の group に属するユーザーに絞り込みます。サービスキーにはこの group へのアクセス権が必要です。
結果を特定のユーザー(auth UID)に絞り込みます。
1 ページあたりに返される行数の上限。
必須範囲:
1 <= x <= 10000次のページを取得するための、前回のレスポンスの pagination.next_page_cursor に含まれる不透明なカーソル。

