AI Code Tracking API
AI Code Tracking API を使用すると、コミットごとの AI 利用状況や、受け入れられた AI 生成コードの詳細な変更を含め、チームのリポジトリ全体で AI 生成コードの変更を追跡できます。
- AI Code Tracking API では、Admin API と同様に、API キーをユーザー名として ベーシック認証を使用します。
- API キーの作成、認証方法、レート制限、ベストプラクティスの詳細については、API Overviewを参照してください。
- 利用可能状況: エンタープライズ限定。アクセスするには、営業にお問い合わせください
- ステータス: Alpha (レスポンスの構造とフィールドは変更される可能性があります)
- ワークスペースの制限: メトリクスは、ワークスペースのルート直下にある git リポジトリに対してのみ計算されます。複数ルートのワークスペースは現在サポートされていません。
エンドポイント
AI コミットメトリクスを取得 (JSON、ページネーション対応)
/analytics/ai-code/commitsTAB、COMPOSER、非 AI による行を分類した、コミットごとの集計メトリクスを取得します。
パラメータ
startDate string | date
endDate string | date
page number
pageSize number
user string
レスポンスフィールド
| フィールド | 型 | 説明 | ||
|---|---|---|---|---|
commitHash | string | Git コミットハッシュ | ||
userId | string | エンコード済みユーザー ID (例: user_abc123) | ||
userEmail | string | ユーザーのメールアドレス | ||
repoName | string | null | リポジトリ名 | |
branchName | string | null | ブランチ名 | |
isPrimaryBranch | boolean | null | プライマリブランチかどうか | |
commitSource | "ide" | "cli" | "cloud" | コミットの発生元 |
totalLinesAdded | number | コミットで追加された合計行数 | ||
totalLinesDeleted | number | コミットで削除された合計行数 | ||
tabLinesAdded | number | TAB 補完で追加された行 | ||
tabLinesDeleted | number | TAB 補完で削除された行 | ||
composerLinesAdded | number | Composer で追加された行 | ||
composerLinesDeleted | number | Composer で削除された行 | ||
nonAiLinesAdded | number | null | 非 AI によって追加された行 | |
nonAiLinesDeleted | number | null | 非 AI によって削除された行 | |
message | string | null | コミットメッセージ | |
commitTs | string | null | コミットのタイムスタンプ (ISO 形式) | |
createdAt | string | 取り込みタイムスタンプ (ISO 形式) |
curl -X GET "https://api.cursor.com/analytics/ai-code/commits?startDate=7d&endDate=now&page=1&pageSize=100" \ -u YOUR_API_KEY:レスポンス:
{ "items": [ { "commitHash": "a1b2c3d4", "userId": "user_3k9x8q...", "userEmail": "[email protected]", "repoName": "company/repo", "branchName": "main", "isPrimaryBranch": true, "commitSource": "ide", "totalLinesAdded": 120, "totalLinesDeleted": 30, "tabLinesAdded": 50, "tabLinesDeleted": 10, "composerLinesAdded": 40, "composerLinesDeleted": 5, "nonAiLinesAdded": 30, "nonAiLinesDeleted": 15, "message": "Refactor: extract analytics client", "commitTs": "2025-07-30T14:12:03.000Z", "createdAt": "2025-07-30T14:12:30.000Z" } ], "totalCount": 42, "page": 1, "pageSize": 100}AI コミットメトリクスをダウンロード (CSV、ストリーミング)
/analytics/ai-code/commits.csv大量のデータを抽出するため、コミットメトリクスデータを CSV 形式でダウンロードします。
パラメータ
startDate string | date
endDate string | date
user string
レスポンスヘッダー
- Content-Type: text/csv; charset=utf-8
CSV 列
| 列 | 型 | 説明 |
|---|---|---|
commit_hash | string | Git コミットハッシュ |
user_id | string | エンコード済みユーザー ID |
user_email | string | ユーザーのメールアドレス |
repo_name | string | リポジトリ名 |
branch_name | string | ブランチ名 |
is_primary_branch | boolean | プライマリブランチかどうか |
commit_source | string | コミットの作成元 (ide、cli、または cloud) |
total_lines_added | number | コミットで追加された合計行数 |
total_lines_deleted | number | コミットで削除された合計行数 |
tab_lines_added | number | Tab 補完で追加された行 |
tab_lines_deleted | number | Tab 補完で削除された行 |
composer_lines_added | number | Composer で追加された行 |
composer_lines_deleted | number | Composer で削除された行 |
non_ai_lines_added | number | AI を使用せずに追加された行 |
non_ai_lines_deleted | number | AI を使用せずに削除された行 |
message | string | コミットメッセージ |
commit_ts | string | コミットのタイムスタンプ (ISO 形式) |
created_at | string | 取り込みタイムスタンプ (ISO 形式) |
curl -L "https://api.cursor.com/analytics/ai-code/commits.csv?startDate=2025-07-01T00:00:00Z&endDate=now&user=user_3k9x8q..." \ -u YOUR_API_KEY: \ -o commits.csvCSV 出力の例:
commit_hash,commit_source,user_id,user_email,repo_name,branch_name,is_primary_branch,total_lines_added,total_lines_deleted,tab_lines_added,tab_lines_deleted,composer_lines_added,composer_lines_deleted,non_ai_lines_added,non_ai_lines_deleted,message,commit_ts,created_ata1b2c3d4,ide,user_3k9x8q...,[email protected],company/repo,main,true,120,30,50,10,40,5,30,15,"Refactor: extract analytics client",2025-07-30T14:12:03.000Z,2025-07-30T14:12:30.000Ze5f6g7h8,cloud,user_3k9x8q...,[email protected],company/repo,feature-branch,false,85,15,30,5,25,3,30,7,"Add error handling",2025-07-30T13:45:21.000Z,2025-07-30T13:45:45.000ZAI コード変更メトリクスを取得 (JSON、ページネーション対応)
/analytics/ai-code/changes決定論的な changeId ごとにグループ化された、受け入れられた AI 生成コードの詳細な変更を取得します。コミットとは独立して、受け入れられた AI イベントを分析する際に役立ちます。
パラメータ
startDate string | date
endDate string | date
page number
pageSize number
user string
レスポンスフィールド
| フィールド | 型 | 説明 |
|---|---|---|
changeId | string | 変更の決定論的な ID |
userId | string | エンコード済みユーザー ID (例: user_abc123) |
userEmail | string | ユーザーのメールアドレス |
source | "TAB" | "COMPOSER" |
model | string | null |
totalLinesAdded | number | 追加された合計行数 |
totalLinesDeleted | number | 削除された合計行数 |
createdAt | string | 取り込みタイムスタンプ (ISO 形式) |
metadata | Array | ファイルメタデータ (プライバシーモードでは fileName が省略される場合があります) |
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?startDate=14d&endDate=now&page=1&pageSize=200" \ -u YOUR_API_KEY:レスポンス:
{ "items": [ { "changeId": "749356201", "userId": "user_3k9x8q...", "userEmail": "[email protected]", "source": "COMPOSER", "model": null, "totalLinesAdded": 18, "totalLinesDeleted": 4, "createdAt": "2025-07-30T15:10:12.000Z", "metadata": [ { "fileName": "src/analytics/report.ts", "fileExtension": "ts", "linesAdded": 12, "linesDeleted": 3 }, { "fileName": "src/analytics/ui.tsx", "fileExtension": "tsx", "linesAdded": 6, "linesDeleted": 1 } ] } ], "totalCount": 128, "page": 1, "pageSize": 200}AI コード変更メトリクス をダウンロード (CSV、ストリーミング)
/analytics/ai-code/changes.csv大規模なデータ抽出用に、変更メトリクスデータを CSV 形式でダウンロードします。
パラメータ
startDate string | date
endDate string | date
user string
レスポンスヘッダー
- Content-Type: text/csv; charset=utf-8
CSV 列
| 列 | 型 | 説明 |
|---|---|---|
change_id | string | 変更の決定論的な ID |
user_id | string | エンコード済みユーザー ID |
user_email | string | ユーザーのメールアドレス |
source | string | AI による変更の発生元 (TAB または COMPOSER) |
model | string | 使用された AI モデル |
total_lines_added | number | 追加された合計行数 |
total_lines_deleted | number | 削除された合計行数 |
created_at | string | 取り込みタイムスタンプ (ISO 形式) |
metadata_json | string | メタデータエントリの配列を JSON 文字列化した値 |
curl -L "https://api.cursor.com/analytics/ai-code/changes.csv?startDate=30d&endDate=now" \ -u YOUR_API_KEY: \ -o changes.csvCSV 出力例:
change_id,user_id,user_email,source,model,total_lines_added,total_lines_deleted,created_at,metadata_json749356201,user_3k9x8q...,[email protected],COMPOSER,gpt-4o,18,4,2025-07-30T15:10:12.000Z,"[{""fileName"":""src/analytics/report.ts"",""fileExtension"":""ts"",""linesAdded"":12,""linesDeleted"":3},{""fileName"":""src/analytics/ui.tsx"",""fileExtension"":""tsx"",""linesAdded"":6,""linesDeleted"":1}]"749356202,user_3k9x8q...,[email protected],TAB,,8,2,2025-07-30T15:08:45.000Z,"[{""fileName"":""src/utils/helpers.ts"",""fileExtension"":""ts"",""linesAdded"":8,""linesDeleted"":2}]"コミットの詳細を取得
/analytics/ai-code/commits/:commitHashblameアノテーションや参照されている会話メタデータを含む、1件以上のコミットの詳細情報を取得します。
このエンドポイントは限定的なアルファ版であり、一部のユーザーのみが利用できます。レスポンスの構造は変更される場合があります。
パスパラメータ
commitHash string
abc123,def456) クエリパラメータ
branch string
レスポンスフィールド
commits 配列と conversations 配列を含むオブジェクトを返します。
| フィールド | 型 | 説明 | ||
|---|---|---|---|---|
commits | 配列 | blameアノテーションを含むコミットオブジェクトの配列 | ||
commits[].commitSource | "ide" | "cli" | "cloud" | コミットの作成元。 |
commits[].rangeAnnotations | 配列 | コミットのファイルレベルのblameデータ | ||
commits[].rangeAnnotations[].filePath | 文字列 | リポジトリ内のファイルパス | ||
commits[].rangeAnnotations[].groups | 配列 | アノテーショングループの配列 | ||
commits[].rangeAnnotations[].groups[].conversationId | 文字列 | null | このコードを生成した会話のID | |
commits[].rangeAnnotations[].groups[].model | 文字列 | null | コードの生成に使用したAIモデル | |
commits[].rangeAnnotations[].groups[].operationType | 文字列 | 実行された操作の種類 | ||
commits[].rangeAnnotations[].groups[].ranges | 配列 | このアノテーションの対象となる行範囲の配列 | ||
commits[].rangeAnnotations[].groups[].ranges[].start | 数値 | 開始行番号 | ||
commits[].rangeAnnotations[].groups[].ranges[].end | 数値 | 終了行番号 | ||
conversations | 配列 | 参照されているすべての会話のメタデータ | ||
conversations[].id | 文字列 | 一意の会話識別子 | ||
conversations[].title | 文字列 | null | 会話のタイトル | |
conversations[].tldr | 文字列 | null | 簡潔な要約 | |
conversations[].overview | 文字列 | null | 詳細な概要 | |
conversations[].summaryBullets | 配列 | null | 要約の箇条書きの配列 |
単一のコミットをリクエストした場合でも、レスポンス形式は変わりません。
単一のコミット:
curl -X GET "https://api.cursor.com/analytics/ai-code/commits/0aabf603dc906e05bf5e4d9fd423fdd517f2e43f?branch=main" \ -u YOUR_API_KEY:複数のコミット:
curl -X GET "https://api.cursor.com/analytics/ai-code/commits/abc123,def456,ghi789" \ -u YOUR_API_KEY:レスポンス:
{ "commits": [ { "commitHash": "0aabf603dc906e05bf5e4d9fd423fdd517f2e43f", "commitSource": "ide", "rangeAnnotations": [ { "filePath": "src/analytics/report.ts", "groups": [ { "conversationId": "conv_abc123", "model": "gpt-4o", "operationType": "insert", "ranges": [ { "start": 10, "end": 25 }, { "start": 42, "end": 58 } ] } ] } ] } ], "conversations": [ { "id": "conv_abc123", "title": "Refactor analytics module", "tldr": "Extracted report generation into separate functions", "overview": "Refactored the analytics module to improve maintainability by extracting report generation logic.", "summaryBullets": [ "Created dedicated report generator class", "Added unit tests for new functions", "Updated imports across affected files" ] } ]}共通クエリパラメータ
すべてのエンドポイントで、クエリ文字列を通じて同じクエリパラメータを使用できます。
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
startDate | string | date | 非対応 |
endDate | string | date | 非対応 |
page | number | 非対応 | ページ番号 (1 始まり) 。デフォルト: 1 |
pageSize | number | 非対応 | 1 ページあたりの結果数。デフォルト: 100、最大: 1000 |
user | string | 非対応 | 単一のユーザーで絞り込むための任意のフィルター。メールアドレス (例: [email protected]) 、エンコード済み ID (例: user_abc123...) 、または数値 ID (例: 42) を指定できます。 |
レスポンスの userId は、プレフィックス user_ が付いたエンコード済み外部 ID として返されます。この ID は API での利用において安定しています。
セマンティクスとメトリクスの算出方法
- ソース: 「TAB」は受け入れられたインライン補完を、「COMPOSER」はエージェントの編集で受け入れられた差分を表します
- 行メトリクス: tabLinesAdded/Deleted と composerLinesAdded/Deleted はそれぞれ個別にカウントされます。nonAiLinesAdded/Deleted は max(0, totalLines - AI lines) として算出されます
- プライバシーモード: クライアントで有効にすると、fileName などの一部のメタデータが省略される場合があります
- ブランチ情報: 現在のブランチがリポジトリのデフォルトブランチと一致する場合、isPrimaryBranch は true になります。リポジトリ情報を利用できない場合は undefined になることがあります
そのファイルを確認すると、コミットや変更がどのように検出・報告されるかを把握できます。
ヒント
userパラメータを使用すると、すべてのエンドポイントから特定のユーザーをすばやく絞り込めます- 大規模なデータ抽出には、CSV エンドポイントを使用してください。サーバー側で 10,000 レコード単位のページとしてストリーミングされます
- クライアントがデフォルトブランチを解決できない場合、
isPrimaryBranchは未定義になることがあります commitTsはコミットのタイムスタンプ、createdAtは当社サーバーでの取り込み時刻です- クライアントでプライバシーモードが有効な場合、一部のフィールドが含まれないことがあります
- コミットハッシュは一意でも不変でもありません。たとえば、追加情報を加えてコミットを修正すると、同じコミットが 2 回表示されることがあります。
- コミットを修正しても、コミットのタイムスタンプは変わりません。
変更履歴
- アルファリリース: コミットと変更に関する初期エンドポイント。レスポンスの構造はフィードバックに基づいて変更される場合があります
AI Code Tracking はエンタープライズプランで利用できます
詳細な AI 利用状況指標をご利用いただくには、チームまでお問い合わせください。