Skip to main content
GET
Récupérer l’analyse de la consommation
Il s’agit d’un endpoint v2 qui utilise l’authentification par jeton Bearer et des paramètres de requête, contrairement à l’Analytics API v1, qui utilise des clés de service dans le corps de la requête. Consultez Authentification ci-dessous.
Cet endpoint n’est pas conçu pour le suivi de l’utilisation en temps réel. Les données sont agrégées à l’heure, et la limite de débit est basse (10 requêtes par heure et par Team). Utilisez-le pour les rapports périodiques et les exportations en masse.

Authentification

Cet endpoint utilise l’authentification par jeton Bearer. Incluez votre jeton dans l’en-tête Authorization :
Utilisez soit une API key d’utilisateur de service Devin disposant de l’autorisation Use Local Analytics API, soit une clé de service Windsurf disposant de l’autorisation Analytics Read. Consultez la section Authentification pour savoir comment les créer.

Stratégie de facturation

La structure de la réponse dépend de la stratégie de facturation de votre Team : Les champs message_count et user_message_count (dans consumption) sont renvoyés quelle que soit la stratégie de facturation. user_message_count ne comptabilise que les messages envoyés par un utilisateur à l’agent, quel que soit le client utilisé (Devin Desktop, le plugin JetBrains ou la CLI) ; il correspond au nombre de « messages envoyés » affiché dans l’interface d’analyse. message_count comptabilise chaque événement de facturation, y compris les requêtes consécutives adressées au modèle et aux outils au sein de chaque tour. user_message_count vaut null pour les lignes sans attribution à un message utilisateur (utilisation antérieure au 2026-04-11).

Regroupement et granularité

Utilisez granularity et group_by pour contrôler la structure des données renvoyées :
  • Aucune granularité ni aucun regroupement — renvoie une seule ligne agrégée pour l’ensemble de la plage de dates
  • granularity=daily — chaque ligne inclut un timestamp au format YYYY-MM-DD
  • granularity=monthly — chaque ligne inclut un timestamp au format YYYY-MM
  • group_by=user — chaque ligne inclut un user_id et un user_email
  • group_by=user,model_uid — chaque ligne inclut user_id, user_email et model_uid
  • group_by=ide — chaque ligne inclut un ide
  • group_by=ide,ide_version — chaque ligne inclut ide et ide_version (le regroupement par ide_version exige que ide soit également inclus)
  • group_by=os — chaque ligne inclut un os, tel que darwin (macOS), windows ou linux
Pour mesurer ce que l’agent a produit plutôt que ce qu’il a consommé, utilisez Get Output (metric=loc_inserted,loc_deleted), qui renvoie les lignes de code acceptées avec les mêmes filtres et les mêmes dimensions de regroupement.

Pagination

Les résultats sont paginés, avec une taille de page par défaut de 1 000 lignes (max. 10 000). Lorsque d’autres résultats sont disponibles, la réponse inclut un next_page_cursor dans l’objet pagination. Passez-le comme paramètre de requête page_cursor pour récupérer la page suivante. Les curseurs de page expirent au bout de 24 heures. Une requête pour une page suivante n’est pas comptabilisée comme une nouvelle requête dans votre limite de débit.

Limites de débit

Cet endpoint est soumis à une limite de 10 requêtes par heure par Team. Si vous dépassez cette limite, le serveur renvoie 429 Too Many Requests avec un en-tête Retry-After. La pagination d’une requête antérieure (en suivant un next_page_cursor) n’est pas décomptée de cette limite — seule la requête initiale de chaque rapport l’est. Cette faible limite s’explique par le fait que cet endpoint est destiné à des rapports périodiques, et non au suivi de l’utilisation en temps réel.

Autorisations

Authorization
string
header
requis

Une clé de service disposant de l’autorisation Analytics Read, transmise comme jeton Bearer dans l’en-tête Authorization.

Créez une clé de service dans les paramètres de votre Team, à l’adresse team settings, dans la section "Service Keys".

Paramètres de requête

start_date
string<date>
requis

Début de la plage de dates (inclus) au format YYYY-MM-DD.

end_date
string<date>
requis

Fin de la plage de dates (incluse) au format YYYY-MM-DD. La plage ne doit pas dépasser 90 jours.

product
enum<string>
requis

Produit pour lequel interroger la consommation.

Options disponibles:
agent
granularity
enum<string>

Granularité temporelle pour regrouper les résultats. Lorsqu’elle est spécifiée, chaque ligne inclut un champ timestamp. Si elle est omise, les résultats sont agrégés sur l’ensemble de la plage de dates.

Options disponibles:
daily,
monthly
group_by
string

Liste de dimensions, séparées par des virgules, permettant de regrouper les résultats. Dimensions prises en charge :

  • user — inclut user_id et user_email dans chaque ligne
  • model_uid — inclut model_uid dans chaque ligne
  • ide — inclut ide dans chaque ligne
  • ide_version — inclut ide_version dans chaque ligne ; nécessite que ide soit également inclus
  • os — inclut os dans chaque ligne
models
string

Liste des UID de modèle, séparés par des virgules, auxquels filtrer les résultats.

group_id
string

Filtrez les résultats pour ne conserver que les users d’un groupe spécifique. La clé de service doit avoir accès à ce groupe.

user_id
string

Filtrez les résultats pour ne conserver qu’un user spécifique (UID d’authentification).

page_size
integer
défaut:1000

Nombre maximal de lignes à renvoyer par page.

Plage requise: 1 <= x <= 10000
page_cursor
string

Curseur opaque provenant de pagination.next_page_cursor dans une réponse précédente, permettant de récupérer la page suivante.

Réponse

Données de consommation renvoyées avec succès.

data
object[]
requis

Tableau de lignes de données de consommation.

pagination
object
requis
metadata
object
requis