チームのリポジトリのAI生成コード解析データにアクセスできる。コミット単位でのAI使用状況や、承認されたAI変更の詳細な情報が含まれる。
このAPIは初回リリース版だ。フィードバックに基づいて機能を拡張しているので、必要なエンドポイントがあったら教えて!
  • 利用可能性: エンタープライズチームのみ
  • ステータス: アルファ版(レスポンス形式やフィールドが変更される可能性あり)

認証

すべてのAPIリクエストにはAPIキーによる認証が必要です。このAPIは他のエンドポイントと同じAdmin API認証を使用します。 詳細な認証手順については、Admin API認証を参照してください。

ベースURL

すべてのAPIエンドポイントで使用するベースURL:
https://api.cursor.com

レート制限

  • チーム・エンドポイントごとに1分間5リクエストまで

クエリパラメータ

以下のすべてのエンドポイントは、クエリ文字列経由で同じクエリパラメータを受け付けます:
パラメータ必須説明
startDatestringdateNoISO日付文字列、文字列「now」、または「7d」(現在から7日前を意味)のような相対日数。デフォルト:現在から7日前
endDatestringdateNoISO日付文字列、文字列「now」、または「0d」のような相対日数。デフォルト:現在
pagenumberNoページ番号(1ベース)。デフォルト:1
pageSizenumberNoページあたりの結果数。デフォルト:100、最大:1000
userstringNo単一ユーザーによる任意のフィルタ。メール(例:developer@company.com)、エンコードされたID(例:user_abc123…)、または数値ID(例:42)を指定可能
レスポンスではuserIdがuser_プレフィックス付きのエンコードされた外部IDとして返されます。これはAPI利用において安定した値です。

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

  • ソース: “TAB” は、採用されたインライン補完を表す。“COMPOSER” は、Composer から採用された差分を表す。
  • 行メトリクス: tabLinesAdded/Deleted と composerLinesAdded/Deleted は個別にカウントされる。nonAiLinesAdded/Deleted は max(0, totalLines - AI lines) として算出される。
  • プライバシーモード: クライアントで有効になっている場合、一部のメタデータ(fileName など)が省略される場合がある。
  • ブランチ情報: isPrimaryBranch は、現在のブランチがリポジトリのデフォルトブランチと一致する場合に true になる。リポジトリ情報が利用できない場合は undefined になることがある。
そのファイルを参照すると、コミットや変更がどのように検出・報告されるかがわかる。

エンドポイント

AIコミットメトリクスの取得(JSON、ページネーション対応)

TAB、COMPOSER、非AIに行を帰属させるコミット単位の集計メトリクスを取得する。
GET /analytics/ai-code/commits

レスポンス

{
  items: AiCommitMetric[];
  totalCount: number;
  page: number;
  pageSize: number;
}

AiCommitMetricフィールド

フィールド説明
commitHashstringGitコミットハッシュ
userIdstringエンコードされたユーザーID(例:user_abc123)
userEmailstringユーザーのメールアドレス
repoNamestringnullリポジトリ名
branchNamestringnullブランチ名
isPrimaryBranchbooleannullプライマリブランチかどうか
totalLinesAddednumberコミットで追加された総行数
totalLinesDeletednumberコミットで削除された総行数
tabLinesAddednumberTAB補完で追加された行数
tabLinesDeletednumberTAB補完で削除された行数
composerLinesAddednumberComposerで追加された行数
composerLinesDeletednumberComposerで削除された行数
nonAiLinesAddednumbernull非AIで追加された行数
nonAiLinesDeletednumbernull非AIで削除された行数
messagestringnullコミットメッセージ
commitTsstringnullコミットタイムスタンプ(ISO形式)
createdAtstring取り込みタイムスタンプ(ISO形式)

レスポンス例

