API de Rastreamento de Código com IA
A API de Rastreamento de Código com IA permite rastrear contribuições de código geradas por IA nos repositórios da sua equipe, incluindo o uso de IA por commit e alterações de IA aceitas em nível granular.
- A API de Rastreamento de Código com IA usa Autenticação Básica, com sua chave de API como nome de usuário, assim como a API de administração.
- Para saber como criar chaves de API e obter detalhes sobre métodos de autenticação, limites de taxa e boas práticas, consulte a Visão geral da API.
- Disponibilidade: somente para Enterprise; entre em contato com vendas para obter acesso
- Status: Alpha (os formatos de resposta e os campos podem mudar)
- Limitação do espaço de trabalho: as métricas são calculadas apenas para o repositório git no nível superior da raiz do espaço de trabalho. Espaços de trabalho com várias raízes não são compatíveis no momento.
Endpoints
Obter métricas de commits de IA (JSON, paginadas)
/analytics/ai-code/commitsRecupera métricas agregadas por commit que atribuem linhas ao TAB, ao COMPOSER e a recursos sem IA.
Parâmetros
startDate string | date
endDate string | date
page number
pageSize number
user string
Campos de resposta
| Campo | Tipo | Descrição | ||
|---|---|---|---|---|
commitHash | string | Hash do commit Git | ||
userId | string | ID de usuário codificado (por exemplo, user_abc123) | ||
userEmail | string | Endereço de email do usuário | ||
repoName | string | null | Nome do repositório | |
branchName | string | null | Nome da branch | |
isPrimaryBranch | boolean | null | Indica se esta é a branch principal | |
commitSource | "ide" | "cli" | "cloud" | Origem do commit. |
totalLinesAdded | number | Total de linhas adicionadas no commit | ||
totalLinesDeleted | number | Total de linhas excluídas no commit | ||
tabLinesAdded | number | Linhas adicionadas por conclusões do TAB | ||
tabLinesDeleted | number | Linhas excluídas por conclusões do TAB | ||
composerLinesAdded | number | Linhas adicionadas pelo Composer | ||
composerLinesDeleted | number | Linhas excluídas pelo Composer | ||
nonAiLinesAdded | number | null | Linhas adicionadas sem IA | |
nonAiLinesDeleted | number | null | Linhas excluídas sem IA | |
message | string | null | Mensagem do commit | |
commitTs | string | null | Timestamp do commit (formato ISO) | |
createdAt | string | Timestamp de ingestão (formato ISO) |
curl -X GET "https://api.cursor.com/analytics/ai-code/commits?startDate=7d&endDate=now&page=1&pageSize=100" \ -u YOUR_API_KEY:Resposta:
{ "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}Baixar métricas de commits de IA (CSV, streaming)
/analytics/ai-code/commits.csvBaixe dados de métricas de commits em formato CSV para grandes extrações de dados.
Parâmetros
startDate string | date
endDate string | date
user string
Cabeçalhos da resposta
- Content-Type: text/csv; charset=utf-8
Colunas CSV
| Coluna | Tipo | Descrição |
|---|---|---|
commit_hash | string | Hash do commit Git |
user_id | string | ID de usuário codificado |
user_email | string | Endereço de e-mail do usuário |
repo_name | string | Nome do repositório |
branch_name | string | Nome da branch |
is_primary_branch | boolean | Indica se é a branch principal |
commit_source | string | Origem do commit (ide, cli ou cloud) |
total_lines_added | number | Total de linhas adicionadas no commit |
total_lines_deleted | number | Total de linhas removidas no commit |
tab_lines_added | number | Linhas adicionadas por meio das conclusões do TAB |
tab_lines_deleted | number | Linhas removidas por meio das conclusões do TAB |
composer_lines_added | number | Linhas adicionadas pelo Composer |
composer_lines_deleted | number | Linhas removidas pelo Composer |
non_ai_lines_added | number | Linhas não geradas por IA adicionadas |
non_ai_lines_deleted | number | Linhas não geradas por IA removidas |
message | string | Mensagem do commit |
commit_ts | string | Timestamp do commit (formato ISO) |
created_at | string | Timestamp de ingestão (formato 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.csvExemplo de saída em 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.000ZObter métricas de alterações de código com IA (JSON paginado)
/analytics/ai-code/changesRecupera alterações detalhadas aceitas de IA, agrupadas por changeId determinístico. Útil para analisar eventos de IA aceitos independentemente dos commits.
Parâmetros
startDate string | date
endDate string | date
page number
pageSize number
user string
Campos da resposta
| Campo | Tipo | Descrição |
|---|---|---|
changeId | string | ID determinístico da alteração |
userId | string | ID de usuário codificado (por exemplo, user_abc123) |
userEmail | string | Endereço de e-mail do usuário |
source | "TAB" | "COMPOSER" |
model | string | null |
totalLinesAdded | number | Total de linhas adicionadas |
totalLinesDeleted | number | Total de linhas excluídas |
createdAt | string | Timestamp de ingestão (formato ISO) |
metadata | Array | Metadados do arquivo (fileName pode ser omitido no modo de privacidade) |
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?startDate=14d&endDate=now&page=1&pageSize=200" \ -u YOUR_API_KEY:Resposta:
{ "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}Baixar métricas de alterações de código com IA (CSV, streaming)
/analytics/ai-code/changes.csvBaixe dados de métricas de alterações em formato CSV para grandes extrações de dados.
Parâmetros
startDate string | date
endDate string | date
user string
Cabeçalhos da resposta
- Content-Type: text/csv; charset=utf-8
Colunas do CSV
| Coluna | Tipo | Descrição |
|---|---|---|
change_id | string | ID determinístico da alteração |
user_id | string | ID de usuário codificado |
user_email | string | Endereço de e-mail do usuário |
source | string | Origem da alteração de IA (TAB ou COMPOSER) |
model | string | Modelo de IA usado |
total_lines_added | number | Total de linhas adicionadas |
total_lines_deleted | number | Total de linhas excluídas |
created_at | string | timestamp de ingestão (formato ISO) |
metadata_json | string | Array de entradas de metadados serializado como string JSON |
curl -L "https://api.cursor.com/analytics/ai-code/changes.csv?startDate=30d&endDate=now" \ -u YOUR_API_KEY: \ -o changes.csvExemplo de saída 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}]"Obter detalhes do commit
/analytics/ai-code/commits/:commitHashRecupera informações detalhadas de um ou mais commits, incluindo anotações de blame e metadados das conversas referenciadas.
Este endpoint está em alfa limitado e disponível apenas para usuários selecionados. Os formatos de resposta podem mudar.
Parâmetros de caminho
commitHash string
abc123,def456)Parâmetros de consulta
branch string
Campos de resposta
Retorna um objeto contendo as matrizes commits e conversations.
| Campo | Tipo | Descrição | ||
|---|---|---|---|---|
commits | matriz | Matriz de objetos de commit com anotações de blame | ||
commits[].commitSource | "ide" | "cli" | "cloud" | Origem do commit. |
commits[].rangeAnnotations | matriz | Dados de blame por arquivo para o commit | ||
commits[].rangeAnnotations[].filePath | string | Caminho do arquivo no repositório | ||
commits[].rangeAnnotations[].groups | matriz | Matriz de grupos de anotações | ||
commits[].rangeAnnotations[].groups[].conversationId | string | null | ID da conversa que gerou este código | |
commits[].rangeAnnotations[].groups[].model | string | null | Modelo de IA usado para gerar o código | |
commits[].rangeAnnotations[].groups[].operationType | string | Tipo de operação realizada | ||
commits[].rangeAnnotations[].groups[].ranges | matriz | Matriz de intervalos de linhas afetados por esta anotação | ||
commits[].rangeAnnotations[].groups[].ranges[].start | number | Número da linha inicial | ||
commits[].rangeAnnotations[].groups[].ranges[].end | number | Número da linha final | ||
conversations | matriz | Metadados de todas as conversas referenciadas | ||
conversations[].id | string | Identificador único da conversa | ||
conversations[].title | string | null | Título da conversa | |
conversations[].tldr | string | null | Resumo breve | |
conversations[].overview | string | null | Visão geral detalhada | |
conversations[].summaryBullets | matriz | null | Matriz de tópicos do resumo |
O formato da resposta é consistente mesmo ao solicitar um único commit.
Um único commit:
curl -X GET "https://api.cursor.com/analytics/ai-code/commits/0aabf603dc906e05bf5e4d9fd423fdd517f2e43f?branch=main" \ -u YOUR_API_KEY:Vários commits:
curl -X GET "https://api.cursor.com/analytics/ai-code/commits/abc123,def456,ghi789" \ -u YOUR_API_KEY:Resposta:
{ "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": "Refatorar módulo de analytics", "tldr": "Extraída a geração de relatórios para funções separadas", "overview": "O módulo de analytics foi refatorado para melhorar a manutenção, extraindo a lógica de geração de relatórios.", "summaryBullets": [ "Criada uma classe dedicada para gerar relatórios", "Adicionados testes unitários para as novas funções", "Atualizadas as importações nos arquivos afetados" ] } ]}Parâmetros de consulta comuns
Todos os endpoints aceitam os mesmos parâmetros de consulta na string de consulta:
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
startDate | string | date | No |
endDate | string | date | No |
page | number | No | Número da página (a partir de 1). Padrão: 1 |
pageSize | number | No | Resultados por página. Padrão: 100, máx.: 1000 |
user | string | No | Filtro opcional por um único usuário. Aceita e-mail (por exemplo, [email protected]), ID codificado (por exemplo, user_abc123...) ou ID numérico (por exemplo, 42) |
As respostas retornam userId como um ID externo codificado com o prefixo user_. Esse ID é estável para uso pela API.
Semântica e cálculo das métricas
- Fontes: "TAB" representa sugestões inline aceitas; "COMPOSER" representa diffs aceitos de edições do agente
- Métricas de linhas: tabLinesAdded/Deleted e composerLinesAdded/Deleted são contados separadamente; nonAiLinesAdded/Deleted é derivado como max(0, totalLines - linhas de IA)
- Modo de privacidade: se habilitado no cliente, alguns metadados (como fileName) podem ser omitidos
- Informações da branch: isPrimaryBranch é verdadeiro quando a branch atual é igual à branch padrão do repositório; pode ser indefinido se as informações do repositório não estiverem disponíveis
Você pode examinar esse arquivo para entender como commits e alterações são detectados e relatados.
Dicas
- Use o parâmetro
userpara filtrar rapidamente um único usuário em todos os endpoints - Para grandes extrações de dados, prefira endpoints CSV — eles transmitem páginas de 10.000 registros no servidor
isPrimaryBranchpode ser indefinido se o cliente não conseguir resolver a branch padrãocommitTsé o timestamp do commit;createdAté o momento da ingestão em nossos servidores- Alguns campos podem estar ausentes quando o modo de privacidade está habilitado no cliente
- Os hashes de commit não são únicos nem imutáveis. Por exemplo, você pode ver o mesmo commit duas vezes se complementar commits com informações adicionais.
- Os timestamps dos commits permanecerão inalterados mesmo que o commit seja complementado.
Registro de alterações
- Versão alfa: Endpoints iniciais para commits e alterações. Os formatos de resposta podem evoluir com base no feedback.
O Rastreamento de Código com IA está disponível no plano Enterprise
Entre em contato com nossa equipe para acessar métricas detalhadas de uso de IA.