Pular para o conteúdo principal
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á ampliando as capacidades com base no feedback — conta pra gente quais endpoints você precisa!
  • Disponibilidade: somente para equipes enterprise
  • Status: Alpha (os formatos 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 outros endpoints. Para instruções detalhadas de autenticação, confere Admin API authentication.

URL base

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

Limites de uso

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

Parâmetros de consulta

Todos os endpoints abaixo aceitam os mesmos parâmetros 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 (iniciado 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 email (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_. Esse valor é estável para consumo via API.

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

  • Fontes: “TAB” representa completações inline que foram aceitas; “COMPOSER” representa diffs aceitos do Composer
  • Métricas de linhas: tabLinesAdded/Deleted e composerLinesAdded/Deleted são contabilizadas 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
  • Informações de branch: isPrimaryBranch é true quando a branch atual é igual à branch padrão do repositório; pode ser undefined se as informações do repositório não estiverem disponíveis
Você pode analisar esse arquivo para entender como commits e alterações são detectados e reportados.

Endpoints

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

Retorna métricas agregadas por commit que atribuem linhas ao TAB, COMPOSER e conteúdo não gerado por IA.
GET /analytics/ai-code/commits

Resposta

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

Campos de AiCommitMetric

CampoTipoDescrição
commitHashstringHash do commit do Git
userIdstringID de usuário codificado (ex.: user_abc123)
userEmailstringEndereço de e-mail do usuário
repoNamestringnullNome do repositório
branchNamestringnullNome da branch
isPrimaryBranchbooleannullIndica se é a branch primária
totalLinesAddednumberTotal de linhas adicionadas no commit
totalLinesDeletednumberTotal de linhas removidas no commit
tabLinesAddednumberLinhas adicionadas via completações com TAB
tabLinesDeletednumberLinhas removidas via completações com TAB
composerLinesAddednumberLinhas adicionadas via Composer
composerLinesDeletednumberLinhas removidas via Composer
nonAiLinesAddednumbernullLinhas não geradas por IA adicionadas
nonAiLinesDeletednumbernullLinhas não geradas por IA removidas
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": "Refatorar: extrair cliente de analytics"
      "commitTs": "2025-07-30T14:12:03.000Z",
      "createdAt": "2025-07-30T14:12:30.000Z"
    }
  ],
  "totalCount": 42,
  "page": 1,
  "pageSize": 100
}

Exemplos de solicitações

Solicitação básica:
curl -X GET "https://api.cursor.com/analytics/ai-code/commits?startDate=7d&endDate=now&page=1&pageSize=100" \
  -u SUA_CHAVE_DA_API:
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 SUA_CHAVE_DE_API:

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

Baixa dados de métricas de commits em CSV para extrações em grande escala.
GET /analytics/ai-code/commits.csv

Resposta

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

Colunas 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_branchbooleanSe esta é a branch principal
total_lines_addednumberTotal de linhas adicionadas no commit
total_lines_deletednumberTotal de linhas removidas no commit
tab_lines_addednumberLinhas adicionadas via completações com TAB
tab_lines_deletednumberLinhas removidas via completações 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_tsstringCarimbo de data e hora do commit (formato ISO)
created_atstringCarimbo de data e hora 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,"Refatoração: extrair cliente de 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,"Adicionar tratamento de erro",2025-07-30T13:45:21.000Z,2025-07-30T13:45:45.000Z

Exemplo de solicitação

curl -L "https://api.cursor.com/analytics/ai-code/commits.csv?startDate=2025-07-01T00:00:00Z&endDate=now&user=user_3k9x8q..." \
  -u SUA_CHAVE_DA_API: \
  -o commits.csv

Obter métricas de alterações de código com IA (JSON, paginadas)

Recupera alterações granulares de IA aceitas, agrupadas por changeId determinístico. Útil para analisar eventos de IA aceitos independentemente dos commits.
GET /analytics/ai-code/changes

Resposta

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

Campos de AiCodeChangeMetric

CampoTipoDescrição
changeIdstringID determinístico da alteração
userIdstringID de usuário codificado (por exemplo, user_abc123)
userEmailstringEndereço de e-mail do usuário
source”TAB""COMPOSER”Origem da alteração gerada por IA
modelstringnullModelo de IA utilizado
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",
      "fonte": "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 SUA_CHAVE_DA_API:
Filtrar por usuário (ID criptografado):
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?user=user_3k9x8q..." \
  -u SUA_API_KEY:
Filtrar por usuário (e-mail):
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?user=developer@company.com" \
  -u SUA_API_KEY:

Baixar métricas de alterações de IA (CSV, streaming)

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

Resposta

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

Colunas do CSV

ColunaTipoDescrição
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 excluídas
created_atstringCarimbo de data/hora de ingestão (formato ISO)
metadata_jsonstringArray de metadados serializado em JSON

Notas

  • metadata_json é um array de metadados serializado em JSON (pode omitir fileName no modo de privacidade)
  • Ao consumir CSV, lembra de fazer o parse de campos entre aspas

Exemplo de saída em CSV

change_id,user_id,user_email,origem,modelo,total_de_linhas_adicionadas,total_de_linhas_excluídas,criado_em,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 SUA_API_KEY: \
  -o changes.csv

Dicas

  • Usa o parâmetro user pra filtrar rapidinho um único usuário em todos os endpoints
  • Pra extrações grandes de dados, prefere os endpoints CSV — eles fazem streaming em páginas de 10.000 registros no lado do servidor
  • isPrimaryBranch pode ser indefinido se o cliente não conseguiu resolver a branch padrão
  • commitTs é o timestamp do commit; createdAt é o horário de ingestão nos nossos servidores
  • Alguns campos podem estar ausentes quando o modo de privacidade tá habilitado no cliente

Changelog

  • Versão alpha: Endpoints iniciais para commits e mudanças. Os formatos de resposta podem evoluir com base no feedback
I