Accède aux analyses de code généré par IA pour les dépôts de ton équipe. Cela inclut l’utilisation de l’IA par commit ainsi que les modifications IA acceptées avec un niveau de détail granulaire.
L’API en est à sa première version. Nous étendons les fonctionnalités en fonction des retours - dis-nous de quels endpoints tu as besoin !
  • Disponibilité : Uniquement pour les équipes entreprise
  • Statut : Alpha (la structure des réponses et les champs peuvent changer)

Authentification

Toutes les requêtes API nécessitent une authentification à l’aide d’une clé API. Cette API utilise le même système d’authentification Admin API que les autres points de terminaison. Pour des instructions d’authentification détaillées, consulte Authentification Admin API.

URL de base

Tous les points de terminaison de l’API utilisent :
https://api.cursor.com

Limites de débit

  • 5 requêtes par minute par équipe, par point de terminaison

Paramètres de requête

Tous les endpoints ci-dessous acceptent les mêmes paramètres de requête via la chaîne de requête :
ParamètreTypeRequisDescription
startDatestringdateNonChaîne de date ISO, le littéral “now”, ou des jours relatifs comme “7d” (signifie maintenant - 7 jours). Par défaut : maintenant - 7 jours
endDatestringdateNonChaîne de date ISO, le littéral “now”, ou des jours relatifs comme “0d”. Par défaut : maintenant
pagenumberNonNuméro de page (basé sur 1). Par défaut : 1
pageSizenumberNonRésultats par page. Par défaut : 100, Max : 1000
userstringNonFiltre optionnel par utilisateur unique. Accepte l’email (ex. : developer@company.com), l’ID encodé (ex. : user_abc123…), ou l’ID numérique (ex. : 42)
Les réponses retournent userId comme un ID externe encodé avec le préfixe user_. Celui-ci est stable pour la consommation d’API.

Sémantique et calcul des métriques

  • Sources : « TAB » représente les complétions inline acceptées ; « COMPOSER » représente les diffs acceptés provenant de Composer
  • Métriques des lignes : tabLinesAdded/Deleted et composerLinesAdded/Deleted sont comptées séparément ; nonAiLinesAdded/Deleted sont calculées comme max(0, totalLines - lignes d’IA)
  • Mode de confidentialité : s’il est activé côté client, certaines métadonnées (comme fileName) peuvent être omises
  • Informations sur la branche : isPrimaryBranch est true lorsque la branche courante correspond à la branche par défaut du repo ; peut être undefined si les informations du repo ne sont pas disponibles
Tu peux consulter ce fichier pour comprendre comment les commits et les modifications sont détectés et signalés.

Endpoints

Récupérer les métriques de commit IA (JSON, paginé)

Récupère les métriques agrégées par commit qui attribuent les lignes à TAB, COMPOSER et non-IA.
GET /analytics/ai-code/commits

Réponse

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

Champs AiCommitMetric

ChampTypeDescription
commitHashstringHash du commit Git
userIdstringID utilisateur encodé (ex. user_abc123)
userEmailstringAdresse email de l’utilisateur
repoNamestringnullNom du dépôt
branchNamestringnullNom de la branche
isPrimaryBranchbooleannullIndique si c’est la branche principale
totalLinesAddednumberTotal des lignes ajoutées dans le commit
totalLinesDeletednumberTotal des lignes supprimées dans le commit
tabLinesAddednumberLignes ajoutées via les complétions TAB
tabLinesDeletednumberLignes supprimées via les complétions TAB
composerLinesAddednumberLignes ajoutées via Composer
composerLinesDeletednumberLignes supprimées via Composer
nonAiLinesAddednumbernullLignes non-IA ajoutées
nonAiLinesDeletednumbernullLignes non-IA supprimées
messagestringnullMessage du commit
commitTsstringnullTimestamp du commit (format ISO)
createdAtstringTimestamp d’ingestion (format ISO)

Exemple de réponse

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

Exemples de requêtes

Requête de base :
curl -X GET "https://api.cursor.com/analytics/ai-code/commits?startDate=7d&endDate=now&page=1&pageSize=100" \
  -u YOUR_API_KEY:
