Accede a analíticas de código generadas por IA para los repositorios de tu equipo. Esto incluye el uso de IA por commit, así como cambios de IA aceptados a nivel granular.
La API está en su primera versión. Estamos ampliando las capacidades según tus comentarios: ¡cuéntanos qué endpoints necesitas!
  • Disponibilidad: Solo para equipos Enterprise
  • Estado: Alpha (las estructuras y los campos de las respuestas pueden cambiar)

Autenticación

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

URL base

Todos los endpoints 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 de consulta vía query string:
ParameterTypeRequiredDescription
startDatestringdateNoCadena de fecha ISO, el literal “now” o días relativos como “7d” (equivale a now - 7 days). Predeterminado: now - 7 days
endDatestringdateNoCadena de fecha ISO, el literal “now” o días relativos como “0d”. Predeterminado: now
pagenumberNoNúmero de página (base 1). Predeterminado: 1
pageSizenumberNoResultados por página. Predeterminado: 100, máx.: 1000
userstringNoFiltro opcional por un solo 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 consumo vía API.

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

  • Fuentes: “TAB” representa las completions en línea aceptadas; “COMPOSER” representa los diffs aceptados desde Composer
  • Métricas de líneas: tabLinesAdded/Deleted y composerLinesAdded/Deleted se cuentan por separado; nonAiLinesAdded/Deleted se derivan como max(0, totalLines - AI lines)
  • Modo de privacidad: Si está habilitado en el cliente, puede omitirse parte de los metadatos (como fileName)
  • Información de la rama: isPrimaryBranch es true cuando la rama actual coincide con la rama predeterminada del repo; puede ser undefined si la info del repo 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 con 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

FieldTypeDescription
commitHashstringHash del commit de Git
userIdstringID de usuario codificado (p. ej., user_abc123)
userEmailstringCorreo electrónico del usuario
repoNamestringnullNombre del repositorio
branchNamestringnullNombre de la rama
isPrimaryBranchbooleannullSi es la rama principal
totalLinesAddednumberTotal de líneas agregadas en el commit
totalLinesDeletednumberTotal de líneas eliminadas en el commit
tabLinesAddednumberLíneas agregadas mediante completados con TAB
tabLinesDeletednumberLíneas eliminadas mediante completados con TAB
composerLinesAddednumberLíneas agregadas mediante Composer
composerLinesDeletednumberLíneas eliminadas mediante Composer
nonAiLinesAddednumbernullLíneas no IA agregadas
nonAiLinesDeletednumbernullLíneas no IA eliminadas
messagestringnullMensaje del commit
commitTsstringnullMarca de tiempo del commit (formato ISO)
createdAtstringMarca de tiempo de ingesta (formato ISO)

Respuesta de ejemplo

{
  "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 (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:

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

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

Respuesta

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

Columnas del CSV

ColumnTypeDescription
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_branchbooleanIndica si 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 mediante autocompletado con TAB
tab_lines_deletednumberLíneas eliminadas mediante autocompletado con TAB
composer_lines_addednumberLíneas añadidas mediante Composer
composer_lines_deletednumberLíneas eliminadas mediante 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)

Salida CSV de ejemplo

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

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

Respuesta

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

Campos de AiCodeChangeMetric

FieldTypeDescription
changeIdstringID determinista del cambio
userIdstringID de usuario codificado (p. ej., user_abc123)
userEmailstringDirección de correo electrónico 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 de 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 (correo):
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 con IA (CSV, streaming)

Descarga los datos de 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

ColumnTypeDescription
change_idstringID determinístico del cambio
user_idstringID de usuario codificado
user_emailstringCorreo 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_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 parsear los campos entrecomillados

Salida CSV de ejemplo

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

Solicitud de ejemplo

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 a un solo usuario en todos los endpoints
  • Para extracciones de datos grandes, prefiere los endpoints CSV: envían datos en páginas de 10.000 registros desde el 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
  • Es posible que falten algunos campos cuando el modo de privacidad está habilitado en el cliente

Registro de cambios

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