Skip to main content

Command Palette

Search for a command to run...

API

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、ページネーション対応)

GET/analytics/ai-code/commits

TAB、COMPOSER、非 AI による行を分類した、コミットごとの集計メトリクスを取得します。

パラメータ

startDate string | date

ISO 日付文字列、リテラルの "now"、または "7d" のような相対日数 (now - 7 日を意味します) 。デフォルト: now - 7 日

endDate string | date

ISO 日付文字列、リテラルの "now"、または "0d" のような相対日数。デフォルト: now

page number

ページ番号 (1 始まり) 。デフォルト: 1

pageSize number

1 ページあたりの結果数。デフォルト: 100、最大: 1000

user string

単一ユーザーで絞り込むための任意のフィルターです。メールアドレス (例: [email protected]) 、エンコード済み ID (例: user_abc123...) 、または数値 ID (例: 42) を指定できます

レスポンスフィールド

フィールド型説明
commitHashstringGit コミットハッシュ
userIdstringエンコード済みユーザー ID (例: user_abc123)
userEmailstringユーザーのメールアドレス
repoNamestringnullリポジトリ名
branchNamestringnullブランチ名
isPrimaryBranchbooleannullプライマリブランチかどうか
commitSource"ide""cli""cloud"コミットの発生元
totalLinesAddednumberコミットで追加された合計行数
totalLinesDeletednumberコミットで削除された合計行数
tabLinesAddednumberTAB 補完で追加された行
tabLinesDeletednumberTAB 補完で削除された行
composerLinesAddednumberComposer で追加された行
composerLinesDeletednumberComposer で削除された行
nonAiLinesAddednumbernull非 AI によって追加された行
nonAiLinesDeletednumbernull非 AI によって削除された行
messagestringnullコミットメッセージ
commitTsstringnullコミットのタイムスタンプ (ISO 形式)
createdAtstring取り込みタイムスタンプ (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、ストリーミング)

GET/analytics/ai-code/commits.csv

大量のデータを抽出するため、コミットメトリクスデータを CSV 形式でダウンロードします。

パラメータ

startDate string | date

ISO 日付文字列、リテラルの "now"、または "7d" のような相対日数 (now - 7 日を意味します) 。デフォルト: now - 7 日

endDate string | date

ISO 日付文字列、リテラルの "now"、または "0d" のような相対日数。デフォルト: now

user string

単一ユーザーで絞り込むための任意のフィルターです。メールアドレス (例: [email protected]) 、エンコード済み ID (例: user_abc123...) 、または数値 ID (例: 42) を指定できます

レスポンスヘッダー

  • Content-Type: text/csv; charset=utf-8

CSV 列

列型説明
commit_hashstringGit コミットハッシュ
user_idstringエンコード済みユーザー ID
user_emailstringユーザーのメールアドレス
repo_namestringリポジトリ名
branch_namestringブランチ名
is_primary_branchbooleanプライマリブランチかどうか
commit_sourcestringコミットの作成元 (ide、cli、または cloud)
total_lines_addednumberコミットで追加された合計行数
total_lines_deletednumberコミットで削除された合計行数
tab_lines_addednumberTab 補完で追加された行
tab_lines_deletednumberTab 補完で削除された行
composer_lines_addednumberComposer で追加された行
composer_lines_deletednumberComposer で削除された行
non_ai_lines_addednumberAI を使用せずに追加された行
non_ai_lines_deletednumberAI を使用せずに削除された行
messagestringコミットメッセージ
commit_tsstringコミットのタイムスタンプ (ISO 形式)
created_atstring取り込みタイムスタンプ (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.csv

CSV 出力の例:

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.000Z

AI コード変更メトリクスを取得 (JSON、ページネーション対応)

GET/analytics/ai-code/changes

決定論的な changeId ごとにグループ化された、受け入れられた AI 生成コードの詳細な変更を取得します。コミットとは独立して、受け入れられた AI イベントを分析する際に役立ちます。

パラメータ

startDate string | date

ISO 日付文字列、リテラルの「now」、または「7d」のような相対日数 (now - 7 日を意味します) 。デフォルト: now - 7 日

endDate string | date

ISO 日付文字列、リテラルの「now」、または「0d」のような相対日数。デフォルト: now

page number

ページ番号 (1 始まり) 。デフォルト: 1

pageSize number

ページあたりの結果数。デフォルト: 100、最大: 1000

user string

単一ユーザーで絞り込むための任意のフィルター。メールアドレス (例: [email protected]) 、エンコード済み ID (例: user_abc123...) 、または数値 ID (例: 42) を指定できます

レスポンスフィールド

フィールド型説明
changeIdstring変更の決定論的な ID
userIdstringエンコード済みユーザー ID (例: user_abc123)
userEmailstringユーザーのメールアドレス
source"TAB""COMPOSER"
modelstringnull
totalLinesAddednumber追加された合計行数
totalLinesDeletednumber削除された合計行数
createdAtstring取り込みタイムスタンプ (ISO 形式)
metadataArrayファイルメタデータ (プライバシーモードでは 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、ストリーミング)

GET/analytics/ai-code/changes.csv

大規模なデータ抽出用に、変更メトリクスデータを CSV 形式でダウンロードします。

パラメータ

startDate string | date

ISO 日付文字列、リテラルの「now」、または「7d」のような相対日数 (now - 7 日を意味します) 。デフォルト: now - 7 日

endDate string | date

ISO 日付文字列、リテラルの「now」、または「0d」のような相対日数。デフォルト: now

user string

指定した 1 人のユーザーで絞り込むための任意のフィルターです。メールアドレス (例: [email protected]) 、エンコード済み ID (例: user_abc123...) 、または数値 ID (例: 42) を指定できます

レスポンスヘッダー

  • Content-Type: text/csv; charset=utf-8

CSV 列

列型説明
change_idstring変更の決定論的な ID
user_idstringエンコード済みユーザー ID
user_emailstringユーザーのメールアドレス
sourcestringAI による変更の発生元 (TAB または COMPOSER)
modelstring使用された AI モデル
total_lines_addednumber追加された合計行数
total_lines_deletednumber削除された合計行数
created_atstring取り込みタイムスタンプ (ISO 形式)
metadata_jsonstringメタデータエントリの配列を JSON 文字列化した値
curl -L "https://api.cursor.com/analytics/ai-code/changes.csv?startDate=30d&endDate=now" \  -u YOUR_API_KEY: \  -o changes.csv

CSV 出力例:

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}]"

コミットの詳細を取得

GET/analytics/ai-code/commits/:commitHash

blameアノテーションや参照されている会話メタデータを含む、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"      ]    }  ]}

共通クエリパラメータ

すべてのエンドポイントで、クエリ文字列を通じて同じクエリパラメータを使用できます。

パラメータ型必須説明
startDatestringdate非対応
endDatestringdate非対応
pagenumber非対応ページ番号 (1 始まり) 。デフォルト: 1
pageSizenumber非対応1 ページあたりの結果数。デフォルト: 100、最大: 1000
userstring非対応単一のユーザーで絞り込むための任意のフィルター。メールアドレス (例: [email protected]) 、エンコード済み ID (例: user_abc123...) 、または数値 ID (例: 42) を指定できます。

セマンティクスとメトリクスの算出方法

  • ソース: 「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 利用状況指標をご利用いただくには、チームまでお問い合わせください。

Contact Sales