Saltar al contenido principal
Accede a analíticas de código generadas por IA para los repositorios de tu equipo. Incluye uso de IA por commit y cambios de IA aceptados a nivel granular.
La API está en su primera versión. Estamos ampliando funcionalidades según el feedback; ¡cuéntanos qué endpoints necesitas!
  • Disponibilidad: Solo para equipos Enterprise
  • Estado: Alpha (las estructuras y los campos de la respuesta pueden cambiar)

Autenticación

Todas las solicitudes a la API requieren autenticación con una clave de API. Esta API usa el mismo método de autenticación del Admin API que otros endpoints. Para ver instrucciones detalladas de autenticación, consulta Autenticación del Admin API.

URL base

Todas las rutas de la API usan:
https://api.cursor.com

Límites de uso

  • 5 solicitudes por minuto por equipo y por endpoint

Parámetros de consulta

Todos los endpoints a continuación aceptan los mismos parámetros a través del query string:
ParámetroTipoObligatorioDescripción
startDatestringdateNoCadena de fecha ISO, el literal “now” o días relativos como “7d” (equivale a ahora - 7 días). Predeterminado: ahora - 7 días
endDatestringdateNoCadena de fecha ISO, el literal “now” o días relativos como “0d”. Predeterminado: ahora
pagenumberNoNúmero de página (base 1). Predeterminado: 1
pageSizenumberNoResultados por página. Predeterminado: 100, máx.: 1000
userstringNoFiltro opcional por un único usuario. Acepta email (p. ej., developer@company.com), 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_. Esto es estable para el consumo por API.

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

  • Origen: “TAB” representa las completions en línea aceptadas; “COMPOSER” representa diffs aceptados desde Composer
  • Métricas de líneas: tabLinesAdded/Deleted y composerLinesAdded/Deleted se cuentan por separado; nonAiLinesAdded/Deleted se calculan como max(0, totalLines - AI lines)
  • Modo de privacidad: Si está habilitado en el cliente, puede omitirse cierta metadata (como fileName)
  • Información de la rama: isPrimaryBranch es true cuando la rama actual es igual a la rama predeterminada del repo; puede ser undefined si la info del repo no está disponible
Podés escanear ese archivo para entender cómo se detectan y reportan los commits y cambios.

Endpoints

Obtener métricas de commits con IA (JSON, paginadas)

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

Respuesta

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

Campos de AiCommitMetric

CampoTipoDescripción
commitHashstringHash del commit de Git
userIdstringID de usuario codificado (p. ej., user_abc123)
userEmailstringDirección de correo electrónico del usuario
repoNamestringnullNombre del repositorio
branchNamestringnullNombre de la rama
isPrimaryBranchbooleannullIndica si 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 mediante autocompletado con TAB
tabLinesDeletednumberLíneas eliminadas mediante autocompletado con TAB
composerLinesAddednumberLíneas añadidas mediante Composer
composerLinesDeletednumberLíneas eliminadas mediante Composer
nonAiLinesAddednumbernullLíneas no generadas por IA añadidas
nonAiLinesDeletednumbernullLíneas no generadas por IA eliminadas
messagestringnullMensaje del commit
commitTsstringnullMarca de tiempo del commit (formato ISO)
createdAtstringMarca de tiempo 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: extraer cliente de analíticas",
      "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 TU_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 TU_API_KEY:

Descargar métricas de commits con IA (CSV, streaming)

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

Respuesta

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

Columnas del CSV

ColumnaTipoDescripción
commit_hashstringHash del commit de Git
user_idstringID de usuario codificado
user_emailstringDirección de correo electrónico del usuario
repo_namestringNombre del repositorio
branch_namestringNombre de la rama
is_primary_branchbooleanSi 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 con autocompletado por TAB
tab_lines_deletednumberLíneas eliminadas con autocompletado por TAB
composer_lines_addednumberLíneas añadidas con Composer
composer_lines_deletednumberLíneas eliminadas con Composer
non_ai_lines_addednumberLíneas no generadas por IA añadidas
non_ai_lines_deletednumberLíneas no generadas por IA eliminadas
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: extraer cliente de analítica",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,"Añadir manejo de errores",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 TU_API_KEY: \
  -o commits.csv

Obtener métricas de cambios de IA (JSON, paginadas)

Obtén cambios de IA aceptados a nivel granular, agrupados por un changeId determinista. Útil para analizar eventos de IA aceptados de forma independiente a los commits.
GET /analytics/ai-code/changes

Respuesta

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

Campos de AiCodeChangeMetric

CampoTipoDescripción
changeIdstringID determinista del cambio
userIdstringID de usuario codificado (p. ej., user_abc123)
userEmailstringDirección de correo del usuario
source”TAB""COMPOSER”Origen del cambio generado por IA
modelstringnullModelo de IA usado
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 el modo de privacidad)

Respuesta de ejemplo

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

Descargar métricas de cambios de código con IA (CSV, streaming)

Descarga métricas de cambios en formato CSV para extracciones de datos a gran escala.
GET /analytics/ai-code/changes.csv

Respuesta

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

Columnas del CSV

ColumnaTipoDescripción
change_idstringID determinista del cambio
user_idstringID de usuario codificado
user_emailstringDirección de correo del usuario
sourcestringOrigen del cambio de IA (TAB o COMPOSER)
modelstringModelo de IA utilizado
total_lines_addednumberTotal de líneas agregadas
total_lines_deletednumberTotal de líneas eliminadas
created_atstringMarca de tiempo de ingesta (formato ISO)
metadata_jsonstringArreglo de entradas de metadatos serializado en JSON

Notas

  • metadata_json es un arreglo de entradas de metadatos serializado en JSON (puede omitir fileName en modo de privacidad)
  • Al consumir CSV, asegúrate de analizar los campos entre comillas

Salida de ejemplo en 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 TU_API_KEY: \
  -o changes.csv

Consejos

  • Usa el parámetro user para filtrar rápido a un solo usuario en todos los endpoints
  • Para extracciones de datos grandes, prefiere los endpoints CSV: hacen streaming 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 la hora de ingesta en nuestros servidores
  • Algunos campos pueden estar ausentes cuando el modo de privacidad está habilitado en el cliente

Registro de cambios

  • Versión alfa: Endpoints iniciales para commits y cambios. Las formas de las respuestas pueden evolucionar según el feedback
I