Acesse análises de código geradas por IA nos repositórios da sua equipe. Isso inclui uso de IA por commit e alterações de IA aceitas em nível granular.
A API está na primeira versão. A gente está expandindo as capacidades com base no feedback — conta pra gente quais endpoints você precisa!
  • Disponibilidade: Somente para equipes enterprise
  • Status: Alpha (estruturas e campos de resposta podem mudar)

Autenticação

Todas as solicitações à API exigem autenticação com uma chave de API. Esta API usa o mesmo esquema de autenticação da Admin API que os outros endpoints. Para ver instruções detalhadas de autenticação, confere Admin API authentication.

URL base

Todos os endpoints da API usam:
https://api.cursor.com

Limites de requisições

  • 5 requisições por minuto por equipe, por endpoint

Parâmetros de Query

Todos os endpoints abaixo aceitam os mesmos parâmetros de query via query string:
ParâmetroTipoObrigatórioDescrição
startDatestringdateNãoString de data ISO, o literal “now” ou dias relativos como “7d” (equivale a agora - 7 dias). Padrão: agora - 7 dias
endDatestringdateNãoString de data ISO, o literal “now” ou dias relativos como “0d”. Padrão: agora
pagenumberNãoNúmero da página (com base em 1). Padrão: 1
pageSizenumberNãoResultados por página. Padrão: 100, máx.: 1000
userstringNãoFiltro opcional por um único usuário. Aceita e-mail (por exemplo, developer@company.com), 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_. Isso é estável para consumo via API.

Semântica e como as métricas são calculadas

  • Fontes: “TAB” representa completações inline aceitas; “COMPOSER” representa diffs aceitos do Composer
  • Métricas de linhas: tabLinesAdded/Deleted e composerLinesAdded/Deleted são contadas separadamente; nonAiLinesAdded/Deleted são derivadas como max(0, totalLines - AI lines)
  • Modo de privacidade: Se ativado no cliente, alguns metadados (como fileName) podem ser omitidos
  • Info de branch: isPrimaryBranch é true quando a branch atual é igual à branch padrão do repositório; pode ser undefined se as infos do repositório não estiverem disponíveis
Você pode escanear esse arquivo para entender como commits e mudanças são detectados e reportados.

Endpoints

Obter métricas de commits com IA (JSON, paginado)

Recupera métricas agregadas por commit que atribuem linhas a TAB, COMPOSER e não IA.
GET /analytics/ai-code/commits

Resposta

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

Campos de AiCommitMetric

FieldTypeDescription
commitHashstringHash do commit do Git
userIdstringID de usuário codificado (por exemplo, user_abc123)
userEmailstringEndereço de e-mail do usuário
repoNamestringnullNome do repositório
branchNamestringnullNome da branch
isPrimaryBranchbooleannullSe esta é a branch principal
totalLinesAddednumberTotal de linhas adicionadas no commit
totalLinesDeletednumberTotal de linhas excluídas no commit
tabLinesAddednumberLinhas adicionadas via completações com TAB
tabLinesDeletednumberLinhas excluídas via completações com TAB
composerLinesAddednumberLinhas adicionadas via Composer
composerLinesDeletednumberLinhas excluídas via Composer
nonAiLinesAddednumbernullLinhas sem IA adicionadas
nonAiLinesDeletednumbernullLinhas sem IA excluídas
messagestringnullMensagem do commit
commitTsstringnullTimestamp do commit (formato ISO)
createdAtstringTimestamp de ingestão (formato ISO)

Exemplo de resposta

{
  "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
}

Exemplos de requisições

Requisição básica:
curl -X GET "https://api.cursor.com/analytics/ai-code/commits?startDate=7d&endDate=now&page=1&pageSize=100" \
  -u YOUR_API_KEY:
Filtrar por usuário (e-mail):
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:

Baixar métricas de commits com IA (CSV, streaming)

Baixa os dados de métricas de commits em formato CSV para extrações de grandes volumes.
GET /analytics/ai-code/commits.csv

Resposta

Headers:
  • Content-Type: text/csv; charset=utf-8

