팀 리포지토리의 AI 생성 코드 분석에 액세스해. 커밋별 AI 사용량과 세밀한 수준의 승인된 AI 변경 사항까지 포함돼.
API의 첫 릴리스야. 피드백을 바탕으로 기능을 확장 중이야 — 어떤 엔드포인트가 필요한지 알려줘!
  • Availability: 엔터프라이즈 팀 전용
  • Status: 알파(응답 구조와 필드는 변경될 수 있음)

인증

모든 API 요청은 API 키로 인증해야 해. 이 API는 다른 엔드포인트와 동일한 Admin API 인증을 사용해. 자세한 인증 방법은 Admin API 인증을 참고해.

기본 URL

모든 API 엔드포인트는 아래 주소를 사용해:
https://api.cursor.com

요청 한도

  • 팀별·엔드포인트별 분당 5회 요청

쿼리 파라미터

아래 모든 엔드포인트는 쿼리 스트링으로 동일한 쿼리 파라미터를 받아:
ParameterTypeRequiredDescription
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에서 안정적으로 사용할 수 있어.

시맨틱과 메트릭 계산 방식

  • Sources: “TAB”는 수락된 인라인 자동완성을 의미하고, “COMPOSER”는 Composer에서 수락된 diff를 의미해
  • 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": "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 컬럼

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,"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 필드

FieldTypeDescription
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 컬럼

ColumnTypeDescription
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 는 우리 서버에서의 수집 시각이야
  • 클라이언트에서 개인정보 보호 모드가 활성화되면 일부 필드가 없을 수 있어

변경 내역

  • 알파 릴리스: 커밋과 변경 사항용 초기 엔드포인트. 피드백에 따라 응답 스키마가 변경될 수 있음