Skip to main content

Command Palette

Search for a command to run...

API

Analytics API

La API de Analytics proporciona información detallada sobre el uso de Cursor por parte de tu equipo, incluidas métricas de programación asistida con IA, usuarios activos, uso de modelos y más.

  • La API de Analytics utiliza autenticación básica. La mayoría de los endpoints requieren una clave de API con ámbito de administrador y alcance admin:*. La analítica de Bugbot review requiere el alcance read:*. Genera una clave desde Cursor Dashboard → API Keys.
  • Para obtener más información sobre la autenticación, los límites de uso y las mejores prácticas, consulta la API Overview.
  • Disponibilidad: Solo para equipos Enterprise

Endpoints disponibles

Ediciones del agente

GET/analytics/team/agent-edits

Obtén métricas sobre las ediciones de código sugeridas por IA que tu equipo ha aceptado con Cursor.

Parámetros

startDate string

Fecha de inicio del período de análisis (predeterminado: hace 7 días). Consulta Formatos de fecha

endDate string

Fecha de finalización del período de análisis (predeterminado: hoy). Consulta Formatos de fecha

users string

Limita los datos a usuarios específicos (correos electrónicos o IDs de usuario separados por comas, p. ej., alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/team/agent-edits" \  -u YOUR_API_KEY:

Respuesta:

{  "data": [    {      "event_date": "2025-01-15",      "total_suggested_diffs": 145,      "total_accepted_diffs": 98,      "total_rejected_diffs": 47,      "total_green_lines_accepted": 820,      "total_red_lines_accepted": 160,      "total_green_lines_rejected": 210,      "total_red_lines_rejected": 60,      "total_green_lines_suggested": 1030,      "total_red_lines_suggested": 220,      "total_lines_suggested": 1250,      "total_lines_accepted": 980    },    {      "event_date": "2025-01-16",      "total_suggested_diffs": 132,      "total_accepted_diffs": 89,      "total_rejected_diffs": 43,      "total_green_lines_accepted": 740,      "total_red_lines_accepted": 150,      "total_green_lines_rejected": 185,      "total_red_lines_rejected": 55,      "total_green_lines_suggested": 925,      "total_red_lines_suggested": 175,      "total_lines_suggested": 1100,      "total_lines_accepted": 890    }  ],  "params": {    "metric": "agent-edits",    "teamId": 12345,    "startDate": "2025-01-01",    "endDate": "2025-01-31"  }}

Uso de Tab

GET/analytics/team/tabs

Obtén métricas sobre el uso del autocompletado de Tab en tu equipo.

Parámetros

startDate string

Fecha de inicio del período de análisis (predeterminado: hace 7 días). Consulta Formatos de fecha

endDate string

Fecha de finalización del período de análisis (predeterminado: hoy). Consulta Formatos de fecha

users string

Limita los datos a usuarios específicos (correos electrónicos o IDs de usuario separados por comas, p. ej., alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/team/tabs" \  -u YOUR_API_KEY:

Respuesta:

{  "data": [    {      "event_date": "2025-01-15",      "total_suggestions": 5420,      "total_accepts": 3210,      "total_rejects": 2210,      "total_green_lines_accepted": 4120,      "total_red_lines_accepted": 2000,      "total_green_lines_rejected": 1480,      "total_red_lines_rejected": 730,      "total_green_lines_suggested": 5600,      "total_red_lines_suggested": 2740,      "total_lines_suggested": 8340,      "total_lines_accepted": 6120    },    {      "event_date": "2025-01-16",      "total_suggestions": 4980,      "total_accepts": 3050,      "total_rejects": 1930,      "total_green_lines_accepted": 3890,      "total_red_lines_accepted": 1890,      "total_green_lines_rejected": 1350,      "total_red_lines_rejected": 580,      "total_green_lines_suggested": 5240,      "total_red_lines_suggested": 2650,      "total_lines_suggested": 7890,      "total_lines_accepted": 5780    }  ],  "params": {    "metric": "tabs",    "teamId": 12345,    "startDate": "2025-01-01",    "endDate": "2025-01-31"  }}

Usuarios activos diarios (DAU)

GET/analytics/team/dau

Obtén el número diario de usuarios activos de tu equipo. DAU es el número de usuarios únicos que han usado Cursor en un día determinado. Un usuario activo es aquel que ha usado al menos una función de IA en Cursor.

La respuesta incluye métricas de DAU desglosadas por la CLI de Cursor, los agentes en la nube y BugBot.

Parámetros

startDate string

Fecha de inicio del período de análisis (predeterminado: hace 7 días). Consulta Formatos de fecha

endDate string

Fecha de finalización del período de análisis (predeterminado: hoy). Consulta Formatos de fecha

users string

Limita los datos a usuarios específicos (correos electrónicos o IDs de usuario separados por comas, p. ej., alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/team/dau?startDate=14d&endDate=today" \  -u YOUR_API_KEY:

Respuesta:

{  "data": [    {      "date": "2025-01-15",      "dau": 42,      "cli_dau": 5,      "cloud_agent_dau": 37,      "bugbot_dau": 10    },    {      "date": "2025-01-16",      "dau": 38,      "cli_dau": 4,      "cloud_agent_dau": 34,      "bugbot_dau": 12    }  ],  "params": {    "metric": "dau",    "teamId": 12345,    "startDate": "2025-01-01",    "endDate": "2025-01-31"  }}

Versiones del cliente

GET/analytics/team/client-versions

Obtén la distribución de las versiones del cliente de Cursor que utiliza tu equipo (de forma predeterminada, los últimos 7 días). Informamos la versión más reciente de cada usuario por día (si un usuario ha instalado varias versiones, informamos la más reciente).

Parámetros

startDate string

Fecha de inicio del período de análisis (predeterminado: hace 7 días). Consulta Formatos de fecha

endDate string

Fecha de finalización del período de análisis (predeterminado: hoy). Consulta Formatos de fecha

users string

Limita los datos a usuarios específicos (correos electrónicos o IDs de usuario separados por comas, p. ej., alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/team/client-versions" \  -u YOUR_API_KEY:

Respuesta:

{  "data": [    {      "event_date": "2025-01-01",      "client_version": "0.42.3",      "user_count": 35,      "percentage": 0.833    },    {      "event_date": "2025-01-01",      "client_version": "0.42.2",      "user_count": 7,      "percentage": 0.167    }  ],  "params": {    "metric": "client-versions",    "teamId": 12345,    "startDate": "2025-01-01",    "endDate": "2025-01-31"  }}

Consumo de modelos de IA

GET/analytics/team/models

Obtén métricas sobre el consumo de modelos de IA de tu equipo.

Parámetros

startDate string

Fecha de inicio del período de análisis (predeterminado: hace 7 días). Consulta Formatos de fecha

endDate string

Fecha de finalización del período de análisis (predeterminado: hoy). Consulta Formatos de fecha

users string

Limita los datos a usuarios específicos (correos electrónicos o IDs de usuario separados por comas, p. ej., alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/team/models" \  -u YOUR_API_KEY:

Respuesta:

{  "data": [    {      "date": "2025-01-15",      "model_breakdown": {        "claude-sonnet-4.5": {          "messages": 1250,          "users": 28        },        "gpt-4o": {          "messages": 450,          "users": 15        },        "claude-opus-4.5": {          "messages": 320,          "users": 12        }      }    },    {      "date": "2025-01-16",      "model_breakdown": {        "claude-sonnet-4.5": {          "messages": 1180,          "users": 26        },        "gpt-4o": {          "messages": 420,          "users": 14        }      }    }  ],  "params": {    "metric": "models",    "teamId": 12345,    "startDate": "2025-01-01",    "endDate": "2025-01-31"  }}

Extensiones de archivo más utilizadas

GET/analytics/team/top-file-extensions

Obtiene los archivos más editados por tu equipo en Cursor. Devuelve las 5 extensiones de archivo más frecuentes por día según el volumen de sugerencias.

Parámetros

startDate string

Fecha de inicio del período de análisis (predeterminado: hace 7 días). Consulta Formatos de fecha

endDate string

Fecha de finalización del período de análisis (predeterminado: hoy). Consulta Formatos de fecha

users string

Limita los datos a usuarios específicos (correos electrónicos o IDs de usuario separados por comas, p. ej., alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/team/top-file-extensions?startDate=30d&endDate=today" \  -u YOUR_API_KEY:

Respuesta:

{  "data": [    {      "event_date": "2025-01-15",      "file_extension": "tsx",      "total_files": 156,      "total_accepts": 98,      "total_rejects": 45,      "total_lines_suggested": 3230,      "total_lines_accepted": 2340,      "total_lines_rejected": 890    },    {      "event_date": "2025-01-15",      "file_extension": "ts",      "total_files": 142,      "total_accepts": 89,      "total_rejects": 38,      "total_lines_suggested": 2850,      "total_lines_accepted": 2100,      "total_lines_rejected": 750    }  ],  "params": {    "metric": "top-files",    "teamId": 12345,    "startDate": "2025-01-01",    "endDate": "2025-01-31"  }}

Adopción de MCP

GET/analytics/team/mcp

Obtén métricas sobre la adopción de herramientas MCP (Model Context Protocol) en tu equipo. Devuelve el recuento diario de adopción, desglosado por nombre de herramienta y de servidor MCP.

Parámetros

startDate string

Fecha de inicio del período de análisis (predeterminado: hace 7 días). Consulta Formatos de fecha

endDate string

Fecha de finalización del período de análisis (predeterminado: hoy). Consulta Formatos de fecha

users string

Limita los datos a usuarios específicos (correos electrónicos o IDs de usuario separados por comas, p. ej., alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/team/mcp" \  -u YOUR_API_KEY:

Respuesta:

{  "data": [    {      "event_date": "2025-01-15",      "tool_name": "read_file",      "mcp_server_name": "filesystem",      "usage": 245    },    {      "event_date": "2025-01-15",      "tool_name": "search_web",      "mcp_server_name": "brave-search",      "usage": 128    },    {      "event_date": "2025-01-16",      "tool_name": "read_file",      "mcp_server_name": "filesystem",      "usage": 231    }  ],  "params": {    "metric": "mcp",    "teamId": 12345,    "startDate": "2025-01-01",    "endDate": "2025-01-31"  }}

Adopción de comandos

GET/analytics/team/commands

Obtén métricas sobre la adopción de los comandos de Cursor en tu equipo. Devuelve el recuento diario de adopción, desglosado por nombre de comando.

Parámetros

startDate string

Fecha de inicio del período de análisis (predeterminado: hace 7 días). Consulta Formatos de fecha

endDate string

Fecha de finalización del período de análisis (predeterminado: hoy). Consulta Formatos de fecha

users string

Limita los datos a usuarios específicos (correos electrónicos o IDs de usuario separados por comas, p. ej., alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/team/commands" \  -u YOUR_API_KEY:

Respuesta:

{  "data": [    {      "event_date": "2025-01-15",      "command_name": "explain",      "usage": 89    },    {      "event_date": "2025-01-15",      "command_name": "refactor",      "usage": 45    },    {      "event_date": "2025-01-16",      "command_name": "explain",      "usage": 92    }  ],  "params": {    "metric": "commands",    "teamId": 12345,    "startDate": "2025-01-01",    "endDate": "2025-01-31"  }}

Adopción del modo Plan

GET/analytics/team/plans

Obtén métricas sobre la adopción del modo Plan en tu equipo. Devuelve el recuento diario de adopción desglosado por el modelo de IA utilizado para generar planes.

Parámetros

startDate string

Fecha de inicio del período de análisis (predeterminado: hace 7 días). Consulta Formatos de fecha

endDate string

Fecha de finalización del período de análisis (predeterminado: hoy). Consulta Formatos de fecha

users string

Limita los datos a usuarios específicos (correos electrónicos o IDs de usuario separados por comas, p. ej., alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/team/plans" \  -u YOUR_API_KEY:

Respuesta:

{  "data": [    {      "event_date": "2025-01-15",      "model": "claude-sonnet-4.5",      "usage": 156    },    {      "event_date": "2025-01-15",      "model": "default",      "usage": 42    },    {      "event_date": "2025-01-16",      "model": "claude-sonnet-4.5",      "usage": 148    }  ],  "params": {    "metric": "plans",    "teamId": 12345,    "startDate": "2025-01-01",    "endDate": "2025-01-31"  }}

Adopción de Skills

GET/analytics/team/skills

Obtén métricas sobre la adopción de Skills en tu equipo. Devuelve el recuento diario de adopción desglosado por nombre de skill.

Parámetros

startDate string

Fecha de inicio del período de análisis (predeterminado: hace 7 días). Consulta Formatos de fecha

endDate string

Fecha de finalización del período de análisis (predeterminado: hoy). Consulta Formatos de fecha

users string

Limita los datos a usuarios específicos (correos electrónicos o IDs de usuario separados por comas, p. ej., alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/team/skills" \  -u YOUR_API_KEY:

Respuesta:

{  "data": [    {      "event_date": "2025-01-15",      "skill_name": "react-best-practices",      "usage": 53    },    {      "event_date": "2025-01-15",      "skill_name": "usage-billing",      "usage": 41    },    {      "event_date": "2025-01-16",      "skill_name": "react-best-practices",      "usage": 48    }  ],  "params": {    "metric": "skills",    "teamId": 12345,    "startDate": "2025-01-01",    "endDate": "2025-01-31"  }}

Adopción del modo Ask

GET/analytics/team/ask-mode

Obtén métricas sobre la adopción del modo Ask en tu equipo. Devuelve el recuento diario de adopción, desglosado por el modelo de IA utilizado en las consultas del modo Ask.

Parámetros

startDate string

Fecha de inicio del período de análisis (predeterminado: hace 7 días). Consulta Formatos de fecha

endDate string

Fecha de finalización del período de análisis (predeterminado: hoy). Consulta Formatos de fecha

users string

Limita los datos a usuarios específicos (correos electrónicos o IDs de usuario separados por comas, p. ej., alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/team/ask-mode" \  -u YOUR_API_KEY:

Respuesta:

{  "data": [    {      "event_date": "2025-01-15",      "model": "claude-sonnet-4.5",      "usage": 203    },    {      "event_date": "2025-01-15",      "model": "gpt-4o",      "usage": 67    },    {      "event_date": "2025-01-16",      "model": "claude-sonnet-4.5",      "usage": 198    }  ],  "params": {    "metric": "ask-mode",    "teamId": 12345,    "startDate": "2025-01-01",    "endDate": "2025-01-31"  }}

Insights de conversaciones

GET/analytics/team/conversation-insights

Obtén los mismos datos agregados de Insights de conversaciones que se muestran en el panel de control. Este endpoint devuelve insights agregados, no exportaciones ni contenido de conversaciones sin procesar.

intents y complexity describen conversaciones completas.

categories, guidanceLevels y workTypes describen el trabajo en los distintos segmentos de una conversación.

Parámetros

startDate string

Fecha de inicio del período de analítica (predeterminado: hace 7 días). Consulta Formato de fecha

endDate string

Fecha de finalización del período de analítica (predeterminado: hoy). Consulta Formato de fecha

include string | string[]

Obligatorio. Selecciona qué segmentos de Insights de conversaciones devolver. Valores compatibles: intents, complexity, categories, guidanceLevels y workTypes. Puedes pasar include como una lista separada por comas, por ejemplo, include=intents,complexity, o repetirlo, por ejemplo, include=intents&include=workTypes.

users string

Opcional. Filtra Insights de conversaciones por usuarios específicos. Pasa correos electrónicos o ID de usuario separados por comas, por ejemplo, users=alice@example.com,user_abc123.
curl -X GET "https://api.cursor.com/analytics/team/conversation-insights?startDate=2026-03-01&endDate=2026-03-07&include=intents,complexity,categories,guidanceLevels,workTypes&users=alice@example.com,bob@example.com" \  -u YOUR_API_KEY:

Respuesta:

{  "data": {    "intents": {      "distribution": [        {          "intent": "Write Code",          "count": 18        },        {          "intent": "Ask",          "count": 7        },        {          "intent": "Plan",          "count": 3        }      ],      "topValues": [        {          "intent": "Write Code",          "count": 18        },        {          "intent": "Ask",          "count": 7        }      ],      "timeSeries": [        {          "date": "2026-03-01",          "intent": "Ask",          "count": 2        },        {          "date": "2026-03-02",          "intent": "Write Code",          "count": 6        }      ],      "subcategories": {        "askMode": [          {            "subcategory": "error_fix",            "count": 4          }        ],        "planMode": [          {            "subcategory": "implementation",            "count": 3          }        ],        "writeCode": [          {            "subcategory": "feature",            "count": 11          }        ]      }    },    "complexity": {      "distribution": [        {          "complexity": "high",          "count": 12        },        {          "complexity": "medium",          "count": 10        }      ],      "timeSeries": [        {          "date": "2026-03-01",          "complexity": "medium",          "count": 4        },        {          "date": "2026-03-02",          "complexity": "high",          "count": 5        }      ]    },    "categories": {      "distribution": [        {          "category": "New Features",          "count": 9        },        {          "category": "Bug Fixing & Debugging",          "count": 6        }      ],      "timeSeries": [        {          "date": "2026-03-01",          "category": "Bug Fixing & Debugging",          "count": 2        },        {          "date": "2026-03-02",          "category": "New Features",          "count": 4        }      ]    },    "guidanceLevels": {      "distribution": [        {          "guidanceLevel": "high",          "count": 8        },        {          "guidanceLevel": "medium",          "count": 7        }      ],      "timeSeries": [        {          "date": "2026-03-01",          "guidanceLevel": "medium",          "count": 3        },        {          "date": "2026-03-02",          "guidanceLevel": "high",          "count": 4        }      ]    },    "workTypes": {      "distribution": [        {          "workType": "new_feature",          "count": 9        },        {          "workType": "bug",          "count": 6        }      ],      "timeSeries": [        {          "date": "2026-03-01",          "workType": "bug",          "count": 2        },        {          "date": "2026-03-02",          "workType": "new_feature",          "count": 4        }      ]    }  },  "params": {    "metric": "conversation-insights",    "teamId": 12345,    "startDate": "2026-03-01",    "endDate": "2026-03-07",    "include": [      "intents",      "complexity",      "categories",      "guidanceLevels",      "workTypes"    ]  }}

Clasificación

GET/analytics/team/leaderboard

Obtiene una clasificación de los miembros del equipo según las métricas de uso de IA.

Comportamiento:

  • Sin filtrar por usuarios: Devuelve los usuarios ordenados según la métrica especificada (predeterminado: total de líneas aceptadas)
  • Al filtrar por usuarios: Devuelve los usuarios que coinciden con el filtro (con su posición real en la clasificación de todo el equipo)
  • Admite paginación para equipos con muchos miembros

Parámetros

startDate string

Fecha de inicio del período de análisis (predeterminado: hace 7 días). Consulta Formatos de fecha

endDate string

Fecha de finalización del período de análisis (predeterminado: hoy). Consulta Formatos de fecha

page number

Número de página para la paginación (indexado desde 1). Predeterminado: 1

pageSize number

Número de usuarios por página (predeterminado: 10, máximo: 500)

users string

Filtra usuarios específicos (correos electrónicos o ID de usuario separados por comas; p. ej., alice@example.com,user_abc123)
# Obtener la primera página de la clasificación (los 10 mejores usuarios)curl -X GET "https://api.cursor.com/analytics/team/leaderboard" \  -u YOUR_API_KEY:
# Obtener la segunda página con un tamaño de página personalizadocurl -X GET "https://api.cursor.com/analytics/team/leaderboard?page=2&pageSize=20" \  -u YOUR_API_KEY:
# Filtrar por usuarios específicoscurl -X GET "https://api.cursor.com/analytics/team/leaderboard?users=alice@example.com,bob@example.com" \  -u TU_API_KEY:

Respuesta:

{  "data": {    "tab_leaderboard": {      "data": [        {          "email": "alice@example.com",          "user_id": "user_abc123",          "profile_picture_url": "https://example.com/avatars/alice.jpg",          "total_accepts": 1334,          "total_lines_accepted": 3455,          "total_lines_suggested": 15307,          "line_acceptance_ratio": 0.2256519892590384,          "accept_ratio": 0.2330827067669173,          "rank": 1        },        {          "email": "bob@example.com",          "user_id": "user_def789",          "profile_picture_url": "https://example.com/avatars/bob.jpg",          "total_accepts": 796,          "total_lines_accepted": 2090,          "total_lines_suggested": 7689,          "line_acceptance_ratio": 0.2718168812589414,          "accept_ratio": 0.2731256599787746,          "rank": 2        }      ],      "total_users": 142    },    "agent_leaderboard": {      "data": [        {          "email": "alice@example.com",          "user_id": "user_abc123",          "profile_picture_url": "https://example.com/avatars/alice.jpg",          "total_accepts": 914,          "total_lines_accepted": 65947,          "total_lines_suggested": 201467,          "line_acceptance_ratio": 0.3273465219182842,          "rank": 1        },        {          "email": "bob@example.com",          "user_id": "user_def789",          "profile_picture_url": "https://example.com/avatars/bob.jpg",          "total_accepts": 843,          "total_lines_accepted": 61709,          "total_lines_suggested": 51092,          "line_acceptance_ratio": 1.2077924536684573,          "rank": 2        }      ],      "total_users": 142    }  },  "pagination": {    "page": 1,    "pageSize": 10,    "totalUsers": 142,    "totalPages": 15,    "hasNextPage": true,    "hasPreviousPage": false  },  "params": {    "metric": "leaderboard",    "teamId": 12345,    "startDate": "2025-01-01",    "endDate": "2025-01-31",    "page": 1,    "pageSize": 10  }}

Analítica de Bugbot

GET/analytics/team/bugbot

Obtén datos de analítica de las revisiones de Bugbot por PR de tu equipo, incluidos los recuentos de problemas por gravedad y cuántos se resolvieron.

Para consultar datos por revisión, incluido el coste facturado y los hallazgos individuales, usa analítica de Bugbot review.

Parámetros

startDate string

Fecha de inicio del período de análisis (predeterminado: hace 7 días). Consulta Formatos de fecha

endDate string

Fecha de finalización del período de análisis (predeterminado: hoy). Consulta Formatos de fecha

prState string

Filtro por estado de PR. Valores permitidos: merged o all. Predeterminado: merged. Usa merged para consultar solo la analítica de PR fusionadas. Usa all para consultar la analítica de todos los estados de PR.

repo string

Filtro de repositorio opcional. Acepta URL completas o formatos host/path (por ejemplo, https://github.com/org/repo.git o github.com/org/repo). Se normaliza a host/owner/repo.

page number

Número de página para la paginación (índice basado en 1). Predeterminado: 1

pageSize number

Número de PR por página (predeterminado: 100, máximo: 250)
# Obtener analítica de las PR de Bugbot de los últimos 7 días (período predeterminado)curl -X GET "https://api.cursor.com/analytics/team/bugbot" \  -u YOUR_API_KEY:
# Filtrar por repositorio y rango de fechascurl -X GET "https://api.cursor.com/analytics/team/bugbot?repo=github.com/acme/app&startDate=2025-01-01&endDate=2025-01-31" \  -u YOUR_API_KEY:
# Paginar los resultadoscurl -X GET "https://api.cursor.com/analytics/team/bugbot?page=2&pageSize=50" \  -u YOUR_API_KEY:

Respuesta:

{  "data": [    {      "repo": "github.com/acme/app",      "pr_number": 42,      "timestamp": "2025-01-21T00:00:00.000Z",      "reviews": 3,      "issues": {        "total": 5,        "by_severity": {          "high": 1,          "medium": 2,          "low": 2        }      },      "issues_resolved": {        "total": 2,        "by_severity": {          "high": 1,          "medium": 1,          "low": 0        }      }    }  ],  "pagination": {    "page": 1,    "pageSize": 100,    "totalItems": 1,    "totalPages": 1,    "hasNextPage": false,    "hasPreviousPage": false  },  "params": {    "metric": "bugbot",    "teamId": 12345,    "startDate": "2025-01-01",    "endDate": "2025-01-31",    "repo": "github.com/acme/app",    "prState": "merged",    "page": 1,    "pageSize": 100  }}

Analítica de Bugbot review

GET/analytics/team/bugbot-reviews

Devuelve un elemento por cada Bugbot review completada, incluido el commit revisado, el número de hallazgos, el coste facturado y los datos de resolución de cada hallazgo.

Incluye tanto revisiones publicadas como revisiones dry run. Los hallazgos publicados se identifican mediante comment_id y resolution_status. En cambio, los hallazgos de dry run devuelven title, description y locations, ya que no se publica nada en el SCM.

Requiere una clave de API con el alcance read:*.

Parámetros

startDate string

Inicio del intervalo de analítica. El valor predeterminado es hace 7 días. Consulta Formato de fecha.

endDate string

Fin del intervalo de analítica. El valor predeterminado es now. Consulta Formato de fecha.

repo string

Filtro opcional de repositorio con el formato host/owner/repo. El protocolo y el sufijo .git son opcionales.

prNumber number

Número opcional de pull request o merge request.

page number

Número de página para la paginación (basado en 1). Valor predeterminado: 1.

pageSize number

Número de revisiones por página. Valor predeterminado: 100; máximo: 250.

dryRun boolean

Filtro opcional para mostrar solo revisiones dry run (true) o publicadas (false).
curl --get https://api.cursor.com/analytics/team/bugbot-reviews \  -u YOUR_API_KEY: \  --data-urlencode 'startDate=2026-06-01' \  --data-urlencode 'endDate=2026-06-29' \  --data-urlencode 'repo=github.com/your-org/your-repo' \  --data-urlencode 'prNumber=42' \  --data-urlencode 'page=1' \  --data-urlencode 'pageSize=100'
curl --get https://api.cursor.com/analytics/team/bugbot-reviews \  -u YOUR_API_KEY: \  --data-urlencode 'dryRun=true' \  --data-urlencode 'repo=github.com/your-org/your-repo' \  --data-urlencode 'prNumber=42'

Respuesta (revisión publicada):

{  "data": [    {      "request_id": "6e0d261c-86a2-4383-89f0-9162c1c10662",      "timestamp": "2026-06-29T19:42:18.000Z",      "repo": "github.com/your-org/your-repo",      "repo_node_id": "R_kgDOABCDEF",      "pr_number": 42,      "commit_sha": "9f3c2a1b7d8e4f5061728394a5b6c7d8e9f0a1b2",      "bugs_found": 2,      "cost_cents": 42.5,      "dry_run": false,      "publication_status": "posted",      "bugs": [        {          "comment_id": "2147483999",          "resolution_status": "resolved",          "severity": "high"        },        {          "comment_id": "2147484000",          "resolution_status": "unresolved",          "severity": "medium"        }      ]    }  ],  "pagination": {    "page": 1,    "pageSize": 100,    "totalItems": 1,    "totalPages": 1,    "hasNextPage": false,    "hasPreviousPage": false  },  "params": {    "metric": "bugbot-reviews",    "teamId": 12345,    "startDate": "2026-06-01",    "endDate": "2026-06-29",    "repo": "github.com/your-org/your-repo",    "prNumber": 42,    "page": 1,    "pageSize": 100  }}

Respuesta (revisión en modo dry run):

{  "data": [    {      "request_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",      "timestamp": "2026-06-29T20:15:03.000Z",      "repo": "github.com/your-org/your-repo",      "repo_node_id": "R_kgDOABCDEF",      "pr_number": 42,      "commit_sha": "9f3c2a1b7d8e4f5061728394a5b6c7d8e9f0a1b2",      "bugs_found": 1,      "cost_cents": null,      "dry_run": true,      "publication_status": "dry_run",      "bugs": [        {          "comment_id": null,          "resolution_status": null,          "severity": "medium",          "title": "Unbounded retry loop",          "description": "retry() recurses without a ceiling.",          "locations": [            { "file": "src/net.ts", "start_line": 5, "end_line": 9 }          ]        }      ]    }  ],  "pagination": {    "page": 1,    "pageSize": 100,    "totalItems": 1,    "totalPages": 1,    "hasNextPage": false,    "hasPreviousPage": false  },  "params": {    "metric": "bugbot-reviews",    "teamId": 12345,    "startDate": "2026-06-01",    "endDate": "2026-06-29",    "repo": "github.com/your-org/your-repo",    "prNumber": 42,    "dryRun": true,    "page": 1,    "pageSize": 100  }}

repo_node_id, pr_number, commit_sha, cost_cents, bugs[].comment_id, bugs[].resolution_status y bugs[].severity pueden ser null cuando no están disponibles. cost_cents es null cuando la revisión no se factura por separado. En las revisiones en modo dry-run, bugs[].title, bugs[].description y bugs[].locations contienen el contenido del hallazgo. Los hallazgos en dry-run tienen comment_id: null y resolution_status: null porque no se publica nada en el SCM.

Para iniciar una revisión en modo "dry run", llama a POST /bugbot/review con "dryRun": true. Consulta la documentación de la API de Bugbot.


Endpoints por usuario

Los endpoints por usuario proporcionan las mismas métricas que los endpoints de nivel de equipo, pero organizadas por usuario individual y con compatibilidad para paginación. Son ideales para generar informes por usuario o procesar equipos grandes en lotes.

Parámetros de consulta comunes

ParámetroTipoObligatorioDescripción
startDateCadena de fechaNoFecha de inicio del período de analítica (predeterminado: hace 7 días)
endDateCadena de fechaNoFecha de finalización del período de analítica (predeterminado: hoy)
pagenúmeroNoNúmero de página (predeterminado: 1)
pageSizenúmeroNoNúmero de usuarios por página (predeterminado: 100, máximo: 500)
userscadenaNoLimita la paginación a usuarios específicos (correos electrónicos o ID separados por comas; p. ej., alice@example.com,user_abc123)

Filtrado de usuarios: Al proporcionar el parámetro users a los endpoints por usuario:

  • La paginación se filtra: Solo se incluyen los usuarios especificados en el conjunto de resultados y en los recuentos de paginación
  • Útil para: Obtener datos detallados de miembros específicos del equipo sin tener que paginar por todos los usuarios
  • Ejemplo: Si tienes 500 usuarios, pero solo quieres datos de 3 usuarios específicos, filtra por sus correos electrónicos para obtener los 3 en una sola página

Nota: Los endpoints por usuario admiten los mismos formatos de fecha y atajos que los endpoints de nivel de equipo. Consulta la sección Formato de fecha anterior.

Formato de respuesta

Todos los endpoints por usuario devuelven datos con este formato:

{  "data": {    "user1@example.com": [ /* datos del usuario */ ],    "user2@example.com": [ /* datos del usuario */ ]  },  "pagination": {    "page": 1,    "pageSize": 100,    "totalUsers": 250,    "totalPages": 3,    "hasNextPage": true,    "hasPreviousPage": false  },  "params": {    "metric": "agent-edits",    "teamId": 12345,    "startDate": "2025-01-01",    "endDate": "2025-01-31",    "page": 1,    "pageSize": 100,    "userMappings": [      { "id": "user_abc123", "email": "user1@example.com" },      { "id": "user_def456", "email": "user2@example.com" }    ]  }}

Estructura de la respuesta:

  • data - Objeto indexado por direcciones de email de usuario, cada una con un array de las métricas de ese usuario
  • pagination - Información de paginación
  • params - Parámetros de la solicitud devueltos
    • userMappings - Array que asigna direcciones de email a ID de usuario públicos para esta página. Útil para realizar referencias cruzadas con otras API o crear enlaces a perfiles de usuario.

Endpoints disponibles

Todos los endpoints por usuario siguen el patrón: /analytics/by-user/{metric}

  • GET /analytics/by-user/agent-edits - Ediciones del agente por usuario
  • GET /analytics/by-user/tabs - Uso de Tab por usuario
  • GET /analytics/by-user/models - Consumo de modelos por usuario
  • GET /analytics/by-user/top-file-extensions - Archivos principales por usuario
  • GET /analytics/by-user/client-versions - Versiones del cliente por usuario
  • GET /analytics/by-user/mcp - Adopción de MCP por usuario
  • GET /analytics/by-user/commands - Adopción de comandos por usuario
  • GET /analytics/by-user/plans - Adopción de planes por usuario
  • GET /analytics/by-user/skills - Adopción de skills por usuario
  • GET /analytics/by-user/ask-mode - Adopción del modo Ask por usuario

Ediciones de agentes por usuario

GET/analytics/by-user/agent-edits

Obtiene métricas de ediciones de agentes por usuario, con compatibilidad para paginación.

Parámetros

startDate string

Fecha de inicio del período de análisis (predeterminado: hace 7 días). Consulta Formatos de fecha

endDate string

Fecha de finalización del período de análisis (predeterminado: hoy). Consulta Formatos de fecha

page number

Número de página (indexado desde 1). Predeterminado: 1

pageSize number

Número de usuarios por página (predeterminado: 100; máximo: 500)

users string

Limita la paginación a usuarios específicos (correos electrónicos o ID de usuario separados por comas; p. ej., alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/by-user/agent-edits?page=1&pageSize=50" \  -u YOUR_API_KEY:
curl -X GET "https://api.cursor.com/analytics/by-user/agent-edits?users=alice@example.com,bob@example.com,carol@example.com" \  -u YOUR_API_KEY:

Respuesta:

{  "data": {    "alice@example.com": [      {        "event_date": "2025-01-15",        "total_suggested_diffs": 145,        "total_accepted_diffs": 98,        "total_rejected_diffs": 47,        "total_green_lines_accepted": 820,        "total_red_lines_accepted": 160,        "total_green_lines_rejected": 210,        "total_red_lines_rejected": 60,        "total_green_lines_suggested": 1030,        "total_red_lines_suggested": 220,        "total_lines_suggested": 1250,        "total_lines_accepted": 980      },      {        "event_date": "2025-01-16",        "total_suggested_diffs": 132,        "total_accepted_diffs": 89,        "total_rejected_diffs": 43,        "total_green_lines_accepted": 740,        "total_red_lines_accepted": 150,        "total_green_lines_rejected": 185,        "total_red_lines_rejected": 55,        "total_green_lines_suggested": 925,        "total_red_lines_suggested": 175,        "total_lines_suggested": 1100,        "total_lines_accepted": 890      }    ],    "bob@example.com": [      {        "event_date": "2025-01-15",        "total_suggested_diffs": 95,        "total_accepted_diffs": 72,        "total_rejected_diffs": 23,        "total_green_lines_accepted": 450,        "total_red_lines_accepted": 90,        "total_green_lines_rejected": 120,        "total_red_lines_rejected": 35,        "total_green_lines_suggested": 570,        "total_red_lines_suggested": 125,        "total_lines_suggested": 695,        "total_lines_accepted": 540      }    ]  },  "pagination": {    "page": 1,    "pageSize": 50,    "totalUsers": 120,    "totalPages": 3,    "hasNextPage": true,    "hasPreviousPage": false  },  "params": {    "metric": "agent-edits",    "teamId": 12345,    "startDate": "2025-01-01",    "endDate": "2025-01-31",    "page": 1,    "pageSize": 50,    "userMappings": [      { "id": "user_abc123", "email": "alice@example.com" },      { "id": "user_def456", "email": "bob@example.com" }    ]  }}

Uso de Tab por usuario

GET/analytics/by-user/tabs

Obtiene métricas de autocompletado de Tab por usuario, con compatibilidad para paginación.

Parámetros

startDate string

Fecha de inicio del período de analítica (predeterminado: hace 7 días). Consulta Formatos de fecha

endDate string

Fecha de finalización del período de analítica (predeterminado: hoy). Consulta Formatos de fecha

page number

Número de página (indexado desde 1). Predeterminado: 1

pageSize number

Número de usuarios por página (predeterminado: 100; máximo: 500)

users string

Limita la paginación a usuarios específicos (correos electrónicos o ID de usuario separados por comas; p. ej., alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/by-user/tabs?page=1&pageSize=50" \  -u YOUR_API_KEY:

Respuesta:

{  "data": {    "alice@example.com": [      {        "event_date": "2025-01-15",        "total_suggestions": 320,        "total_accepts": 210,        "total_rejects": 110,        "total_green_lines_accepted": 280,        "total_red_lines_accepted": 120,        "total_green_lines_rejected": 90,        "total_red_lines_rejected": 45,        "total_green_lines_suggested": 370,        "total_red_lines_suggested": 165,        "total_lines_suggested": 535,        "total_lines_accepted": 400      }    ],    "bob@example.com": [      {        "event_date": "2025-01-15",        "total_suggestions": 180,        "total_accepts": 120,        "total_rejects": 60,        "total_green_lines_accepted": 150,        "total_red_lines_accepted": 70,        "total_green_lines_rejected": 50,        "total_red_lines_rejected": 25,        "total_green_lines_suggested": 200,        "total_red_lines_suggested": 95,        "total_lines_suggested": 295,        "total_lines_accepted": 220      }    ]  },  "pagination": {    "page": 1,    "pageSize": 50,    "totalUsers": 120,    "totalPages": 3,    "hasNextPage": true,    "hasPreviousPage": false  },  "params": {    "metric": "tabs",    "teamId": 12345,    "startDate": "2025-01-01",    "endDate": "2025-01-31",    "page": 1,    "pageSize": 50,    "userMappings": [      { "id": "user_abc123", "email": "alice@example.com" },      { "id": "user_def456", "email": "bob@example.com" }    ]  }}

Consumo de modelos por usuario

GET/analytics/by-user/models

Obtiene métricas de consumo de modelos por usuario, con compatibilidad para paginación.

Parámetros

startDate string

Fecha de inicio del período de analítica (predeterminado: hace 7 días). Consulta Formatos de fecha

endDate string

Fecha de finalización del período de analítica (predeterminado: hoy). Consulta Formatos de fecha

page number

Número de página (indexado desde 1). Predeterminado: 1

pageSize number

Número de usuarios por página (predeterminado: 100; máximo: 500)

users string

Limita la paginación a usuarios específicos (correos electrónicos o ID de usuario separados por comas; por ejemplo, alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/by-user/models?page=1&pageSize=50" \  -u YOUR_API_KEY:

Respuesta:

{  "data": {    "alice@example.com": [      {        "date": "2025-01-15",        "model_breakdown": {          "claude-sonnet-4.5": {            "messages": 85,            "users": 1          },          "gpt-4o": {            "messages": 32,            "users": 1          }        }      }    ],    "bob@example.com": [      {        "date": "2025-01-15",        "model_breakdown": {          "claude-sonnet-4.5": {            "messages": 64,            "users": 1          }        }      }    ]  },  "pagination": {    "page": 1,    "pageSize": 50,    "totalUsers": 120,    "totalPages": 3,    "hasNextPage": true,    "hasPreviousPage": false  },  "params": {    "metric": "models",    "teamId": 12345,    "startDate": "2025-01-01",    "endDate": "2025-01-31",    "page": 1,    "pageSize": 50,    "userMappings": [      { "id": "user_abc123", "email": "alice@example.com" },      { "id": "user_def456", "email": "bob@example.com" }    ]  }}

Principales extensiones de archivos por usuario

GET/analytics/by-user/top-file-extensions

Obtiene métricas de las extensiones de archivo más usadas, organizadas por usuario, con compatibilidad para paginación.

Parámetros

startDate string

Fecha de inicio del período de analítica (predeterminado: hace 7 días). Consulta Formatos de fecha

endDate string

Fecha de finalización del período de analítica (predeterminado: hoy). Consulta Formatos de fecha

page number

Número de página (indexado desde 1). Predeterminado: 1

pageSize number

Número de usuarios por página (predeterminado: 100, máximo: 500)

users string

Limita la paginación a usuarios específicos (correos electrónicos o ID de usuario separados por comas; p. ej., alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/by-user/top-file-extensions?page=1&pageSize=50" \  -u YOUR_API_KEY:

Respuesta:

{  "data": {    "alice@example.com": [      {        "event_date": "2025-01-15",        "file_extension": "tsx",        "total_files": 45,        "total_accepts": 32,        "total_rejects": 10,        "total_lines_suggested": 890,        "total_lines_accepted": 650,        "total_lines_rejected": 240      },      {        "event_date": "2025-01-15",        "file_extension": "ts",        "total_files": 38,        "total_accepts": 28,        "total_rejects": 8,        "total_lines_suggested": 720,        "total_lines_accepted": 540,        "total_lines_rejected": 180      }    ],    "bob@example.com": [      {        "event_date": "2025-01-15",        "file_extension": "py",        "total_files": 22,        "total_accepts": 18,        "total_rejects": 4,        "total_lines_suggested": 410,        "total_lines_accepted": 340,        "total_lines_rejected": 70      }    ]  },  "pagination": {    "page": 1,    "pageSize": 50,    "totalUsers": 120,    "totalPages": 3,    "hasNextPage": true,    "hasPreviousPage": false  },  "params": {    "metric": "top-files",    "teamId": 12345,    "startDate": "2025-01-01",    "endDate": "2025-01-31",    "page": 1,    "pageSize": 50,    "userMappings": [      { "id": "user_abc123", "email": "alice@example.com" },      { "id": "user_def456", "email": "bob@example.com" }    ]  }}

Versiones del cliente por usuario

GET/analytics/by-user/client-versions

Obtiene métricas de las versiones del cliente por usuario, con compatibilidad para paginación.

Parámetros

startDate string

Fecha de inicio del período de analítica (predeterminado: hace 7 días). Consulta Formatos de fecha

endDate string

Fecha de finalización del período de analítica (predeterminado: hoy). Consulta Formatos de fecha

page number

Número de página (indexado desde 1). Predeterminado: 1

pageSize number

Número de usuarios por página (predeterminado: 100, máximo: 500)

users string

Limita la paginación a usuarios específicos (correos electrónicos o ID de usuario separados por comas; p. ej., alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/by-user/client-versions?page=1&pageSize=50" \  -u YOUR_API_KEY:

Respuesta:

{  "data": {    "alice@example.com": [      {        "event_date": "2025-01-15",        "client_version": "0.42.3",        "user_count": 1,        "percentage": 1.0      }    ],    "bob@example.com": [      {        "event_date": "2025-01-15",        "client_version": "0.42.2",        "user_count": 1,        "percentage": 1.0      }    ]  },  "pagination": {    "page": 1,    "pageSize": 50,    "totalUsers": 120,    "totalPages": 3,    "hasNextPage": true,    "hasPreviousPage": false  },  "params": {    "metric": "client-versions",    "teamId": 12345,    "startDate": "2025-01-01",    "endDate": "2025-01-31",    "page": 1,    "pageSize": 50,    "userMappings": [      { "id": "user_abc123", "email": "alice@example.com" },      { "id": "user_def456", "email": "bob@example.com" }    ]  }}

Adopción de MCP por usuario

GET/analytics/by-user/mcp

Obtén métricas de adopción de herramientas MCP por usuario, con compatibilidad para paginación.

Parámetros

startDate string

Fecha de inicio del período de analítica (predeterminado: hace 7 días). Consulta Formatos de fecha

endDate string

Fecha de finalización del período de analítica (predeterminado: hoy). Consulta Formatos de fecha

page number

Número de página (indexado desde 1). Predeterminado: 1

pageSize number

Número de usuarios por página (predeterminado: 100, máximo: 500)

users string

Limita la paginación a usuarios específicos (correos electrónicos o ID de usuario separados por comas; por ejemplo, alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/by-user/mcp?page=1&pageSize=50" \  -u YOUR_API_KEY:

Respuesta:

{  "data": {    "alice@example.com": [      {        "event_date": "2025-01-15",        "tool_name": "read_file",        "mcp_server_name": "filesystem",        "usage": 45      },      {        "event_date": "2025-01-16",        "tool_name": "read_file",        "mcp_server_name": "filesystem",        "usage": 38      }    ],    "bob@example.com": [      {        "event_date": "2025-01-15",        "tool_name": "search_web",        "mcp_server_name": "brave-search",        "usage": 23      }    ]  },  "pagination": {    "page": 1,    "pageSize": 50,    "totalUsers": 120,    "totalPages": 3,    "hasNextPage": true,    "hasPreviousPage": false  },  "params": {    "metric": "mcp",    "teamId": 12345,    "startDate": "2025-01-01",    "endDate": "2025-01-31",    "page": 1,    "pageSize": 50,    "userMappings": [      { "id": "user_abc123", "email": "alice@example.com" },      { "id": "user_def456", "email": "bob@example.com" }    ]  }}

Adopción de comandos por usuario

GET/analytics/by-user/commands

Obtiene métricas de adopción de comandos por usuario, con compatibilidad para paginación.

Parámetros

startDate string

Fecha de inicio del período de analítica (predeterminado: hace 7 días). Consulta Formatos de fecha

endDate string

Fecha de finalización del período de analítica (predeterminado: hoy). Consulta Formatos de fecha

page number

Número de página (indexado desde 1). Predeterminado: 1

pageSize number

Número de usuarios por página (predeterminado: 100; máximo: 500)

users string

Limita la paginación a usuarios específicos (correos electrónicos o ID de usuario separados por comas; p. ej., alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/by-user/commands?page=1&pageSize=50" \  -u YOUR_API_KEY:

Respuesta:

{  "data": {    "alice@example.com": [      {        "event_date": "2025-01-15",        "command_name": "explain",        "usage": 12      },      {        "event_date": "2025-01-16",        "command_name": "explain",        "usage": 15      }    ],    "bob@example.com": [      {        "event_date": "2025-01-15",        "command_name": "refactor",        "usage": 8      }    ]  },  "pagination": {    "page": 1,    "pageSize": 50,    "totalUsers": 120,    "totalPages": 3,    "hasNextPage": true,    "hasPreviousPage": false  },  "params": {    "metric": "commands",    "teamId": 12345,    "startDate": "2025-01-01",    "endDate": "2025-01-31",    "page": 1,    "pageSize": 50,    "userMappings": [      { "id": "user_abc123", "email": "alice@example.com" },      { "id": "user_def456", "email": "bob@example.com" }    ]  }}

Adopción del modo Plan por usuario

GET/analytics/by-user/plans

Obtén métricas de adopción del modo Plan por usuario, con compatibilidad para paginación.

Parámetros

startDate string

Fecha de inicio del período de analítica (predeterminado: hace 7 días). Consulta Formato de fecha

endDate string

Fecha de fin del período de analítica (predeterminado: hoy). Consulta Formato de fecha

page number

Número de página (indexado desde 1). Predeterminado: 1

pageSize number

Número de usuarios por página (predeterminado: 100, máximo: 500)

users string

Limita la paginación a usuarios específicos (correos electrónicos o ID de usuario separados por comas; p. ej., alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/by-user/plans?page=1&pageSize=50" \  -u YOUR_API_KEY:

Respuesta:

{  "data": {    "alice@example.com": [      {        "event_date": "2025-01-15",        "model": "claude-sonnet-4.5",        "usage": 23      },      {        "event_date": "2025-01-16",        "model": "claude-sonnet-4.5",        "usage": 19      }    ],    "bob@example.com": [      {        "event_date": "2025-01-15",        "model": "gpt-4o",        "usage": 12      }    ]  },  "pagination": {    "page": 1,    "pageSize": 50,    "totalUsers": 120,    "totalPages": 3,    "hasNextPage": true,    "hasPreviousPage": false  },  "params": {    "metric": "plans",    "teamId": 12345,    "startDate": "2025-01-01",    "endDate": "2025-01-31",    "page": 1,    "pageSize": 50,    "userMappings": [      { "id": "user_abc123", "email": "alice@example.com" },      { "id": "user_def456", "email": "bob@example.com" }    ]  }}

Adopción de skills por usuario

GET/analytics/by-user/skills

Obtiene métricas de adopción de skills por usuario, con compatibilidad para paginación.

Parámetros

startDate string

Fecha de inicio del período de analítica (predeterminado: hace 7 días). Consulta Formato de fecha

endDate string

Fecha de fin del período de analítica (predeterminado: hoy). Consulta Formato de fecha

page number

Número de página (indexado desde 1). Predeterminado: 1

pageSize number

Número de usuarios por página (predeterminado: 100; máximo: 500)

users string

Limita la paginación a usuarios específicos (correos electrónicos o ID de usuario separados por comas; por ejemplo, alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/by-user/skills?page=1&pageSize=50" \  -u YOUR_API_KEY:

Respuesta:

{  "data": {    "alice@example.com": [      {        "event_date": "2025-01-15",        "skill_name": "react-best-practices",        "usage": 8      },      {        "event_date": "2025-01-15",        "skill_name": "create-rule",        "usage": 3      },      {        "event_date": "2025-01-16",        "skill_name": "react-best-practices",        "usage": 5      }    ],    "bob@example.com": [      {        "event_date": "2025-01-15",        "skill_name": "commit-message-helper",        "usage": 5      },      {        "event_date": "2025-01-15",        "skill_name": "create-skill",        "usage": 2      }    ]  },  "pagination": {    "page": 1,    "pageSize": 50,    "totalUsers": 120,    "totalPages": 3,    "hasNextPage": true,    "hasPreviousPage": false  },  "params": {    "metric": "skills",    "teamId": 12345,    "startDate": "2025-01-01",    "endDate": "2025-01-31",    "page": 1,    "pageSize": 50,    "userMappings": [      { "id": "user_abc123", "email": "alice@example.com" },      { "id": "user_def456", "email": "bob@example.com" }    ]  }}

Adopción del modo Ask por usuario

GET/analytics/by-user/ask-mode

Obtiene métricas de adopción del modo Ask por usuario, con compatibilidad para paginación.

Parámetros

startDate string

Fecha de inicio del período de analítica (predeterminado: hace 7 días). Consulta Formato de fecha

endDate string

Fecha de fin del período de analítica (predeterminado: hoy). Consulta Formato de fecha

page number

Número de página (indexado desde 1). Predeterminado: 1

pageSize number

Número de usuarios por página (predeterminado: 100; máximo: 500)

users string

Limita la paginación a usuarios específicos (correos electrónicos o ID de usuario separados por comas; p. ej., alice@example.com,user_abc123)
curl -X GET "https://api.cursor.com/analytics/by-user/ask-mode?page=1&pageSize=50" \  -u YOUR_API_KEY:

Respuesta:

{  "data": {    "alice@example.com": [      {        "event_date": "2025-01-15",        "model": "claude-sonnet-4.5",        "usage": 34      },      {        "event_date": "2025-01-16",        "model": "claude-sonnet-4.5",        "usage": 28      }    ],    "bob@example.com": [      {        "event_date": "2025-01-15",        "model": "gpt-4o",        "usage": 15      }    ]  },  "pagination": {    "page": 1,    "pageSize": 50,    "totalUsers": 120,    "totalPages": 3,    "hasNextPage": true,    "hasPreviousPage": false  },  "params": {    "metric": "ask-mode",    "teamId": 12345,    "startDate": "2025-01-01",    "endDate": "2025-01-31",    "page": 1,    "pageSize": 50,    "userMappings": [      { "id": "user_abc123", "email": "alice@example.com" },      { "id": "user_def456", "email": "bob@example.com" }    ]  }}

Endpoints a nivel de equipo

Los endpoints a nivel de equipo proporcionan métricas agregadas de todo el equipo o de subconjuntos de usuarios filtrados. Todos los endpoints permiten filtrar por intervalo de fechas y, opcionalmente, por usuario.

Parámetros de consulta comunes

ParámetroTipoObligatorioDescripción
startDateCadena de fechaNoFecha de inicio del período de analítica (predeterminado: hace 7 días)
endDateCadena de fechaNoFecha de fin del período de analítica (predeterminado: hoy)
userscadenaNoFiltra los datos por usuarios específicos (separados por comas). Cada valor puede ser un correo electrónico (p. ej., alice@example.com) o un ID de usuario público (p. ej., user_abc123). Puedes combinar ambos formatos.

Filtrado de usuarios: El parámetro users acepta una lista de identificadores separados por comas. Cada identificador puede ser:

  • Dirección de correo electrónico (p. ej., alice@example.com) - Se detecta automáticamente por la presencia de @
  • ID de usuario público (p. ej., user_abc123) - Se detecta automáticamente por el prefijo user_
  • Formato mixto - Puedes combinar correos electrónicos e ID en la misma solicitud

Ejemplos:

# Filtrar solo por correos electrónicos?users=alice@example.com,bob@example.com,carol@example.com# Filtrar solo por public user IDs?users=user_abc123,user_def456,user_ghi789# Combinar correos electrónicos e IDs?users=alice@example.com,user_def456,bob@example.com

Cuando se filtra por usuarios, la API devuelve datos solo de esos usuarios específicos. Esto es útil para:

  • Analizar miembros específicos del equipo o grupos (p. ej., responsables de ingeniería o equipos de proyecto específicos)
  • Generar informes para un subconjunto de usuarios
  • Comparar métricas entre personas seleccionadas

Formato de fecha

Comportamiento predeterminado: Si omite startDate y endDate, la API usa de forma predeterminada los últimos 7 días (desde hace 7 días hasta hoy). Esto resulta ideal para consultas rápidas sin especificar fechas.

Formatos estándar:

  • YYYY-MM-DD - Formato de fecha simple (p. ej., 2025-01-15) ← Recomendado
  • Marcas de tiempo ISO 8601 (p. ej., 2025-01-15T00:00:00Z)

Atajos:

  • now o today - Fecha actual (a las 00:00:00)
  • yesterday - Fecha de ayer (a las 00:00:00)
  • <number>d - Días atrás (p. ej., 7d = hace 7 días, 30d = hace 30 días)

Notas importantes:

  • La hora se ignora: Todas las fechas se resuelven al nivel del día (00:00:00 UTC). Enviar 2025-01-15T14:30:00Z equivale a enviar 2025-01-15.
  • Use los formatos recomendados: Use YYYY-MM-DD o atajos para aprovechar mejor el almacenamiento en caché HTTP. Los distintos valores de hora (como T14:30:00Z frente a T08:00:00Z) impiden que se reutilice la caché, aunque correspondan al mismo día.
  • Intervalos de fechas: Se limitan a un máximo de 30 días.

Ejemplos:

# Omite las fechas para los últimos 7 días (lo más simple y lo mejor para el caching)curl "https://api.cursor.com/analytics/team/agent-edits"# Uso del formato YYYY-MM-DD para un rango de fechas específico (recomendado)?startDate=2025-01-01&endDate=2025-01-31# Uso de atajos para los últimos 30 días?startDate=30d&endDate=today# Uso de atajos para los últimos 14 días?startDate=14d&endDate=now# ❌ No uses timestamps: impide el caching y, de todas formas, la hora se ignora?startDate=2025-01-15T14:30:00Z&endDate=2025-01-31T23:59:59Z

Límites de uso

Los límites de uso se aplican por equipo y se restablecen cada minuto:

  • Endpoints a nivel de equipo: 100 solicitudes por minuto por equipo
  • Endpoints por usuario: 50 solicitudes por minuto por equipo

¿Qué sucede si superas el límite de uso?

Si superas el límite de uso, recibirás una respuesta 429 Too Many Requests:

{  "error": "Too Many Requests",  "message": "Rate limit exceeded. Please try again later."}

Mejores prácticas

Para conocer las mejores prácticas generales de la API, como el backoff exponencial, las estrategias de caché y el manejo de errores, consulta las Mejores prácticas de la descripción general de la API.

  1. Usa la paginación para equipos grandes: Si tu equipo tiene más de 100 usuarios, usa los endpoints por usuario con paginación para evitar tiempos de espera.
  2. Aprovecha la caché: Los endpoints de equipo y de usuario admiten ETags. Guarda el ETag y usa los encabezados If-None-Match para reducir transferencias de datos innecesarias.
  3. Filtra por usuarios cuando sea posible: Si solo necesitas datos de usuarios específicos, usa el parámetro users para reducir el tiempo de consulta.
  4. Intervalos de fechas: Mantén intervalos de fechas razonables (p. ej., de 1 a 3 meses) para un rendimiento óptimo.