Colunas do CSV

ColunaTipoDescrição
commit_hashstringHash do commit do Git
user_idstringID de usuário codificado
user_emailstringEndereço de e-mail do usuário
repo_namestringNome do repositório
branch_namestringNome da branch
is_primary_branchbooleanIndica se é a branch principal
total_lines_addednumberTotal de linhas adicionadas no commit
total_lines_deletednumberTotal de linhas removidas no commit
tab_lines_addednumberLinhas adicionadas via autocompletar com TAB
tab_lines_deletednumberLinhas removidas via autocompletar com TAB
composer_lines_addednumberLinhas adicionadas via Composer
composer_lines_deletednumberLinhas removidas via Composer
non_ai_lines_addednumberLinhas não geradas por IA adicionadas
non_ai_lines_deletednumberLinhas não geradas por IA removidas
messagestringMensagem do commit
commit_tsstringTimestamp do commit (formato ISO)
created_atstringTimestamp de ingestão (formato ISO)

Exemplo de saída 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

Exemplo de requisição

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

Obter métricas de mudanças de código com IA (JSON, paginado)

Recupera mudanças de IA aceitas em nível granular, agrupadas por changeId determinístico. Útil pra analisar eventos de IA aceitos independentemente de commits.
GET /analytics/ai-code/changes

Resposta

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

Campos de AiCodeChangeMetric

CampoTipoDescrição
changeIdstringID determinístico da mudança
userIdstringID de usuário codificado (ex.: user_abc123)
userEmailstringEndereço de e-mail do usuário
source”TAB""COMPOSER”Origem da mudança de IA
modelstringnullModelo de IA usado
totalLinesAddednumberTotal de linhas adicionadas
totalLinesDeletednumberTotal de linhas removidas
createdAtstringTimestamp de ingestão (formato ISO)
metadataArrayMetadados do arquivo (fileName pode ser omitido no modo de privacidade)

Exemplo de resposta

{
  "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
}

Exemplos de solicitações

Solicitação básica:
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?startDate=14d&endDate=now&page=1&pageSize=200" \
  -u YOUR_API_KEY:
Filtrar por usuário (ID codificado):
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?user=user_3k9x8q..." \
  -u YOUR_API_KEY:
Filtrar por usuário (e-mail):
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?user=developer@company.com" \
  -u YOUR_API_KEY:

Baixar métricas de alterações de código com IA (CSV, streaming)

Baixa os dados de métricas de alterações em formato CSV para extrações de grande volume.
GET /analytics/ai-code/changes.csv

Resposta

Cabeçalhos:
  • Content-Type: text/csv; charset=utf-8

Colunas do CSV

ColumnTypeDescription
change_idstringID determinístico da alteração
user_idstringID de usuário codificado
user_emailstringEndereço de e-mail do usuário
sourcestringOrigem da alteração de IA (TAB ou COMPOSER)
modelstringModelo de IA usado
total_lines_addednumberTotal de linhas adicionadas
total_lines_deletednumberTotal de linhas removidas
created_atstringTimestamp de ingestão (formato ISO)
metadata_jsonstringArray de metadados convertido em string JSON

Notas

  • metadata_json é um array de metadados convertido em string JSON (pode omitir fileName no modo de privacidade)
  • Ao consumir CSV, garante que os campos entre aspas sejam analisados corretamente

Exemplo de saída 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}]"

Exemplo de solicitação

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

Dicas

  • Usa o parâmetro user pra filtrar rapidamente um único usuário em todos os endpoints
  • Pra extrações grandes de dados, dá preferência aos endpoints CSV — eles fazem streaming em páginas de 10.000 registros no servidor
  • isPrimaryBranch pode ser indefinido se o cliente não conseguir resolver a branch padrão
  • commitTs é o carimbo de data/hora do commit; createdAt é o horário de ingestão nos nossos servidores
  • Alguns campos podem estar ausentes quando o modo de privacidade estiver habilitado no cliente

Changelog

  • Lançamento alfa: Endpoints iniciais para commits e alterações. Os formatos de resposta podem evoluir com base no feedback