> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Tool-Aufrufe des Devin-Agenten abrufen

> Zählen Sie die Tool-Aufrufe des Agenten, etwa Websuche oder Befehlsausführung, die Ihr Team in Devin Desktop und der Devin CLI getätigt hat – gruppiert nach Tool, Nutzer, Modell, IDE oder Betriebssystem.

<Note>
  Dies ist ein **v2-Endpunkt**, der Bearer-Token-Authentifizierung und Query-Parameter verwendet – im Gegensatz zur v1-Analytics-API, bei der Service-Schlüssel im Request-Body übergeben werden. Siehe [Authentifizierung](#authentication) weiter unten.
</Note>

<Warning>
  Dieser Endpunkt ist **nicht** für das Echtzeit-Monitoring der Nutzung vorgesehen. Das Ratenlimit ist niedrig
  (10 Anfragen pro Stunde und Team). Verwenden Sie ihn für regelmäßige Berichte und Massenexporte.
</Warning>

<h2 id="authentication">
  Authentifizierung
</h2>

Dieser Endpunkt verwendet **Bearer-Token**-Authentifizierung. Geben Sie Ihr Token im `Authorization`-Header an:

```
Authorization: Bearer <your_token>
```

Verwenden Sie entweder einen Devin-Dienstbenutzer-API-Schlüssel mit der Berechtigung **Lokale Analyse-API verwenden** oder einen Windsurf-Service-Schlüssel
mit der Berechtigung **Analysen lesen**. Unter
[Authentifizierung](/de/desktop/accounts/api-reference/analytics-v2-introduction#authentication) erfahren Sie, wie Sie
die beiden Schlüssel jeweils erstellen.

Anders als die v1-Datenquelle [`cascade_tool_usage`](/de/desktop/accounts/api-reference/cascade-analytics#cascade_tool_usage)
akzeptiert dieser Endpunkt Devin-Dienstbenutzer-API-Schlüssel. Teams auf der Cognition-Plattform können
die Werkzeugnutzung daher auch ohne Windsurf-Service-Schlüssel auswerten.

<h2 id="metrics">
  Kennzahlen
</h2>

Der Query-Parameter `metric` ist erforderlich und akzeptiert derzeit nur `calls`, also die Anzahl der Tool-Aufrufe,
die der Agent ausgeführt hat. Diese Kennzahl erscheint in jeder Zeile als ganzzahliges Feld `calls`. Anfragen ohne `metric` oder
mit einer anderen Kennzahl schlagen mit dem Statuscode `400` fehl.

Tool-Aufrufe werden gezählt, wenn der Agent ein Tool in [Devin Desktop](/de/desktop/introducing-devin-desktop)
oder in der [Devin CLI](/de/cli) aufruft (auch wenn die CLI als Agent in anderen Editoren läuft), und zwar unabhängig vom Modell.
Der Parameter `product` ist ebenfalls erforderlich und akzeptiert derzeit nur `agent`.

<h2 id="tools">
  Tools
</h2>

Gruppieren Sie nach `tool`, um Aufrufe nach Tool-Kategorie aufzuschlüsseln. Jede Zeile enthält dann ein Feld `tool` mit einem der
folgenden Werte:

| Tool | Beschreibung |
| - | - |
| `SEARCH_WEB` | Websuche, Web-Fetch und Browsernutzung |
| `RUN_COMMAND` | Shell-Befehle und Interaktion mit laufenden Prozessen |
| `VIEW_FILE` | Lesen von Dateien und Notebooks |
| `CODE_ACTION` | Bearbeiten, Schreiben und Patchen von Dateien |
| `GREP_SEARCH` | Durchsuchen von Dateiinhalten und Code |
| `FIND` | Suchen von Dateien nach Namen |
| `LIST_DIRECTORY` | Auflisten von Verzeichnissen |
| `MCP_TOOL` | Aufrufen von MCP-Server-Tools und Auflisten von MCP-Servern, Tools oder Ressourcen |
| `SKILL` | Auflisten, Durchsuchen und Aufrufen von Fähigkeiten |
| `ASK_USER_QUESTION` | Stellen von Fragen an den Nutzer |
| `MEMORY` | Lesen und Schreiben von Memorys |
| `PROPOSE_CODE` | Vorschlagen von Codeänderungen |
| `PROXY_WEB_SERVER` | Browservorschau eines lokalen Webservers |
| `DEPLOY_WEB_APP` | Bereitstellen einer Web-App |
| `MQUERY` | Codebasis-Suche (Riptide) |
| `DEEPWIKI` | DeepWiki-Anfragen |
| `CODEMAP_GENERATION`, `CODEMAP_SUGGESTIONS` | Codemaps-Anfragen |
| `OTHER` | Devin CLI-Tools, die keiner der oben genannten Kategorien zugeordnet sind |

Nicht jede Kategorie gilt für jeden Client: `LIST_DIRECTORY`, `MEMORY`, `PROPOSE_CODE`,
`PROXY_WEB_SERVER`, `DEPLOY_WEB_APP` und `MQUERY` werden für den Devin Desktop-Agent aufgezeichnet. Neue
Devin CLI-Tools, denen noch keine Kategorie zugewiesen wurde, werden dagegen unter `OTHER` gezählt.

<h2 id="grouping-and-granularity">
  Gruppierung und Granularität
</h2>

Verwenden Sie `granularity` und `group_by`, um die Struktur der zurückgegebenen Daten zu steuern:

* **Keine Granularität oder Gruppierung** — gibt eine einzige aggregierte Zeile für den gesamten Zeitraum zurück
* **`granularity=daily`** — jede Zeile enthält einen `timestamp` im Format `YYYY-MM-DD`
* **`granularity=monthly`** — jede Zeile enthält einen `timestamp` im Format `YYYY-MM`
* **`group_by=tool`** — jede Zeile enthält ein `tool` (siehe [Tools](#tools) oben)
* **`group_by=user`** — jede Zeile enthält eine `user_id` sowie eine `user_email`, sofern für diesen Nutzer eine hinterlegt ist
* **`group_by=model_uid`** — jede Zeile enthält eine `model_uid`
* **`group_by=ide`** — jede Zeile enthält eine `ide`
* **`group_by=ide,ide_version`** — jede Zeile enthält `ide` und `ide_version` (für die Gruppierung nach `ide_version` muss auch `ide` angegeben sein)
* **`group_by=os`** — jede Zeile enthält ein `os`, zum Beispiel `darwin` (macOS), `windows` oder `linux`

Dimensionen lassen sich kombinieren: `group_by=user,tool` gibt zum Beispiel an, wie oft jeder Nutzer welches
Tool aufgerufen hat. Die Dimensionen `session` und `source` aus [Get Output](/de/desktop/accounts/api-reference/get-output)
werden hier nicht unterstützt. Es gelten dieselben Filter `models`, `group_id` und `user_id` wie bei
[Get Consumption](/de/desktop/accounts/api-reference/get-consumption), zusätzlich ein Filter `tool`, der
die Zählung auf eine Tool-Kategorie beschränkt (zum Beispiel `tool=SEARCH_WEB`). `tool` wird nur von
diesem Endpunkt akzeptiert; wird der Filter an einen anderen Endpunkt der Analytics API v2 übergeben, schlägt die Anfrage mit `400` fehl.

<h2 id="example">
  Beispiel
</h2>

Websuchen pro Nutzer innerhalb einer Woche zählen:

```bash theme={null}
curl "https://server.codeium.com/api/v2alpha/analytics/tools?metric=calls&product=agent&start_date=2026-10-13&end_date=2026-10-19&group_by=user&tool=SEARCH_WEB" \
  -H "Authorization: Bearer $DEVIN_API_KEY"
```

Jede Zeile enthält die `SEARCH_WEB`-Anzahl eines Nutzers. Wenn Sie stattdessen alle
Kategorien pro Nutzer sehen möchten, entfernen Sie den `tool`-Filter und fügen Sie `group_by=user,tool` hinzu.

<h2 id="pagination">
  Paginierung
</h2>

Ergebnisse werden paginiert, die Standard-Seitengröße beträgt 1.000 Zeilen (maximal 10.000). Wenn weitere Ergebnisse verfügbar sind,
enthält die Antwort im Objekt `pagination` einen `next_page_cursor`. Übergeben Sie diesen als Query-Parameter `page_cursor`
in einer Anfrage, die ansonsten dieselben Query-Parameter wie die ursprüngliche Anfrage enthält. Cursor sind an den Endpunkt gebunden, der sie ausgegeben hat; ein Cursor von `/consumption` oder `/output`
wird mit `400` abgelehnt.

Seitencursor laufen nach 24 Stunden ab. Eine Folgeanfrage für eine weitere Seite wird nicht als neue Abfrage auf Ihr Ratenlimit angerechnet.

<h2 id="rate-limits">
  Ratenlimits
</h2>

Dieser Endpunkt ist auf **10 Anfragen pro Stunde** pro Team begrenzt. Wenn Sie dieses Limit überschreiten, gibt der
Server `429 Too Many Requests` mit einem `Retry-After`-Header zurück.

Das Paginieren einer früheren Abfrage (über einen `next_page_cursor`) wird **nicht** auf dieses Limit angerechnet –
es zählt nur die erste Abfrage pro Bericht. Das niedrige Limit ist darauf zurückzuführen, dass dieser Endpunkt für
periodische Berichte gedacht ist und nicht für ein Echtzeit-Monitoring der Nutzung.


## OpenAPI

````yaml de/desktop/accounts/api-reference/analytics-v2-openapi.yaml GET /api/v2alpha/analytics/tools
openapi: 3.1.0
info:
  title: Devin Desktop Analytics API v2
  version: 2.0.0
  description: >
    Die Analytics-API v2 stellt Analysen zum Credit- und ACU-Verbrauch, zu
    aktiven Nutzern, zur Agentenausgabe

    (akzeptierte Codezeilen) und zu Agenten-Tool-Aufrufen für Enterprise-Teams
    bereit. Die Daten stammen aus stündlich aggregierten Daten und unterstützen
    flexible Filterung, Gruppierung

    und cursorbasierte Paginierung.
servers:
  - url: https://server.codeium.com
security:
  - bearerAuth: []
paths:
  /api/v2alpha/analytics/tools:
    get:
      summary: Analysen zu Agenten-Tool-Aufrufen abrufen
      description: >
        Agenten-Tool-Aufrufe für das authentifizierte Team zählen. Der
        erforderliche Parameter `metric` akzeptiert nur

        `calls`: die Anzahl der Tool-Aufrufe des Agenten in Devin Desktop und
        der Devin CLI. Diese wird in jeder Zeile als

        Ganzzahlfeld zurückgegeben. Ergebnisse können nach Datumsbereich,
        Produkt, Modell, Gruppe und Nutzer gefiltert

        und nach denselben Dimensionen wie beim Verbrauch (außer `session`)
        sowie nach `tool` gruppiert werden. `tool` bezeichnet die
        Tool-Kategorie,

        beispielsweise `SEARCH_WEB` oder `RUN_COMMAND`.


        Diese Endpunkte sind für regelmäßige Berichte und Massenexporte
        ausgelegt. Sie sind **nicht** für das Nutzungsmonitoring in Echtzeit
        vorgesehen: Das Ratenlimit ist niedrig (10 Anfragen pro Stunde pro
        Team).
      operationId: getTools
      parameters:
        - name: metric
          in: query
          required: true
          schema:
            type: string
          description: >
            Zurückzugebende Kennzahl; erscheint als Feld in jeder Zeile.
            Unterstützte Kennzahlen:

            - `calls` — Anzahl der Tool-Aufrufe des Agenten
          example: calls
        - name: start_date
          in: query
          required: true
          schema:
            type: string
            format: date
          description: Beginn des Datumsbereichs (einschließlich) im Format `YYYY-MM-DD`.
          example: '2026-10-01T00:00:00.000Z'
        - name: end_date
          in: query
          required: true
          schema:
            type: string
            format: date
          description: >-
            Ende des Datumsbereichs (einschließlich) im Format `YYYY-MM-DD`. Der
            Bereich darf 90 Tage nicht überschreiten.
          example: '2026-10-31T00:00:00.000Z'
        - name: product
          in: query
          required: true
          schema:
            type: string
            enum:
              - agent
          description: Produkt, für das Tool-Aufrufe abgefragt werden sollen.
          example: agent
        - name: granularity
          in: query
          required: false
          schema:
            type: string
            enum:
              - daily
              - monthly
          description: >
            Zeitliche Granularität für die Gruppierung der Ergebnisse. Ist sie
            angegeben, enthält jede Zeile ein Feld `timestamp`.

            Andernfalls werden die Ergebnisse über den gesamten Datumsbereich
            aggregiert.
        - name: group_by
          in: query
          required: false
          schema:
            type: string
          description: >
            Kommagetrennte Liste der Dimensionen, nach denen die Ergebnisse
            gruppiert werden sollen. Unterstützte Dimensionen:

            - `tool` — enthält `tool` in jeder Zeile (die Tool-Kategorie, etwa
            `SEARCH_WEB` oder `RUN_COMMAND`)

            - `user` — enthält `user_id` in jeder Zeile sowie `user_email`, wenn
            für den Nutzer eine E-Mail-Adresse aufgezeichnet wurde

            - `model_uid` — enthält `model_uid` in jeder Zeile

            - `ide` — enthält `ide` in jeder Zeile

            - `ide_version` — enthält `ide_version` in jeder Zeile; setzt
            voraus, dass auch `ide` enthalten ist

            - `os` — enthält `os` in jeder Zeile
          example: user,tool
        - name: models
          in: query
          required: false
          schema:
            type: string
          description: >-
            Kommagetrennte Liste von Modell-UIDs, auf die die Ergebnisse
            beschränkt werden sollen.
          example: swe-2-high,claude-4-sonnet
        - name: tool
          in: query
          required: false
          schema:
            type: string
          description: >
            Die Zählung auf eine Tool-Kategorie beschränken, etwa `SEARCH_WEB`
            oder `RUN_COMMAND` (exakte Übereinstimmung).

            Wird nur von diesem Endpunkt akzeptiert.
          example: SEARCH_WEB
        - name: group_id
          in: query
          required: false
          schema:
            type: string
          description: >-
            Ergebnisse auf Nutzer einer spezifischen Gruppe beschränken. Der
            Service-Schlüssel muss Zugriff auf diese Gruppe haben. Nicht mit
            Devin-Dienstbenutzer-API-Schlüsseln unterstützt.
        - name: user_id
          in: query
          required: false
          schema:
            type: string
          description: >-
            Ergebnisse auf einen spezifischen Nutzer (Authentifizierungs-UID)
            beschränken.
        - name: page_size
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 10000
            default: 1000
          description: Maximale Anzahl der Zeilen, die pro Seite zurückgegeben werden.
        - name: page_cursor
          in: query
          required: false
          schema:
            type: string
          description: >-
            Opaker Cursor aus `pagination.next_page_cursor` einer vorherigen
            Antwort zum Abrufen der nächsten Seite. Übergeben Sie denselben
            `metric`-Wert wie in der Anfrage, für die der Cursor ausgegeben
            wurde; von anderen Endpunkten ausgegebene Cursor werden abgelehnt.
      responses:
        '200':
          description: Daten zu Tool-Aufrufen erfolgreich zurückgegeben.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolsResponse'
              examples:
                by_user_tool:
                  summary: Websuchen und Befehle pro Nutzer
                  value:
                    data:
                      - user_id: user_abc123
                        user_email: alice@example.com
                        tool: RUN_COMMAND
                        calls: 1842
                      - user_id: user_abc123
                        user_email: alice@example.com
                        tool: SEARCH_WEB
                        calls: 57
                    pagination:
                      next_page_cursor: null
                    metadata:
                      data_freshness: '2026-10-20T02:00:00.000Z'
                      query_time_ms: 1104
                      team_id: team_abc123
                daily_total:
                  summary: granularity=daily ohne Gruppierung
                  value:
                    data:
                      - timestamp: '2026-10-13T00:00:00.000Z'
                        calls: 48210
                      - timestamp: '2026-10-14T00:00:00.000Z'
                        calls: 51377
                    pagination:
                      next_page_cursor: null
                    metadata:
                      data_freshness: '2026-10-20T02:00:00.000Z'
                      query_time_ms: 870
                      team_id: team_abc123
        '400':
          description: Ungültige Anfrageparameter.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                missing_metric:
                  value:
                    error: metric is required
                bad_metric:
                  value:
                    error: 'unsupported metric: loc_inserted (supported: calls)'
                missing_product:
                  value:
                    error: product is required
                bad_group_by:
                  value:
                    error: 'unsupported group_by dimension for tools: session'
        '401':
          description: Authentifizierung fehlgeschlagen oder unzureichende Berechtigungen.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                missing_auth:
                  value:
                    error: missing Authorization header
                invalid_key:
                  value:
                    error: invalid service key
                insufficient_permissions:
                  value:
                    error: insufficient permissions
        '403':
          description: >-
            Der angegebene Seitencursor gehört nicht zum authentifizierten Team
            oder zur angefragten Gruppe.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                cursor_team_mismatch:
                  value:
                    error: page cursor does not belong to this team
        '405':
          description: HTTP-Methode nicht zulässig (nur `GET` wird unterstützt).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: >-
            Anfragelimit überschritten (10 Anfragen pro Stunde und Team). Das
            Abrufen weiterer Seiten einer früheren Abfrage wird nicht auf dieses
            Limit angerechnet.
          headers:
            Retry-After:
              schema:
                type: string
              description: Empfohlene Wartezeit vor einem erneuten Versuch.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                rate_limited:
                  value:
                    error: rate limit exceeded
        '503':
          description: >-
            Der Analytics-Dienst ist nicht verfügbar (z. B. in selbst gehosteten
            Bereitstellungen).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - bearerAuth: []
components:
  schemas:
    ToolsResponse:
      type: object
      required:
        - data
        - pagination
        - metadata
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ToolsRow'
          description: Array mit Datenzeilen zu Tool-Aufrufen.
        pagination:
          type: object
          properties:
            next_page_cursor:
              type:
                - string
                - 'null'
              description: >
                Opaker Cursor zum Abrufen der nächsten Ergebnisseite. Übergeben
                Sie diesen Wert als Query-Parameter `page_cursor`

                in einer Folgeanfrage. `null`, wenn keine weiteren Seiten
                vorhanden sind.

                Seitencursor laufen nach 24 Stunden ab.
        metadata:
          type: object
          properties:
            data_freshness:
              type: string
              format: date-time
              description: >-
                Zeitstempel der letzten Aktualisierung der zugrunde liegenden
                Daten (auf die volle Stunde abgerundet).
            query_time_ms:
              type: integer
              format: int64
              description: Server-side-Ausführungszeit der Abfrage in Millisekunden.
            team_id:
              type: string
              description: >-
                Die anhand des authentifizierten Dienstschlüssels ermittelte
                Team-ID.
            group_id:
              type: string
              description: >-
                Die Gruppen-ID, auf die die Ergebnisse beschränkt wurden. Nur
                vorhanden, wenn `group_id` angegeben wurde.
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          description: Menschenlesbare Fehlermeldung.
    ToolsRow:
      type: object
      required:
        - calls
      properties:
        timestamp:
          type: string
          description: >
            Zeitintervall für die Zeile. Das Format hängt von `granularity` ab:
            `YYYY-MM-DD` bei täglicher, `YYYY-MM` bei monatlicher Granularität.

            Nur vorhanden, wenn `granularity` angegeben ist.
          examples:
            - '2026-10-15T00:00:00.000Z'
            - 2026-10
        user_id:
          type: string
          description: >-
            Nutzerkennung (Authentifizierungs-UID). Nur vorhanden, wenn
            `group_by` den Wert `user` enthält.
        user_email:
          type: string
          description: >-
            E-Mail-Adresse des Nutzers. Nur vorhanden, wenn `group_by` den Wert
            `user` enthält und eine E-Mail-Adresse für den Nutzer gespeichert
            ist.
          examples:
            - alice@example.com
        model_uid:
          type: string
          description: >-
            Modellkennung. Nur vorhanden, wenn `group_by` den Wert `model_uid`
            enthält.
          examples:
            - swe-2-high
        ide:
          type: string
          description: IDE-Name. Nur vorhanden, wenn `group_by` den Wert `ide` enthält.
          examples:
            - windsurf
            - devin-cli
        ide_version:
          type: string
          description: >-
            IDE-Version. Nur vorhanden, wenn `group_by` den Wert `ide_version`
            enthält (wofür zusätzlich `ide` erforderlich ist).
          examples:
            - 3000.10.48
        os:
          type: string
          description: >-
            Betriebssystem, von dem die Anfrage stammt. Nur vorhanden, wenn
            `group_by` den Wert `os` enthält.
          examples:
            - darwin
            - windows
            - linux
        tool:
          type: string
          description: >
            Tool-Kategorie der Aufrufe, etwa `SEARCH_WEB`, `RUN_COMMAND`,
            `VIEW_FILE`,

            `CODE_ACTION`, `GREP_SEARCH`, `FIND`, `MCP_TOOL`, `SKILL` oder
            `ASK_USER_QUESTION`. Tools der Devin CLI

            ohne Kategorie werden als `OTHER` ausgewiesen. Nur vorhanden, wenn
            `group_by` den Wert `tool` enthält.
          examples:
            - SEARCH_WEB
            - RUN_COMMAND
        calls:
          type: integer
          format: int64
          description: Anzahl der Agenten-Tool-Aufrufe in dieser Zeile.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >
        Ein Service-Schlüssel mit der Berechtigung **Analytics Read**, übergeben
        als Bearer-Token im Header `Authorization`.


        Erstellen Sie einen Service-Schlüssel in Ihren [Team
        Settings](https://windsurf.com/team/settings) im Abschnitt „Service
        Keys“.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.