API de Seguimiento de Código con IA
La API de Seguimiento de Código con IA te permite hacer un seguimiento de las contribuciones de código generado por IA en los repositorios de tu equipo, incluido el consumo de IA por commit y los cambios de IA aceptados de forma detallada.
- La API de Seguimiento de Código con IA usa autenticación básica con tu clave de API como nombre de usuario, igual que la Admin API.
- Para obtener información sobre cómo crear claves de API, métodos de autenticación, límites de uso y mejores prácticas, consulta la API Overview.
- Disponibilidad: Solo Enterprise; contacta con ventas para obtener acceso
- Estado: Alpha (las estructuras y los campos de respuesta pueden cambiar)
- Limitación del espacio de trabajo: Las métricas solo se calculan para el repositorio git ubicado en el nivel superior de la raíz del espacio de trabajo. Actualmente no se admiten los espacios de trabajo multi-root.
Endpoints
Obtener métricas de commits de IA (JSON, paginadas)
/analytics/ai-code/commitsObtiene métricas agregadas por commit que atribuyen líneas a TAB, COMPOSER y contenido no generado por IA.
Parámetros
startDate string | date
endDate string | date
page number
pageSize number
user string
Campos de respuesta
| Campo | Tipo | Descripción | ||
|---|---|---|---|---|
commitHash | string | Hash del commit de Git | ||
userId | string | ID de usuario codificado (p. ej., user_abc123) | ||
userEmail | string | Dirección de correo electrónico del usuario | ||
repoName | string | null | Nombre del repositorio | |
branchName | string | null | Nombre de la rama | |
isPrimaryBranch | boolean | null | Indica si es la rama principal | |
commitSource | "ide" | "cli" | "cloud" | Origen del commit. |
totalLinesAdded | number | Total de líneas añadidas en el commit | ||
totalLinesDeleted | number | Total de líneas eliminadas en el commit | ||
tabLinesAdded | number | Líneas añadidas mediante TAB completions | ||
tabLinesDeleted | number | Líneas eliminadas mediante TAB completions | ||
composerLinesAdded | number | Líneas añadidas mediante Composer | ||
composerLinesDeleted | number | Líneas eliminadas mediante Composer | ||
nonAiLinesAdded | number | null | Líneas no generadas por IA añadidas | |
nonAiLinesDeleted | number | null | Líneas no generadas por IA eliminadas | |
message | string | null | Mensaje del commit | |
commitTs | string | null | Marca de tiempo del commit (formato ISO) | |
createdAt | string | Marca de tiempo de ingesta (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:Respuesta:
{ "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": "Refactorización: extraer el cliente de analítica", "commitTs": "2025-07-30T14:12:03.000Z", "createdAt": "2025-07-30T14:12:30.000Z" } ], "totalCount": 42, "page": 1, "pageSize": 100}Descargar métricas de commits de IA (CSV, en streaming)
/analytics/ai-code/commits.csvDescarga datos de métricas de commits en formato CSV para extraer grandes volúmenes de datos.
Parámetros
startDate string | date
endDate string | date
user string
Encabezados de respuesta
- Content-Type: text/csv; charset=utf-8
Columnas CSV
| Columna | Tipo | Descripción |
|---|---|---|
commit_hash | string | Hash del commit de Git |
user_id | string | ID de usuario codificado |
user_email | string | Dirección de correo electrónico del usuario |
repo_name | string | Nombre del repositorio |
branch_name | string | Nombre de la rama |
is_primary_branch | boolean | Indica si es la rama principal |
commit_source | string | Origen del commit (ide, cli o cloud) |
total_lines_added | number | Total de líneas añadidas en el commit |
total_lines_deleted | number | Total de líneas eliminadas en el commit |
tab_lines_added | number | Líneas añadidas mediante completaciones de TAB |
tab_lines_deleted | number | Líneas eliminadas mediante completaciones de TAB |
composer_lines_added | number | Líneas añadidas mediante Composer |
composer_lines_deleted | number | Líneas eliminadas mediante Composer |
non_ai_lines_added | number | Líneas añadidas no generadas por IA |
non_ai_lines_deleted | number | Líneas eliminadas no generadas por IA |
message | string | Mensaje del commit |
commit_ts | string | Marca de tiempo del commit (formato ISO) |
created_at | string | Marca de tiempo de ingestión (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.csvEjemplo de salida en 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.000ZObtener métricas de cambios de código de IA (JSON, paginado)
/analytics/ai-code/changesObtén cambios de IA aceptados detallados, agrupados por changeId determinista. Resulta útil para analizar eventos de IA aceptados independientemente de los commits.
Parámetros
startDate string | date
endDate string | date
page number
pageSize number
user string
Campos de respuesta
| Campo | Tipo | Descripción |
|---|---|---|
changeId | string | ID determinista del cambio |
userId | string | ID de usuario codificado (p. ej., user_abc123) |
userEmail | string | Dirección de correo electrónico del usuario |
source | "TAB" | "COMPOSER" |
model | string | null |
totalLinesAdded | number | Total de líneas añadidas |
totalLinesDeleted | number | Total de líneas eliminadas |
createdAt | string | Marca de tiempo de ingesta (formato ISO) |
metadata | Array | Metadatos del archivo (fileName puede omitirse en modo de privacidad) |
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?startDate=14d&endDate=now&page=1&pageSize=200" \ -u YOUR_API_KEY:Respuesta:
{ "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}Descargar métricas de cambios de código de IA (CSV, en flujo)
/analytics/ai-code/changes.csvDescarga datos de métricas de cambios en formato CSV para extraer grandes volúmenes de datos.
Parámetros
startDate string | date
endDate string | date
user string
Encabezados de respuesta
- Content-Type: text/csv; charset=utf-8
Columnas CSV
| Columna | Tipo | Descripción |
|---|---|---|
change_id | string | ID determinista del cambio |
user_id | string | ID de usuario codificado |
user_email | string | Dirección de correo electrónico del usuario |
source | string | Origen del cambio de IA (TAB o COMPOSER) |
model | string | Modelo de IA utilizado |
total_lines_added | number | Total de líneas añadidas |
total_lines_deleted | number | Total de líneas eliminadas |
created_at | string | Marca de tiempo de ingesta (formato ISO) |
metadata_json | string | Array de entradas de metadatos serializado en JSON |
curl -L "https://api.cursor.com/analytics/ai-code/changes.csv?startDate=30d&endDate=now" \ -u YOUR_API_KEY: \ -o changes.csvEjemplo de salida 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}]"Obtener detalles del commit
/analytics/ai-code/commits/:commitHashObtiene información detallada de uno o varios commits, incluidas anotaciones de blame y metadatos de las conversaciones referenciadas.
Este endpoint está en una fase alfa limitada y solo está disponible para usuarios seleccionados. La estructura de las respuestas puede cambiar.
Parámetros de ruta
commitHash string
abc123,def456)Parámetros de consulta
branch string
Campos de respuesta
Devuelve un objeto con los arrays commits y conversations.
| Campo | Tipo | Descripción | ||
|---|---|---|---|---|
commits | array | Array de objetos de commit con anotaciones de blame | ||
commits[].commitSource | "ide" | "cli" | "cloud" | Origen del commit. |
commits[].rangeAnnotations | array | Datos de blame del commit a nivel de archivo | ||
commits[].rangeAnnotations[].filePath | string | Ruta del archivo dentro del repositorio | ||
commits[].rangeAnnotations[].groups | array | Array de grupos de anotaciones | ||
commits[].rangeAnnotations[].groups[].conversationId | string | null | ID de la conversación que generó este código | |
commits[].rangeAnnotations[].groups[].model | string | null | Modelo de IA utilizado para generar el código | |
commits[].rangeAnnotations[].groups[].operationType | string | Tipo de operación realizada | ||
commits[].rangeAnnotations[].groups[].ranges | array | Array de rangos de líneas afectados por esta anotación | ||
commits[].rangeAnnotations[].groups[].ranges[].start | number | Número de línea inicial | ||
commits[].rangeAnnotations[].groups[].ranges[].end | number | Número de línea final | ||
conversations | array | Metadatos de todas las conversaciones referenciadas | ||
conversations[].id | string | Identificador único de la conversación | ||
conversations[].title | string | null | Título de la conversación | |
conversations[].tldr | string | null | Resumen breve | |
conversations[].overview | string | null | Descripción detallada | |
conversations[].summaryBullets | array | null | Array de puntos del resumen |
El formato de respuesta es el mismo incluso al solicitar un solo commit.
Un solo commit:
curl -X GET "https://api.cursor.com/analytics/ai-code/commits/0aabf603dc906e05bf5e4d9fd423fdd517f2e43f?branch=main" \ -u YOUR_API_KEY:Varios commits:
curl -X GET "https://api.cursor.com/analytics/ai-code/commits/abc123,def456,ghi789" \ -u YOUR_API_KEY:Respuesta:
{ "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": "Refactor analytics module", "tldr": "Extracted report generation into separate functions", "overview": "Refactored the analytics module to improve maintainability by extracting report generation logic.", "summaryBullets": [ "Created dedicated report generator class", "Added unit tests for new functions", "Updated imports across affected files" ] } ]}Parámetros de consulta comunes
Todos los endpoints aceptan los mismos parámetros de consulta en la cadena de consulta:
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
startDate | string | date | No |
endDate | string | date | No |
page | number | No | número de página (indexado desde 1). predeterminado: 1 |
pageSize | number | No | resultados por página. predeterminado: 100; máximo: 1000 |
user | string | No | Filtro opcional por un único usuario. Acepta correo electrónico (p. ej., [email protected]), ID codificado (p. ej., user_abc123...) o ID numérico (p. ej., 42) |
Las respuestas devuelven userId como un ID externo codificado con el prefijo user_. Este ID es estable para el consumo de la API.
Semántica y cálculo de métricas
- Fuentes: "TAB" representa las completaciones en línea aceptadas; "COMPOSER" representa los diffs aceptados de las ediciones del Agente
- Métricas de líneas: tabLinesAdded/Deleted y composerLinesAdded/Deleted se contabilizan por separado; nonAiLinesAdded/Deleted se genera automáticamente como max(0, totalLines - líneas de IA)
- Modo de privacidad: Si está activado en el cliente, es posible que se omitan algunos metadatos (como fileName)
- 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 notifican los commits y cambios.
Consejos
- Usa el parámetro
userpara filtrar rápidamente por un único usuario en todos los endpoints - Para extraer grandes volúmenes de datos, usa preferentemente los endpoints CSV: transmiten páginas de 10.000 registros desde el servidor
isPrimaryBranchpuede no estar definido si el cliente no pudo resolver la rama predeterminadacommitTses la marca de tiempo del commit;createdAtes la hora de ingestión en nuestros servidores- Es posible que falten algunos campos cuando el modo de privacidad está activado en el cliente
- Los hashes de commit no son únicos ni inmutables. Por ejemplo, podrías ver el mismo commit dos veces si modificas commits con información adicional.
- Las marcas de tiempo de los commits no cambian aunque se modifique el commit.
Registro de cambios
- Versión alfa: Endpoints iniciales para commits y cambios. Las estructuras de respuesta pueden evolucionar según los comentarios recibidos
AI Code Tracking está disponible en el plan Enterprise
Contacta con nuestro equipo para acceder a métricas detalladas de consumo de IA.