Accede a métricas de código generado por IA para los repositorios de tu equipo. Esto incluye el uso de IA por commit, así como cambios granulares de IA aceptados.
La API está en su primera versión. Estamos ampliando las funcionalidades basándonos en feedback: ¡cuéntanos qué endpoints necesitas!
  • Disponibilidad: Solo para equipos enterprise
  • Estado: Alpha (la estructura de respuestas y campos pueden cambiar)

Autenticación

Todas las solicitudes de API requieren autenticación mediante una clave de API. Esta API utiliza la misma autenticación de Admin API que otros endpoints. Para instrucciones detalladas de autenticación, consulta Autenticación de Admin API.

URL Base

Todos los endpoints de la API utilizan:
https://api.cursor.com

Límites de Tasa

  • 5 solicitudes por minuto por equipo, por endpoint

Parámetros de Consulta

Todos los endpoints a continuación aceptan los mismos parámetros de consulta a través de query string:
ParámetroTipoRequeridoDescripción
startDatestringdateNoString de fecha ISO, el literal “now”, o días relativos como “7d” (significa now - 7 días). Por defecto: now - 7 días
endDatestringdateNoString de fecha ISO, el literal “now”, o días relativos como “0d”. Por defecto: now
pagenumberNoNúmero de página (basado en 1). Por defecto: 1
pageSizenumberNoResultados por página. Por defecto: 100, Máx: 1000
userstringNoFiltro opcional por un solo usuario. Acepta email (ej., developer@company.com), ID codificado (ej., user_abc123…), o ID numérico (ej., 42)
Las respuestas devuelven userId como un ID externo codificado con el prefijo user_. Esto es estable para el consumo de la API.

Semántica y cómo se calculan las métricas

  • Fuentes: “TAB” representa autocompletados en línea aceptados; “COMPOSER” representa diffs aceptados de Composer
  • Métricas de líneas: tabLinesAdded/Deleted y composerLinesAdded/Deleted se contabilizan por separado; nonAiLinesAdded/Deleted se calculan como max(0, totalLines - AI lines)
  • Modo de privacidad: Si está activado en el cliente, algunos metadatos (como fileName) pueden omitirse
  • Información de la rama: isPrimaryBranch es true cuando la rama actual coincide con la rama predeterminada del repositorio; puede ser undefined si la información del repositorio no está disponible
Puedes revisar ese archivo para entender cómo se detectan y se reportan los commits y los cambios.

Endpoints

Obtener Métricas de Commits de IA (JSON, paginado)

Recupera métricas agregadas por commit que atribuyen líneas a TAB, COMPOSER y no-IA.
GET /analytics/ai-code/commits

Respuesta

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

Campos de AiCommitMetric

CampoTipoDescripción
commitHashstringHash del commit de Git
userIdstringID de usuario codificado (ej., user_abc123)
userEmailstringDirección de correo del usuario
repoNamestringnullNombre del repositorio
branchNamestringnullNombre de la rama
isPrimaryBranchbooleannullSi esta es la rama principal
totalLinesAddednumberTotal de líneas añadidas en el commit
totalLinesDeletednumberTotal de líneas eliminadas en el commit
tabLinesAddednumberLíneas añadidas vía autocompletado TAB
tabLinesDeletednumberLíneas eliminadas vía autocompletado TAB
composerLinesAddednumberLíneas añadidas vía Composer
composerLinesDeletednumberLíneas eliminadas vía Composer
nonAiLinesAddednumbernullLíneas no-IA añadidas
nonAiLinesDeletednumbernullLíneas no-IA eliminadas
messagestringnullMensaje del commit
commitTsstringnullTimestamp del commit (formato ISO)
createdAtstringTimestamp de ingesta (formato ISO)

Ejemplo de Respuesta

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

Ejemplos de Solicitudes

Solicitud 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 usuario (correo):
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:

Descargar Métricas de Commits de IA (CSV, streaming)

Descarga datos de métricas de commits en formato CSV para extracciones de datos grandes.
GET /analytics/ai-code/commits.csv

