Passer au contenu principal
Accède aux analytics de code générées par l’IA pour les dépôts de ton équipe. Ça inclut l’usage de l’IA par commit ainsi que le détail des modifications d’IA acceptées.
L’API est en première release. On étend les capacités selon les retours — dis-nous quels endpoints tu veux !
  • Disponibilité: Réservée aux équipes Enterprise
  • Statut: Alpha (la structure des réponses et les champs peuvent changer)

Authentification

Toutes les requêtes à l’API nécessitent une authentification avec une clé d’API. Cette API utilise le même mécanisme d’authentification de l’Admin API que les autres endpoints. Pour des instructions détaillées sur l’authentification, vois Admin API authentication.

URL de base

Toutes les routes de l’API utilisent :
https://api.cursor.com

Limites de débit

  • 5 requêtes par minute et par équipe, par endpoint

Paramètres de requête

Tous les endpoints ci-dessous acceptent les mêmes paramètres via la chaîne de requête :
ParamètreTypeRequisDescription
startDatestringdateNonChaîne de date ISO, le littéral “now”, ou des jours relatifs comme “7d” (équivaut à 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 (indexé à partir de 1). Par défaut : 1
pageSizenumberNonRésultats par page. Par défaut : 100, max : 1000
userstringNonFiltre optionnel par un seul utilisateur. Accepte une adresse e-mail (p. ex. developer@company.com), un ID encodé (p. ex. user_abc123…), ou un ID numérique (p. ex. 42)
Les réponses renvoient userId comme ID externe encodé avec le préfixe user_. C’est stable pour une consommation via l’API.

Sémantique et calcul des métriques

  • Sources : “TAB” correspond aux complétions en ligne acceptées ; “COMPOSER” correspond aux diffs acceptés depuis Composer
  • Métriques de lignes : tabLinesAdded/Deleted et composerLinesAdded/Deleted sont comptées séparément ; nonAiLinesAdded/Deleted sont calculées comme max(0, totalLines - AI lines)
  • Mode confidentialité : S’il est activé côté client, certaines métadonnées (comme fileName) peuvent être omises
  • Infos de branche : isPrimaryBranch vaut true lorsque la branche actuelle est la branche par défaut du dépôt ; peut être undefined si les infos du dépôt ne sont pas disponibles
Tu peux parcourir 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 commits IA (JSON, paginées)

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

Réponses

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

Champs AiCommitMetric

ChampTypeDescription
commitHashstringHachage du commit Git
userIdstringID utilisateur encodé (p. ex. user_abc123)
userEmailstringAdresse e-mail de l’utilisateur
repoNamestringnullNom du dépôt
branchNamestringnullNom de la branche
isPrimaryBranchbooleannullIndique s’il s’agit de la branche principale
totalLinesAddednumberNombre total de lignes ajoutées dans le commit
totalLinesDeletednumberNombre total de lignes supprimées dans le commit
tabLinesAddednumberLignes ajoutées via des complétions Tab
tabLinesDeletednumberLignes supprimées via des complétions Tab
composerLinesAddednumberLignes ajoutées via Composer
composerLinesDeletednumberLignes supprimées via Composer
nonAiLinesAddednumbernullLignes non AI ajoutées
nonAiLinesDeletednumbernullLignes non AI supprimées
messagestringnullMessage de commit
commitTsstringnullHorodatage du commit (format ISO)
createdAtstringHorodatage 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 : extraire le client d’analytics"
      "commitTs": "2025-07-30T14:12:03.000Z",
      "createdAt": "2025-07-30T14:12:30.000Z"
    }
  ],
  "totalCount": 42,
  "page": 1,
  "pageSize": 100
}

Exemples de demandes

Demande simple :
curl -X GET "https://api.cursor.com/analytics/ai-code/commits?startDate=7d&endDate=now&page=1&pageSize=100" \
  -u TA_CLÉ_API:
Filtrer par utilisateur (e-mail) :
curl -X GET "https://api.cursor.com/analytics/ai-code/commits?startDate=2025-06-01T00:00:00Z&endDate=now&user=developer@company.com" \
  -u TA_CLEF_API:

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

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

Réponse

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

Colonnes CSV

ColonneTypeDescription
commit_hashstringHash de 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 s’il s’agit de la branche par défaut
total_lines_addednumberNombre total de lignes ajoutées dans le commit
total_lines_deletednumberNombre total de 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 non IA ajoutées
non_ai_lines_deletednumberLignes non IA supprimées
messagestringMessage de commit
commit_tsstringHorodatage du commit (format ISO)
created_atstringHorodatage 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,"Refactorisation : extraction du client d’analytics",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,"Ajout de la gestion des erreurs",2025-07-30T13:45:21.000Z,2025-07-30T13:45:45.000Z

Exemple de demande

curl -L "https://api.cursor.com/analytics/ai-code/commits.csv?startDate=2025-07-01T00:00:00Z&endDate=now&user=user_3k9x8q..." \
  -u TA_CLÉ_API: \
  -o commits.csv

Obtenir des métriques sur les changements de code IA (JSON, paginées)

Récupère des changements IA acceptés à un niveau granulaire, regroupés par changeId déterministe. Utile pour analyser les événements IA acceptés indépendamment des commits.
GET /analytics/ai-code/changes

Réponses

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

Champs AiCodeChangeMetric

ChampTypeDescription
changeIdstringID déterministe de la modification
userIdstringID utilisateur encodé (p. ex. user_abc123)
userEmailstringAdresse e-mail de l’utilisateur
source”TAB""COMPOSER”Origine de la modification par l’IA
modelstringnullModèle d’IA utilisé
totalLinesAddednumberNombre total de lignes ajoutées
totalLinesDeletednumberNombre total de lignes supprimées
createdAtstringHorodatage d’ingestion (format ISO)
metadataArrayMétadonnées de fichier (fileName peut être omis en mode confidentialité)

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 demandes

Demande de base :
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?startDate=14d&endDate=now&page=1&pageSize=200" \
  -u VOTRE_CLÉ_API:
Filtrer par utilisateur (ID encodé) :
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?user=user_3k9x8q..." \
  -u TA_CLÉ_API:
Filtrer par utilisateur (e-mail) :
curl -X GET "https://api.cursor.com/analytics/ai-code/changes?user=developer@company.com" \
  -u VOTRE_CLE_API:

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

Télécharge les métriques de modifications au format CSV pour de larges extractions 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 de la modification
user_idstringID utilisateur encodé
user_emailstringAdresse e-mail de l’utilisateur
sourcestringOrigine de la modification par l’IA (TAB ou COMPOSER)
modelstringModèle d’IA utilisé
total_lines_addednumberNombre total de lignes ajoutées
total_lines_deletednumberNombre total de lignes supprimées
created_atstringHorodatage 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 confidentialité)
  • Lors de la lecture du CSV, pense à 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 demande

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

Conseils

  • Utilise le paramètre user pour filtrer rapidement un utilisateur donné sur tous les endpoints
  • Pour de larges extractions de données, privilégie les endpoints CSV — ils diffusent côté serveur par pages de 10 000 enregistrements
  • isPrimaryBranch peut être indéfini si le client n’a pas pu déterminer 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 confidentialité est activé côté client

Journal des modifications

  • Version alpha : Premiers endpoints pour les commits et les modifications. Les formats de réponse pourront évoluer en fonction des retours
I