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

# Obtener llamadas a herramientas del agente de Devin

> Cuenta las llamadas a herramientas del agente, como la búsqueda web o la ejecución de comandos, realizadas por tu equipo en Devin Desktop y Devin CLI, agrupadas por herramienta, usuario, modelo, IDE o sistema operativo.

<Note>
  Este es un **endpoint v2** que usa autenticación mediante Token Bearer y parámetros de consulta, a diferencia de la API de Analítica v1, que usa claves de servicio en el cuerpo de la solicitud. Consulta [Autenticación](#authentication) más abajo.
</Note>

<Warning>
  Este endpoint **no** está pensado para monitorizar el consumo en tiempo real. El límite de solicitudes es bajo
  (10 solicitudes por hora por equipo). Úsalo para informes periódicos y exportaciones masivas.
</Warning>

<h2 id="authentication">
  Autenticación
</h2>

Este endpoint usa autenticación mediante **Token Bearer**. Incluye tu token en el encabezado `Authorization`:

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

Usa una clave de API de usuario de servicio de Devin con el permiso **Usar API de Analítica Local** o una clave de servicio de Windsurf
con el permiso **Analytics Read**. Consulta
[Autenticación](/es/desktop/accounts/api-reference/analytics-v2-introduction#authentication) para saber cómo
crear cada una.

A diferencia de la fuente de datos [`cascade_tool_usage`](/es/desktop/accounts/api-reference/cascade-analytics#cascade_tool_usage)
de la v1, este endpoint acepta claves de API de usuario de servicio de Devin, por lo que los equipos de la plataforma de Cognition pueden
obtener informes sobre el uso de herramientas sin necesidad de una clave de servicio de Windsurf.

<h2 id="metrics">
  Métricas
</h2>

El parámetro de consulta `metric` es obligatorio y actualmente solo acepta `calls`, el número de llamadas a herramientas
que ha realizado el agente. Aparece como un campo entero `calls` en cada fila. Las solicitudes que omiten `metric` o
especifican otra métrica fallan con un error `400`.

Las llamadas a herramientas se contabilizan cuando el agente invoca una herramienta en [Devin Desktop](/es/desktop/introducing-devin-desktop)
o en la [Devin CLI](/es/cli) (incluida la CLI cuando se ejecuta como agente dentro de otros editores), con cualquier modelo.
El parámetro `product` también es obligatorio y actualmente solo acepta `agent`.

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

Agrupa por `tool` para desglosar las llamadas por categoría de herramienta. Así, cada fila incluye un campo `tool` con uno de
los siguientes valores:

| Herramienta | Descripción |
| - | - |
| `SEARCH_WEB` | Búsqueda web, obtención de contenido web y uso del navegador |
| `RUN_COMMAND` | Comandos de shell e interacción con procesos en ejecución |
| `VIEW_FILE` | Lectura de archivos y cuadernos |
| `CODE_ACTION` | Edición, escritura y aplicación de parches a archivos |
| `GREP_SEARCH` | Búsqueda en el contenido de archivos y en el código |
| `FIND` | Búsqueda de archivos por nombre |
| `LIST_DIRECTORY` | Listado de directorios |
| `MCP_TOOL` | Llamadas a herramientas de servidores MCP y listado de servidores MCP, herramientas o recursos |
| `SKILL` | Listado, búsqueda e invocación de skills |
| `ASK_USER_QUESTION` | Preguntas al usuario |
| `MEMORY` | Lectura y escritura de memorias |
| `PROPOSE_CODE` | Propuesta de cambios en el código |
| `PROXY_WEB_SERVER` | Vista previa en el navegador de un servidor web local |
| `DEPLOY_WEB_APP` | Despliegue de una web app |
| `MQUERY` | Búsqueda en la base de código (Riptide) |
| `DEEPWIKI` | Solicitudes a DeepWiki |
| `CODEMAP_GENERATION`, `CODEMAP_SUGGESTIONS` | Solicitudes a Codemaps |
| `OTHER` | Herramientas de Devin CLI que no encajan en las categorías anteriores |

No todas las categorías se aplican a todos los clientes: `LIST_DIRECTORY`, `MEMORY`, `PROPOSE_CODE`,
`PROXY_WEB_SERVER`, `DEPLOY_WEB_APP` y `MQUERY` se registran para el agente de Devin Desktop, mientras que las nuevas
herramientas de Devin CLI que aún no tienen una categoría asignada se contabilizan en `OTHER`.

<h2 id="grouping-and-granularity">
  Agrupación y granularidad
</h2>

Usa `granularity` y `group_by` para controlar la forma de los datos devueltos:

* **Sin granularidad ni agrupación**: devuelve una única fila agregada para todo el intervalo de fechas
* **`granularity=daily`**: cada fila incluye un `timestamp` en formato `YYYY-MM-DD`
* **`granularity=monthly`**: cada fila incluye un `timestamp` en formato `YYYY-MM`
* **`group_by=tool`**: cada fila incluye un `tool` (consulta [Herramientas](#tools) más arriba)
* **`group_by=user`**: cada fila incluye un `user_id`, además de un `user_email` si hay uno registrado para ese usuario
* **`group_by=model_uid`**: cada fila incluye un `model_uid`
* **`group_by=ide`**: cada fila incluye un `ide`
* **`group_by=ide,ide_version`**: cada fila incluye `ide` e `ide_version` (para agrupar por `ide_version` también hay que incluir `ide`)
* **`group_by=os`**: cada fila incluye un `os`, como `darwin` (macOS), `windows` o `linux`

Las dimensiones se pueden combinar; por ejemplo, `group_by=user,tool` muestra con qué frecuencia cada usuario ha invocado cada
herramienta. Las dimensiones `session` y `source` de [Get Output](/es/desktop/accounts/api-reference/get-output)
no se admiten aquí. Se aplican los mismos filtros `models`, `group_id` y `user_id` que en
[Get Consumption](/es/desktop/accounts/api-reference/get-consumption), además de un filtro `tool` que
limita el recuento a una sola categoría de herramienta (por ejemplo, `tool=SEARCH_WEB`). Solo este endpoint acepta
`tool`; si se pasa a cualquier otro endpoint de la API de analítica v2, se devuelve un error `400`.

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

Contar las búsquedas web por usuario durante una semana:

```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"
```

Cada fila muestra el recuento de `SEARCH_WEB` de un usuario. Si prefieres ver todas las categorías por usuario, quita el filtro `tool` y agrega `group_by=user,tool`.

<h2 id="pagination">
  Paginación
</h2>

Los resultados se paginan con un tamaño de página predeterminado de 1000 filas (máximo 10 000). Cuando hay más resultados disponibles,
la respuesta incluye un `next_page_cursor` en el objeto `pagination`. Pásalo como parámetro de consulta `page_cursor`
en una solicitud que repita los mismos parámetros de consulta originales. Los cursores están vinculados al endpoint que los emitió; un cursor de `/consumption` o `/output`
se rechaza con un `400`.

Los cursores de paginación caducan a las 24 horas. Las solicitudes de páginas posteriores no cuentan como nuevas consultas para tu límite de solicitudes.

<h2 id="rate-limits">
  Límites de solicitudes
</h2>

Este endpoint tiene un límite de solicitudes de **10 solicitudes por hora** por equipo. Si superas este límite, el
servidor devuelve `429 Too Many Requests` con un encabezado `Retry-After`.

Paginar una consulta anterior (siguiendo un `next_page_cursor`) **no** cuenta para este límite;
solo cuenta la consulta inicial de cada informe. El límite es bajo porque este endpoint está pensado para
informes periódicos, no para la monitorización del consumo en tiempo real.


## OpenAPI

````yaml es/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: >
    La Analytics API v2 proporciona analíticas de consumo de créditos y ACU, de
    usuarios activos y de resultados del agente

    (líneas de código aceptadas), y de llamadas a herramientas del agente para
    equipos Enterprise.

    Los datos proceden de datos agregados por hora y admite filtros flexibles,
    agrupación

    y paginación basada en cursor.
servers:
  - url: https://server.codeium.com
security:
  - bearerAuth: []
paths:
  /api/v2alpha/analytics/tools:
    get:
      summary: Obtener analítica de llamadas a herramientas del agente
      description: >
        Contar las llamadas a herramientas del agente para el equipo
        autenticado. El parámetro obligatorio `metric` solo acepta

        `calls`, que representa el número de llamadas a herramientas realizadas
        por el agente en Devin Desktop y Devin CLI y se devuelve como un

        campo de tipo entero en cada fila. Los resultados se pueden filtrar por
        rango de fechas, producto, modelo, grupo y usuario,

        y agrupar por las mismas dimensiones que el consumo (excepto `session`),
        además de `tool`, que indica la categoría de herramienta,

        como `SEARCH_WEB` o `RUN_COMMAND`.


        Estos endpoints están diseñados para generar informes periódicos y
        realizar exportaciones masivas. **No** están pensados para la
        monitorización del uso en tiempo real: el límite de tasa es bajo (10
        solicitudes por hora por equipo).
      operationId: getTools
      parameters:
        - name: metric
          in: query
          required: true
          schema:
            type: string
          description: >
            Métrica que se devolverá; aparece como un campo en cada fila.
            Métricas admitidas:

            - `calls` — número de llamadas a herramientas realizadas por el
            agente
          example: calls
        - name: start_date
          in: query
          required: true
          schema:
            type: string
            format: date
          description: Inicio del rango de fechas (incluido) en formato `YYYY-MM-DD`.
          example: '2026-10-01T00:00:00.000Z'
        - name: end_date
          in: query
          required: true
          schema:
            type: string
            format: date
          description: >-
            Fin del rango de fechas (incluido) en formato `YYYY-MM-DD`. El rango
            no debe superar los 90 días.
          example: '2026-10-31T00:00:00.000Z'
        - name: product
          in: query
          required: true
          schema:
            type: string
            enum:
              - agent
          description: Producto cuyas llamadas a herramientas se consultarán.
          example: agent
        - name: granularity
          in: query
          required: false
          schema:
            type: string
            enum:
              - daily
              - monthly
          description: >
            Granularidad temporal para agrupar los resultados. Cuando se
            especifica, cada fila incluye un campo `timestamp`.

            Si se omite, los resultados se agregan para todo el rango de fechas.
        - name: group_by
          in: query
          required: false
          schema:
            type: string
          description: >
            Lista de dimensiones separadas por comas por las que agrupar los
            resultados. Dimensiones admitidas:

            - `tool` — incluye `tool` en cada fila (la categoría de herramienta,
            como `SEARCH_WEB` o `RUN_COMMAND`)

            - `user` — incluye `user_id` en cada fila, además de `user_email` si
            el usuario tiene un correo electrónico registrado

            - `model_uid` — incluye `model_uid` en cada fila

            - `ide` — incluye `ide` en cada fila

            - `ide_version` — incluye `ide_version` en cada fila; requiere que
            también se incluya `ide`

            - `os` — incluye `os` en cada fila
          example: user,tool
        - name: models
          in: query
          required: false
          schema:
            type: string
          description: >-
            Lista de UID de modelos separados por comas por los que filtrar los
            resultados.
          example: swe-2-high,claude-4-sonnet
        - name: tool
          in: query
          required: false
          schema:
            type: string
          description: >
            Restringe el recuento a una categoría de herramienta, como
            `SEARCH_WEB` o `RUN_COMMAND` (coincidencia exacta).

            Solo se admite en este endpoint.
          example: SEARCH_WEB
        - name: group_id
          in: query
          required: false
          schema:
            type: string
          description: >-
            Filtra los resultados para incluir solo a los usuarios de un grupo
            específico. La clave de servicio debe tener acceso a este grupo. No
            se admite con claves de API de usuario de servicio de Devin.
        - name: user_id
          in: query
          required: false
          schema:
            type: string
          description: >-
            Filtra los resultados por un usuario específico (UID de
            autenticación).
        - name: page_size
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 10000
            default: 1000
          description: Número máximo de filas que se devolverán por página.
        - name: page_cursor
          in: query
          required: false
          schema:
            type: string
          description: >-
            Cursor opaco obtenido de `pagination.next_page_cursor` en una
            respuesta anterior para obtener la página siguiente. Envía el mismo
            valor de `metric` que en la solicitud que generó el cursor; se
            rechazan los cursores generados por otros endpoints.
      responses:
        '200':
          description: Datos de llamadas a herramientas devueltos correctamente.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ToolsResponse'
              examples:
                by_user_tool:
                  summary: Búsquedas web y comandos por usuario
                  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 sin agrupación
                  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: Parámetros de solicitud no válidos.
          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: Autenticación fallida o permisos insuficientes.
          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: >-
            El cursor de paginación proporcionado no pertenece al equipo
            autenticado ni al grupo solicitado.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                cursor_team_mismatch:
                  value:
                    error: page cursor does not belong to this team
        '405':
          description: Método HTTP no permitido (solo se admite `GET`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: >-
            Límite de tasa superado (10 solicitudes por hora por equipo). La
            paginación de una consulta anterior no cuenta para este límite.
          headers:
            Retry-After:
              schema:
                type: string
              description: Tiempo de espera recomendado antes de volver a intentarlo.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                rate_limited:
                  value:
                    error: rate limit exceeded
        '503':
          description: >-
            El servicio de analítica no está disponible (p. ej., en
            implementaciones autoalojadas).
          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 de filas con datos de llamadas a herramientas.
        pagination:
          type: object
          properties:
            next_page_cursor:
              type:
                - string
                - 'null'
              description: >
                Cursor opaco para obtener la siguiente página de resultados.
                Pasa este valor como parámetro de consulta `page_cursor`

                en una solicitud posterior. Es `null` cuando no hay más páginas.

                Los cursores de paginación caducan a las 24 horas.
        metadata:
          type: object
          properties:
            data_freshness:
              type: string
              format: date-time
              description: >-
                Marca de tiempo que indica cuándo se actualizaron por última vez
                los datos subyacentes (truncada a la hora).
            query_time_ms:
              type: integer
              format: int64
              description: Tiempo de ejecución de la consulta server-side en milisegundos.
            team_id:
              type: string
              description: >-
                ID del equipo resuelto a partir de la clave de servicio
                autenticada.
            group_id:
              type: string
              description: >-
                ID del grupo al que se limitaron los resultados. Solo está
                presente cuando se proporcionó `group_id`.
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          description: Mensaje de error legible por humanos.
    ToolsRow:
      type: object
      required:
        - calls
      properties:
        timestamp:
          type: string
          description: >
            Intervalo de tiempo de la fila. El formato depende de `granularity`:
            `YYYY-MM-DD` para la granularidad diaria y `YYYY-MM` para la
            mensual.

            Solo está presente cuando se especifica `granularity`.
          examples:
            - '2026-10-15T00:00:00.000Z'
            - 2026-10
        user_id:
          type: string
          description: >-
            Identificador del usuario (UID de autenticación). Solo está presente
            cuando `group_by` incluye `user`.
        user_email:
          type: string
          description: >-
            Dirección de correo electrónico del usuario. Solo está presente
            cuando `group_by` incluye `user` y el usuario tiene una dirección de
            correo electrónico registrada.
          examples:
            - alice@example.com
        model_uid:
          type: string
          description: >-
            Identificador del modelo. Solo está presente cuando `group_by`
            incluye `model_uid`.
          examples:
            - swe-2-high
        ide:
          type: string
          description: Nombre del IDE. Solo está presente cuando `group_by` incluye `ide`.
          examples:
            - windsurf
            - devin-cli
        ide_version:
          type: string
          description: >-
            Versión del IDE. Solo está presente cuando `group_by` incluye
            `ide_version` (que además requiere `ide`).
          examples:
            - 3000.10.48
        os:
          type: string
          description: >-
            Sistema operativo desde el que se envió la solicitud. Solo está
            presente cuando `group_by` incluye `os`.
          examples:
            - darwin
            - windows
            - linux
        tool:
          type: string
          description: >
            Categoría de la herramienta utilizada en las llamadas, como
            `SEARCH_WEB`, `RUN_COMMAND`, `VIEW_FILE`,

            `CODE_ACTION`, `GREP_SEARCH`, `FIND`, `MCP_TOOL`, `SKILL` o
            `ASK_USER_QUESTION`. Las herramientas de Devin CLI

            sin categoría se indican como `OTHER`. Solo está presente cuando
            `group_by` incluye `tool`.
          examples:
            - SEARCH_WEB
            - RUN_COMMAND
        calls:
          type: integer
          format: int64
          description: Número de llamadas a herramientas del agente en esta fila.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >
        Una clave de servicio con el permiso **Analytics Read**, pasada como
        token Bearer en el encabezado `Authorization`.


        Crea una clave de servicio en tu [configuración del
        equipo](https://windsurf.com/team/settings), en la sección "Service
        Keys".

````

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