Filtrer par utilisateur (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:

Télécharger les métriques de commit IA (CSV, streaming)

Télécharge les données de métriques de commit au format CSV pour les extractions de gros volumes de données.
GET /analytics/ai-code/commits.csv

Réponse

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

Colonnes CSV

ColonneTypeDescription
commit_hashstringHash du commit Git
user_idstringID utilisateur encodé
user_emailstringAdresse e-mail de l’utilisateur
repo_namestringNom du dépôt
branch_namestringNom de la branche
is_primary_branchbooleanIndique si c’est la branche principale
total_lines_addednumberTotal des lignes ajoutées dans le commit
total_lines_deletednumberTotal des lignes supprimées dans le commit
tab_lines_addednumberLignes ajoutées via les complétions TAB
tab_lines_deletednumberLignes supprimées via les complétions TAB
composer_lines_addednumberLignes ajoutées via Composer
composer_lines_deletednumberLignes supprimées via Composer
non_ai_lines_addednumberLignes ajoutées sans IA
non_ai_lines_deletednumberLignes supprimées sans IA
messagestringMessage du commit
commit_tsstringTimestamp du commit (format ISO)
created_atstringTimestamp d’ingestion (format ISO)

Exemple de sortie 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

Exemple de requête

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

Récupérer les métriques de changements de code IA (JSON, paginé)

Récupère les changements IA acceptés de manière granulaire, groupés par changeId déterministe. Pratique pour analyser les événements IA acceptés indépendamment des commits.
GET /analytics/ai-code/changes

Réponse

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

Champs AiCodeChangeMetric

ChampTypeDescription
changeIdstringID déterministe pour le changement
userIdstringID utilisateur encodé (ex : user_abc123)
userEmailstringAdresse e-mail de l’utilisateur
source”TAB""COMPOSER”Source du changement IA
modelstringnullModèle IA utilisé
totalLinesAddednumberTotal des lignes ajoutées
totalLinesDeletednumberTotal des lignes supprimées
createdAtstringTimestamp d’ingestion (format ISO)
metadataArrayMétadonnées du fichier (fileName peut être omis en mode privé)

Exemple de réponse

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

Exemples de requêtes

Requête basique :
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?startDate=14d&endDate=now&page=1&pageSize=200" \
  -u YOUR_API_KEY:
Filtrer par utilisateur (ID encodé) :
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?user=user_3k9x8q..." \
  -u YOUR_API_KEY:
Filtrer par utilisateur (email) :
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?user=developer@company.com" \
  -u YOUR_API_KEY:

Télécharger les métriques de modifications de code IA (CSV, streaming)

Télécharge les données de métriques de modifications au format CSV pour l’extraction de gros volumes de données.
GET /analytics/ai-code/changes.csv

Réponse

En-têtes :
  • Content-Type: text/csv; charset=utf-8

Colonnes CSV

ColonneTypeDescription
change_idstringID déterministe pour la modification
user_idstringID utilisateur encodé
user_emailstringAdresse email de l’utilisateur
sourcestringSource de la modification IA (TAB ou COMPOSER)
modelstringModèle IA utilisé
total_lines_addednumberTotal de lignes ajoutées
total_lines_deletednumberTotal de lignes supprimées
created_atstringTimestamp d’ingestion (format ISO)
metadata_jsonstringTableau de métadonnées sérialisé en JSON

Notes

  • metadata_json est un tableau de métadonnées sérialisé en JSON (peut omettre fileName en mode privé)
  • Lors de la consommation du CSV, assure-toi de parser les champs entre guillemets

Exemple de sortie 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}]"

Exemple de requête

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

Conseils

  • Utilise le paramètre user pour filtrer rapidement un seul utilisateur sur tous les endpoints
  • Pour les extractions de données volumineuses, privilégie les endpoints CSV—ils diffusent en continu par pages de 10 000 enregistrements côté serveur
  • isPrimaryBranch peut être undefined si le client n’a pas pu résoudre la branche par défaut
  • commitTs est l’horodatage du commit ; createdAt est l’heure d’ingestion sur nos serveurs
  • Certains champs peuvent être absents lorsque le mode privé est activé sur le client

Changelog

  • Version alpha : Endpoints initiaux pour les commits et les changements. La forme des réponses peut évoluer selon les retours