Acesse análises de código gerado por IA para os repositórios do seu time. Isso inclui uso de IA por commit, bem como alterações granulares aceitas da IA.
A API está em sua primeira versão. Estamos expandindo as funcionalidades com base no feedback - conta pra gente quais endpoints você precisa!
  • Disponibilidade: Apenas para times enterprise
  • Status: Alpha (estruturas de resposta e campos podem mudar)

Autenticação

Todas as requisições da API precisam de autenticação usando uma chave de API. Esta API usa a mesma autenticação da Admin API dos outros endpoints. Para instruções detalhadas de autenticação, consulte Autenticação da Admin API.

URL Base

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

Limites de Taxa

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

Parâmetros de Consulta

Todos os endpoints abaixo aceitam os mesmos parâmetros de consulta via query string:
ParâmetroTipoObrigatórioDescrição
startDatestringdateNãoString de data ISO, o literal “now”, ou dias relativos como “7d” (significa 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 (baseado em 1). Padrão: 1
pageSizenumberNãoResultados por página. Padrão: 100, Máximo: 1000
userstringNãoFiltro opcional por um único usuário. Aceita email (ex.: developer@company.com), ID codificado (ex.: user_abc123…), ou ID numérico (ex.: 42)
As respostas retornam userId como um ID externo codificado com o prefixo user_. Isso é estável para consumo da API.

Semântica e Como as Métricas São Calculadas

  • Fontes: “TAB” representa sugestões de autocompletar inline que foram aceitas; “COMPOSER” representa diffs aceitos do Composer
  • Métricas de linhas: tabLinesAdded/Deleted e composerLinesAdded/Deleted são contadas separadamente; nonAiLinesAdded/Deleted são calculadas como max(0, totalLines - AI lines)
  • Modo de privacidade: Se habilitado no cliente, alguns metadados (como fileName) podem ser omitidos
  • Informações de branch: isPrimaryBranch é true quando a branch atual coincide com a branch padrão do repositório; pode ser undefined 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.

Endpoints

Obter Métricas de Commit de IA (JSON, paginado)

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

Resposta

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

Campos do AiCommitMetric

CampoTipoDescrição
commitHashstringHash do commit Git
userIdstringID do usuário codificado (ex.: user_abc123)
userEmailstringEndereço de email do usuário
repoNamestringnullNome do repositório
branchNamestringnullNome da branch
isPrimaryBranchbooleannullSe esta é a branch principal
totalLinesAddednumberTotal de linhas adicionadas no commit
totalLinesDeletednumberTotal de linhas removidas no commit
tabLinesAddednumberLinhas adicionadas via autocompletar TAB
tabLinesDeletednumberLinhas removidas via autocompletar TAB
composerLinesAddednumberLinhas adicionadas via Composer
composerLinesDeletednumberLinhas removidas via Composer
nonAiLinesAddednumbernullLinhas não-IA adicionadas
nonAiLinesDeletednumbernullLinhas não-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": "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 (email):
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 Commit de IA (CSV, streaming)

Faz o download dos dados de métricas de commit em formato CSV para extrações de grandes volumes de dados.
GET /analytics/ai-code/commits.csv

Resposta

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

Colunas do CSV

ColunaTipoDescrição
commit_hashstringHash do commit Git
user_idstringID do usuário codificado
user_emailstringEndereço de email 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 completions TAB
tab_lines_deletednumberLinhas removidas via completions TAB
composer_lines_addednumberLinhas adicionadas via Composer
composer_lines_deletednumberLinhas removidas via Composer
non_ai_lines_addednumberLinhas não-IA adicionadas
non_ai_lines_deletednumberLinhas não-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 Request

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 IA (JSON, paginado)

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

Response

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

Campos de AiCodeChangeMetric

CampoTipoDescrição
changeIdstringID determinístico para a mudança
userIdstringID do usuário codificado (ex: user_abc123)
userEmailstringEndereço de email 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 privacidade)

Exemplo de Response

{
  "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 Requisições

Requisiçã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 (email):
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?user=developer@company.com" \
  -u YOUR_API_KEY:

Download de Métricas de Mudanças de Código IA (CSV, streaming)

Faz o download dos dados de métricas de mudanças em formato CSV para extrações de grandes volumes de dados.
GET /analytics/ai-code/changes.csv

Response

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

Colunas do CSV

ColunaTipoDescrição
change_idstringID determinístico para a mudança
user_idstringID do usuário codificado
user_emailstringEndereço de email do usuário
sourcestringOrigem da mudança de IA (TAB ou COMPOSER)
modelstringModelo de IA utilizado
total_lines_addednumberTotal de linhas adicionadas
total_lines_deletednumberTotal de linhas removidas
created_atstringTimestamp de ingestão (formato ISO)
metadata_jsonstringArray de entradas de metadata em formato JSON string

Observações

  • metadata_json é um array de entradas de metadata em formato JSON string (pode omitir fileName no modo de privacidade)
  • Ao consumir CSV, certifique-se de fazer parse dos campos entre aspas

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 Requisição

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

Dicas

  • Use o parâmetro user para filtrar rapidamente um único usuário em todos os endpoints
  • Para extrações de dados grandes, prefira endpoints CSV—eles fazem streaming em páginas de 10.000 registros no lado do servidor
  • isPrimaryBranch pode ser undefined se o cliente não conseguiu resolver o branch padrão
  • commitTs é o timestamp do commit; createdAt é o horário de ingestão em nossos servidores
  • Alguns campos podem estar ausentes quando o modo de privacidade está ativado no cliente

Changelog

  • Versão Alpha: Endpoints iniciais para commits e alterações. As estruturas de resposta podem evoluir com base no feedback