팀 리포지토리의 AI 생성 코드 분석 데이터에 액세스할 수 있습니다. 커밋별 AI 사용량과 세부적인 AI 변경 사항 승인 내역이 포함됩니다.
API는 첫 번째 릴리스 상태입니다. 피드백을 바탕으로 기능을 확장하고 있으니 필요한 엔드포인트가 있다면 알려주세요!
  • 가용성: 엔터프라이즈 팀 전용
  • 상태: 알파 (응답 구조와 필드가 변경될 수 있음)

인증

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

Base URL

모든 API 엔드포인트는 다음을 사용해:
https://api.cursor.com

요청 제한

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

쿼리 매개변수

아래의 모든 엔드포인트는 쿼리 문자열을 통해 동일한 쿼리 매개변수를 받아:
매개변수타입필수설명
startDatestringdate아니오ISO 날짜 문자열, 리터럴 “now”, 또는 “7d”와 같은 상대적 일수 (now - 7일을 의미). 기본값: now - 7일
endDatestringdate아니오ISO 날짜 문자열, 리터럴 “now”, 또는 “0d”와 같은 상대적 일수. 기본값: now
pagenumber아니오페이지 번호 (1부터 시작). 기본값: 1
pageSizenumber아니오페이지당 결과 수. 기본값: 100, 최대: 1000
userstring아니오단일 사용자로 필터링하는 선택적 매개변수. 이메일 (예: developer@company.com), 인코딩된 ID (예: user_abc123…), 또는 숫자 ID (예: 42)를 받음
응답은 userId를 user_ 접두사가 붙은 인코딩된 외부 ID로 반환해. 이는 API 사용에 안정적이야.

시맨틱스와 지표가 계산되는 방식

  • 소스: “TAB”은 사용자가 수락한 인라인 자동완성을 의미하고, “COMPOSER”는 Composer에서 수락된 diff를 의미해
  • 라인 관련 지표: 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_jsonstringJSON 문자열화된 메타데이터 항목 배열

참고사항

  • 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은 우리 서버의 데이터 수집 시간이야
  • 클라이언트에서 프라이버시 모드가 활성화되면 일부 필드가 누락될 수 있어

변경 로그

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