{
  "items": [
    {
      "commitHash": "a1b2c3d4",
      "userId": "user_3k9x8q...",
      "userEmail": "developer@company.com",
      "repoName": "company/repo",
      "branchName": "main",
      "isPrimaryBranch": true,
      "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
}

リクエスト例

基本的なリクエスト:
curl -X GET "https://api.cursor.com/analytics/ai-code/commits?startDate=7d&endDate=now&page=1&pageSize=100" \
  -u YOUR_API_KEY:
ユーザー(メール)でフィルタ:
curl -X GET "https://api.cursor.com/analytics/ai-code/commits?startDate=2025-06-01T00:00:00Z&endDate=now&user=developer@company.com" \
  -u YOUR_API_KEY:

AIコミットメトリクスのダウンロード(CSV、ストリーミング)

大量データ抽出用にコミットメトリクスデータをCSV形式でダウンロードする。
GET /analytics/ai-code/commits.csv

レスポンス

ヘッダー:
  • Content-Type: text/csv; charset=utf-8

CSV列

カラムタイプ説明
commit_hashstringGitコミットハッシュ
user_idstringエンコードされたユーザーID
user_emailstringユーザーのメールアドレス
repo_namestringリポジトリ名
branch_namestringブランチ名
is_primary_branchbooleanメインブランチかどうか
total_lines_addednumberコミットで追加された総行数
total_lines_deletednumberコミットで削除された総行数
tab_lines_addednumberTAB補完で追加された行数
tab_lines_deletednumberTAB補完で削除された行数
composer_lines_addednumberComposerで追加された行数
composer_lines_deletednumberComposerで削除された行数
non_ai_lines_addednumber非AI追加行数
non_ai_lines_deletednumber非AI削除行数
messagestringコミットメッセージ
commit_tsstringコミットタイムスタンプ(ISO形式)
created_atstring取り込みタイムスタンプ(ISO形式)

サンプルCSV出力

commit_hash,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_at
a1b2c3d4,user_3k9x8q...,developer@company.com,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.000Z
e5f6g7h8,user_3k9x8q...,developer@company.com,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

リクエスト例

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

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

決定論的なchangeIdでグループ化された、詳細な承認済みAI変更を取得する。コミットとは独立してAIイベントを分析するのに便利。
GET /analytics/ai-code/changes

レスポンス

{
  items: AiCodeChangeMetric[];
  totalCount: number;
  page: number;
  pageSize: number;
}

AiCodeChangeMetricフィールド

フィールドタイプ説明
changeIdstring変更の決定論的ID
userIdstringエンコードされたユーザーID(例:user_abc123)
userEmailstringユーザーのメールアドレス
source”TAB""COMPOSER”AI変更のソース
modelstringnull使用されたAIモデル
totalLinesAddednumber追加された総行数
totalLinesDeletednumber削除された総行数
createdAtstring取り込みタイムスタンプ(ISO形式)
metadataArrayファイルメタデータ(プライバシーモードではfileNameが省略される場合がある)

レスポンス例

{
  "items": [
    {
      "changeId": "749356201",
      "userId": "user_3k9x8q...",
      "userEmail": "developer@company.com",
      "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
}

リクエスト例

基本的なリクエスト:
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?startDate=14d&endDate=now&page=1&pageSize=200" \
  -u YOUR_API_KEY:
ユーザーでフィルタ(エンコードされたID):
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?user=user_3k9x8q..." \
  -u YOUR_API_KEY:
ユーザーでフィルタ(メールアドレス):
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?user=developer@company.com" \
  -u YOUR_API_KEY:

AIコード変更メトリクスのダウンロード(CSV、ストリーミング)

大量データ抽出用のCSV形式での変更メトリクスデータのダウンロード。
GET /analytics/ai-code/changes.csv

レスポンス

ヘッダー:
  • 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文字列化配列

注意事項

  • metadata_jsonはメタデータエントリのJSON文字列化配列(プライバシーモードではfileNameが省略される場合があります)
  • CSVを使用する際は、引用符で囲まれたフィールドを必ず解析してください

サンプルCSV出力

change_id,user_id,user_email,source,model,total_lines_added,total_lines_deleted,created_at,metadata_json
749356201,user_3k9x8q...,developer@company.com,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...,developer@company.com,TAB,,8,2,2025-07-30T15:08:45.000Z,"[{""fileName"":""src/utils/helpers.ts"",""fileExtension"":""ts"",""linesAdded"":8,""linesDeleted"":2}]"

リクエスト例

curl -L "https://api.cursor.com/analytics/ai-code/changes.csv?startDate=30d&endDate=now" \
  -u YOUR_API_KEY: \
  -o changes.csv

Tips

  • 全エンドポイントで単一ユーザーを素早くフィルタリングするにはuserパラメータを使用してください
  • 大量データの抽出には、CSVエンドポイントを推奨します—サーバーサイドで10,000レコードずつページングしてストリーミングします
  • クライアントがデフォルトブランチを解決できない場合、isPrimaryBranchは未定義になる可能性があります
  • commitTsはコミットのタイムスタンプ、createdAtはサーバーでの取り込み時刻です
  • クライアントでプライバシーモードが有効になっている場合、一部のフィールドが存在しない可能性があります

変更履歴

  • アルファリリース: コミットと変更用の初期エンドポイント。レスポンス形式はフィードバックに基づいて今後変更される可能性があります