Respuesta

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

Columnas CSV

ColumnaTipoDescripción
commit_hashstringHash del commit de Git
user_idstringID de usuario codificado
user_emailstringDirección de correo del usuario
repo_namestringNombre del repositorio
branch_namestringNombre de la rama
is_primary_branchbooleanSi esta es la rama principal
total_lines_addednumberTotal de líneas añadidas en el commit
total_lines_deletednumberTotal de líneas eliminadas en el commit
tab_lines_addednumberLíneas añadidas vía autocompletado TAB
tab_lines_deletednumberLíneas eliminadas vía autocompletado TAB
composer_lines_addednumberLíneas añadidas vía Composer
composer_lines_deletednumberLíneas eliminadas vía Composer
non_ai_lines_addednumberLíneas añadidas sin IA
non_ai_lines_deletednumberLíneas eliminadas sin IA
messagestringMensaje del commit
commit_tsstringMarca de tiempo del commit (formato ISO)
created_atstringMarca de tiempo de ingesta (formato ISO)

Ejemplo de salida 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

Ejemplo de solicitud

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

Obtener métricas de cambios de código IA (JSON, paginado)

Obtén cambios de IA aceptados granulares, agrupados por changeId determinístico. Útil para analizar eventos de IA aceptados independientemente de los commits.
GET /analytics/ai-code/changes

Respuesta

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

Campos de AiCodeChangeMetric

CampoTipoDescripción
changeIdstringID determinístico para el cambio
userIdstringID de usuario codificado (ej., user_abc123)
userEmailstringDirección de correo del usuario
source”TAB""COMPOSER”Origen del cambio de IA
modelstringnullModelo de IA utilizado
totalLinesAddednumberTotal de líneas añadidas
totalLinesDeletednumberTotal de líneas eliminadas
createdAtstringMarca de tiempo de ingesta (formato ISO)
metadataArrayMetadatos del archivo (fileName puede omitirse en modo privacidad)

Ejemplo de respuesta

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

Ejemplos de Solicitudes

Solicitud 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 usuario (ID codificado):
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?user=user_3k9x8q..." \
  -u YOUR_API_KEY:
Filtrar por usuario (email):
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?user=developer@company.com" \
  -u YOUR_API_KEY:

Descargar Métricas de Cambios de Código IA (CSV, streaming)

Descarga datos de métricas de cambios en formato CSV para extracciones de grandes volúmenes de datos.
GET /analytics/ai-code/changes.csv

Respuesta

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

Columnas CSV

ColumnaTipoDescripción
change_idstringID determinístico para el cambio
user_idstringID de usuario codificado
user_emailstringDirección de correo electrónico del usuario
sourcestringOrigen del cambio de IA (TAB o COMPOSER)
modelstringModelo de IA utilizado
total_lines_addednumberTotal de líneas añadidas
total_lines_deletednumberTotal de líneas eliminadas
created_atstringTimestamp de ingesta (formato ISO)
metadata_jsonstringArray de entradas de metadatos en formato JSON string

Notas

  • metadata_json es un array de entradas de metadatos en formato JSON string (puede omitir fileName en modo privacidad)
  • Al consumir CSV, asegúrate de parsear campos entre comillas

Ejemplo de Salida 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}]"

Ejemplo de Solicitud

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

Consejos

  • Usa el parámetro user para filtrar rápidamente un solo usuario en todos los endpoints
  • Para extracciones de datos grandes, prefiere los endpoints CSV—transmiten en páginas de 10,000 registros del lado del servidor
  • isPrimaryBranch puede ser undefined si el cliente no pudo resolver la rama predeterminada
  • commitTs es la marca de tiempo del commit; createdAt es el momento de ingesta en nuestros servidores
  • Algunos campos pueden estar ausentes cuando el modo de privacidad está habilitado en el cliente

Changelog

  • Versión Alpha: Endpoints iniciales para commits y cambios. La estructura de las respuestas puede cambiar según el feedback recibido