メインコンテンツへスキップ
チームのリポジトリに対するAI生成コードの分析にアクセスできる。コミット単位のAI利用状況や、受け入れられたAI変更の粒度の細かい内訳を含む。
このAPIは初回リリース。フィードバックに基づき機能を拡張中—必要なエンドポイントを教えて!
  • 提供状況: エンタープライズチーム限定
  • ステータス: Alpha(レスポンスの形やフィールドは変更される可能性あり)

認証

すべての API リクエストには、API キーによる認証が必要。この API は、他のエンドポイントと同じ Admin API の認証方式を使ってる。 詳しい手順は Admin API authentication を参照してね。

ベース URL

すべての API エンドポイントで使用されるのは次のとおり:
https://api.cursor.com

レート制限

  • エンドポイントごと・チームごとに、1分あたり5リクエスト

クエリパラメータ

以下のエンドポイントはすべて、クエリ文字列で同じクエリパラメータを受け付ける:
ParameterTypeRequiredDescription
startDatestringdateNoISO日付文字列、リテラルの “now”、または “7d” のような相対日数(「現在 - 7日」の意味)。デフォルト: 現在 - 7日
endDatestringdateNoISO日付文字列、リテラルの “now”、または “0d” のような相対日数。デフォルト: 現在
pagenumberNoページ番号(1始まり)。デフォルト: 1
pageSizenumberNo1ページあたりの件数。デフォルト: 100、最大: 1000
userstringNo単一ユーザーによる任意のフィルタ。メール(例: developer@company.com)、エンコード済みID(例: user_abc123…)、または数値ID(例: 42)を受け付ける
レスポンスでは、接頭辞 user_ が付いたエンコード済み外部IDとして userId を返す。これは API 連携で安定して利用できる。

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

  • Sources: “TAB” は受け入れられたインライン補完、“COMPOSER” は Composer で受け入れられた差分を表す
  • Lines metrics: tabLinesAdded/Deleted と composerLinesAdded/Deleted は個別にカウントされる。nonAiLinesAdded/Deleted は max(0, totalLines - AI lines) で算出される
  • Privacy mode: クライアントで有効な場合、fileName など一部のメタデータは省略されることがある
  • Branch info: 現在のブランチがリポジトリのデフォルトブランチと一致する場合、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": "リファクタリング: analytics クライアントの抽出"
      "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 Commit Metrics のダウンロード(CSV・ストリーミング)

大規模なデータ抽出向けに、コミットメトリクスのデータを CSV 形式でダウンロードできる。
GET /analytics/ai-code/commits.csv

レスポンス

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

CSV カラム

ColumnTypeDescription
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,"リファクタ: analytics クライアントを抽出",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,"エラー処理を追加",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

ヒント

  • すべてのエンドポイントで特定のユーザーだけを素早く絞り込むには、user パラメータを使う
  • 大規模なデータ抽出には CSV エンドポイントを推奨—サーバー側で 10,000 件ごとのページとしてストリーミングされる
  • デフォルトブランチをクライアント側で解決できない場合、isPrimaryBranch は undefined になることがある
  • commitTs はコミットのタイムスタンプ、createdAt はサーバーでの取り込み時刻
  • クライアントでプライバシーモードが有効な場合、一部のフィールドが欠落することがある

変更履歴

  • アルファ版リリース: commits と changes 用の初期エンドポイントを追加。フィードバックに応じてレスポンス形式は変更される可能性があります
I