Skip to main content

Command Palette

Search for a command to run...

API

Analytics API

A Analytics API oferece uma visão abrangente sobre o uso do Cherri Code pela equipe, incluindo métricas de codificação assistida por AI, usuários ativos, uso de modelos e mais.

  • A Analytics API usa Basic Authentication. A maioria dos endpoints exige uma API key com escopo de admin (admin:*). A análise de Bugbot review exige o escopo read:*. Gere uma chave no Cherri Code Dashboard → API Keys.
  • Para detalhes sobre autenticação, limite de taxa e boas práticas, consulte a API Overview.
  • Disponibilidade: Somente para equipes corporativas

Endpoints disponíveis

Edições do agente

GET/analytics/team/agent-edits

Obtenha métricas sobre edições de código sugeridas por IA e aceitas pela sua equipe no Cherri Code.

Parâmetros

startDate string

Data de início do período de análise (padrão: há 7 dias). Consulte Formatos de data

endDate string

Data de término do período de análise (padrão: hoje). Consulte Formatos de data

users string

Filtre os dados para usuários específicos (e-mails ou IDs de usuário separados por vírgula, por exemplo, [email protected],user_abc123)
curl -X GET "https://api.cursor.com/analytics/team/agent-edits" \  -u YOUR_API_KEY:

Resposta:

{  "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 do Tab

GET/analytics/team/tabs

Obtenha métricas de uso do preenchimento automático do Tab pela sua equipe.

Parâmetros

startDate string

Data de início do período de análise (padrão: há 7 dias). Consulte Formatos de data

endDate string

Data de término do período de análise (padrão: hoje). Consulte Formatos de data

users string

Filtre os dados para usuários específicos (e-mails ou IDs de usuário separados por vírgula, por exemplo, [email protected],user_abc123)
curl -X GET "https://api.cursor.com/analytics/team/tabs" \  -u YOUR_API_KEY:

Resposta:

{  "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"  }}

Usuários ativos diários (DAU)

GET/analytics/team/dau

Retorna a contagem diária de usuários ativos da sua equipe. DAU é o número de usuários únicos que usaram o Cherri Code em um determinado dia. Um usuário ativo é aquele que usou pelo menos uma funcionalidade de IA no Cherri Code.

A resposta inclui métricas detalhadas de DAU para a CLI do Cherri Code, agentes em nuvem e BugBot.

Parâmetros

startDate string

Data de início do período de análise (padrão: há 7 dias). Consulte Formatos de data

endDate string

Data de término do período de análise (padrão: hoje). Consulte Formatos de data

users string

Filtrar os dados para usuários específicos (e-mails ou IDs de usuário separados por vírgulas, por exemplo, [email protected],user_abc123)
curl -X GET "https://api.cursor.com/analytics/team/dau?startDate=14d&endDate=today" \  -u YOUR_API_KEY:

Resposta:

{  "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"  }}

Versões do cliente

GET/analytics/team/client-versions

Retorna a distribuição das versões do cliente Cherri Code usadas pela sua equipe (o padrão é considerar os últimos 7 dias). Informamos a versão mais recente de cada usuário por dia (se um usuário tiver instalado várias versões, informamos a mais recente).

Parâmetros

startDate string

Data de início do período de análise (padrão: 7 dias atrás). Consulte Formatos de data

endDate string

Data de término do período de análise (padrão: hoje). Consulte Formatos de data

users string

Filtre os dados para usuários específicos (e-mails ou IDs de usuário separados por vírgula, por exemplo, [email protected],user_abc123)
curl -X GET "https://api.cursor.com/analytics/team/client-versions" \  -u YOUR_API_KEY:

Resposta:

{  "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"  }}

Uso de modelos

GET/analytics/team/models

Obtenha métricas sobre o uso de modelos de IA pela sua equipe.

Parâmetros

startDate string

Data de início do período de análise (padrão: há 7 dias). Consulte Formatos de data

endDate string

Data de término do período de análise (padrão: hoje). Consulte Formatos de data

users string

Filtrar os dados para usuários específicos (e-mails ou IDs de usuário separados por vírgula, por exemplo, [email protected],user_abc123)
curl -X GET "https://api.cursor.com/analytics/team/models" \  -u YOUR_API_KEY:

Resposta:

{  "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"  }}

Principais extensões de arquivos

GET/analytics/team/top-file-extensions

Retorna os arquivos mais editados pela sua equipe no Cherri Code. Retorna as 5 extensões de arquivo mais frequentes por dia, com base no volume de sugestões.

Parâmetros

startDate string

Data de início do período de análise (padrão: há 7 dias). Consulte Formatos de data

endDate string

Data de término do período de análise (padrão: hoje). Consulte Formatos de data

users string

Filtre os dados para usuários específicos (e-mails ou IDs de usuário separados por vírgulas, por exemplo, [email protected],user_abc123)
curl -X GET "https://api.cursor.com/analytics/team/top-file-extensions?startDate=30d&endDate=today" \  -u YOUR_API_KEY:

Resposta:

{  "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"  }}

Adoção de MCP

GET/analytics/team/mcp

Obtenha métricas sobre a adoção de ferramentas MCP (Model Context Protocol) pela sua equipe. Retorna contagens diárias de adoção detalhadas por nome da ferramenta e do servidor MCP.

Parâmetros

startDate string

Data de início do período de análise (padrão: há 7 dias). Consulte Formatos de data

endDate string

Data de término do período de análise (padrão: hoje). Consulte Formatos de data

users string

Filtre os dados para usuários específicos (e-mails ou IDs de usuário separados por vírgula, por exemplo, [email protected],user_abc123)
curl -X GET "https://api.cursor.com/analytics/team/mcp" \  -u YOUR_API_KEY:

Resposta:

{  "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"  }}

Adoção de comandos

GET/analytics/team/commands

Obtenha métricas sobre a adoção de comandos do Cherri Code pela sua equipe. Retorna contagens diárias de adoção por nome de comando.

Parâmetros

startDate string

Data de início do período de análise (padrão: há 7 dias). Consulte Formatos de data

endDate string

Data de término do período de análise (padrão: hoje). Consulte Formatos de data

users string

Filtrar os dados para usuários específicos (e-mails ou IDs de usuário separados por vírgula, por exemplo, [email protected],user_abc123)
curl -X GET "https://api.cursor.com/analytics/team/commands" \  -u YOUR_API_KEY:

Resposta:

{  "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"  }}

Adoção do modo Plan

GET/analytics/team/plans

Obtenha métricas sobre a adoção do modo Plan pela sua equipe. Retorna contagens diárias de adoção por modelo de IA usado na geração de planos.

Parâmetros

startDate string

Data de início do período de análise (padrão: há 7 dias). Consulte Formatos de data

endDate string

Data de término do período de análise (padrão: hoje). Consulte Formatos de data

users string

Filtre os dados para usuários específicos (e-mails ou IDs de usuário separados por vírgula, por exemplo, [email protected],user_abc123)
curl -X GET "https://api.cursor.com/analytics/team/plans" \  -u YOUR_API_KEY:

Resposta:

{  "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"  }}

Adoção de Skills

GET/analytics/team/skills

Obtenha métricas sobre a adoção de Skills pela sua equipe. Retorna contagens diárias de adoção por nome de skill.

Parâmetros

startDate string

Data de início do período de análise (padrão: há 7 dias). Consulte Formatos de data

endDate string

Data de término do período de análise (padrão: hoje). Consulte Formatos de data

users string

Filtrar os dados para usuários específicos (e-mails ou IDs de usuário separados por vírgulas, por exemplo, [email protected],user_abc123)
curl -X GET "https://api.cursor.com/analytics/team/skills" \  -u YOUR_API_KEY:

Resposta:

{  "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"  }}

Adoção do modo Ask

GET/analytics/team/ask-mode

Obtenha métricas sobre a adoção do modo Ask pela sua equipe. Retorna contagens diárias de adoção por modelo de IA usado nas consultas do modo Ask.

Parâmetros

startDate string

Data de início do período de análise (padrão: há 7 dias). Consulte Formatos de data

endDate string

Data de término do período de análise (padrão: hoje). Consulte Formatos de data

users string

Filtre os dados para usuários específicos (e-mails ou IDs de usuário separados por vírgulas, por exemplo, [email protected],user_abc123)
curl -X GET "https://api.cursor.com/analytics/team/ask-mode" \  -u YOUR_API_KEY:

Resposta:

{  "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"  }}

Conversation Insights

GET/analytics/team/conversation-insights

Obtenha os mesmos dados agregados do Conversation Insights exibidos no dashboard. Este endpoint retorna insights agregados, não exportações brutas nem conteúdo bruto de conversas.

intents e complexity descrevem conversas inteiras.

categories, guidanceLevels e workTypes descrevem o trabalho em segmentos de conversa.

Parâmetros

startDate string

Data de início do período de análise (padrão: há 7 dias). Consulte Formatos de data

endDate string

Data de término do período de análise (padrão: hoje). Consulte Formatos de data

include string | string[]

Obrigatório. Selecione quais recortes do Conversation Insights retornar. Valores aceitos: intents, complexity, categories, guidanceLevels e workTypes. Você pode passar include como uma lista separada por vírgulas, como include=intents,complexity, ou repeti-lo, como include=intents&include=workTypes.

users string

Opcional. Filtre o Conversation Insights por usuários específicos. Passe e-mails ou IDs de usuário separados por vírgulas, por exemplo, [email protected],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&[email protected],[email protected]" \  -u YOUR_API_KEY:

Resposta:

{  "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"    ]  }}

Ranqueamento

GET/analytics/team/leaderboard

Obtenha um ranqueamento dos membros da equipe com base nas métricas de uso de IA.

Comportamento:

  • Sem filtro de usuários: retorna os usuários classificados pela métrica especificada (padrão: linhas aceitas combinadas)
  • Com filtro de usuários: retorna os usuários que correspondem ao filtro (com suas posições reais no ranqueamento de toda a equipe)
  • Oferece suporte à paginação para equipes com muitos membros

Parâmetros

startDate string

Data de início do período de análise (padrão: há 7 dias). Consulte Formatos de data

endDate string

Data de término do período de análise (padrão: hoje). Consulte Formatos de data

page number

Número da página para paginação (indexado a partir de 1). Padrão: 1

pageSize number

Número de usuários por página (padrão: 10, máximo: 500)

users string

Filtre usuários específicos (e-mails ou IDs de usuário separados por vírgula, por exemplo, [email protected],user_abc123)
# Obter a primeira página do leaderboard (10 principais usuários)curl -X GET "https://api.cursor.com/analytics/team/leaderboard" \  -u YOUR_API_KEY:
# Obter a segunda página com tamanho de página personalizadocurl -X GET "https://api.cursor.com/analytics/team/leaderboard?page=2&pageSize=20" \  -u YOUR_API_KEY:
# Filtrar por usuários específicoscurl -X GET "https://api.cursor.com/analytics/team/[email protected],[email protected]" \  -u YOUR_API_KEY:

Resposta:

{  "data": {    "tab_leaderboard": {      "data": [        {          "email": "[email protected]",          "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": "[email protected]",          "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": "[email protected]",          "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": "[email protected]",          "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  }}

Análises do Bugbot

GET/analytics/team/bugbot

Obtenha análises das revisões do Bugbot por PR da sua equipe, incluindo a quantidade de issues por gravidade e quantas foram resolvidas.

Para dados por revisão, incluindo o custo faturado e findings individuais, use análise de Bugbot review.

Parâmetros

startDate string

Data de início do período de análise (padrão: há 7 dias). Consulte Formatos de data

endDate string

Data de término do período de análise (padrão: hoje). Consulte Formatos de data

prState string

Filtro de status da PR. Valores permitidos: merged ou all. Padrão: merged. Use merged apenas para análises de PRs mergeadas. Use all para análises de PRs em todos os status.

repo string

Filtro opcional de repositório. Aceita URLs completas ou formatos host/path (por exemplo, https://github.com/org/repo.git ou github.com/org/repo). Normalizado para host/owner/repo.

page number

Número da página para paginação (indexado a partir de 1). Padrão: 1

pageSize number

Número de PRs por página (padrão: 100, máx.: 250)
# Obter o analytics de PRs do Bugbot dos últimos 7 dias (janela padrão)curl -X GET "https://api.cursor.com/analytics/team/bugbot" \  -u YOUR_API_KEY:
# Filtrar por repositório e intervalo de datascurl -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 resultadoscurl -X GET "https://api.cursor.com/analytics/team/bugbot?page=2&pageSize=50" \  -u YOUR_API_KEY:

Resposta:

{  "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  }}

Análise de Bugbot review

GET/analytics/team/bugbot-reviews

Retorna um item para cada Bugbot review concluída, incluindo o commit revisado, a quantidade de findings, o custo faturado e dados de resolução por finding.

Inclui reviews publicadas e dry-run reviews. Findings publicadas são identificadas por comment_id e resolution_status. Já as findings de dry-run retornam title, description e locations, pois nada é publicado no SCM.

Requer uma API key com escopo read:*.

Parâmetros

startDate string

Início do período de análise. O valor padrão é 7 dias atrás. Consulte Formatos de data.

endDate string

Fim do período de análise. O valor padrão é agora. Consulte Formatos de data.

repo string

Filtro opcional de repositório no formato host/owner/repo. O protocolo e o sufixo .git são opcionais.

prNumber number

Número opcional da pull request ou merge request.

page number

Número da página para paginação (indexado a partir de 1). Valor padrão: 1.

pageSize number

Número de reviews por página. Valor padrão: 100, máximo: 250.

dryRun boolean

Filtro opcional para incluir somente dry-run reviews (true) ou reviews 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'

Resposta (avaliação 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  }}

Resposta (revisão 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 e bugs[].severity podem ser null quando não estiverem disponíveis. cost_cents é null quando a revisão não é cobrada separadamente. Em revisões dry-run, bugs[].title, bugs[].description e bugs[].locations contêm o conteúdo do finding. Findings de dry-run têm comment_id: null e resolution_status: null porque nada é postado no SCM.

Para acionar uma revisão em modo de simulação, chame POST /bugbot/review com "dryRun": true. Consulte a documentação da API do Bugbot.


Endpoints por usuário

Os endpoints por usuário fornecem as mesmas métricas que os endpoints em nível de equipe, mas organizadas por usuário, com suporte à paginação. São ideais para gerar relatórios por usuário ou processar equipes grandes em lotes.

Parâmetros de consulta comuns

ParâmetroTipoObrigatórioDescrição
startDateString de dataNãoData de início do período de análise (padrão: há 7 dias)
endDateString de dataNãoData de término do período de análise (padrão: hoje)
pagenumberNãoNúmero da página (padrão: 1)
pageSizenumberNãoNúmero de usuários por página (padrão: 100, máximo: 500)
usersstringNãoLimita a paginação a usuários específicos (e-mails ou IDs separados por vírgula, por exemplo, [email protected],user_abc123)

Filtragem de usuários: Ao fornecer o parâmetro users a endpoints por usuário:

  • A paginação é filtrada: apenas os usuários especificados são incluídos no conjunto de resultados e nas contagens de paginação
  • Útil para: obter dados detalhados de membros específicos da equipe sem precisar paginar por todos os usuários
  • Exemplo: se você tiver 500 usuários, mas quiser dados de apenas 3 usuários específicos, filtre pelos e-mails deles para obter os 3 em uma única página

Observação: Endpoints por usuário aceitam os mesmos formatos de data e atalhos que endpoints em nível de equipe. Consulte a seção Formatos de data acima.

Formato da resposta

Todos os endpoints por usuário retornam dados neste formato:

{  "data": {    "[email protected]": [ /* dados do usuário */ ],    "[email protected]": [ /* dados do usuário */ ]  },  "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": "[email protected]" },      { "id": "user_def456", "email": "[email protected]" }    ]  }}

Estrutura da resposta:

  • data - Objeto cujas chaves são endereços de e-mail de usuários; cada entrada contém uma matriz das métricas do respectivo usuário
  • pagination - Informações de paginação
  • params - Parâmetros da solicitação retornados
    • userMappings - Matriz que associa endereços de e-mail a IDs públicos de usuários nesta página. Útil para fazer referência cruzada com outras APIs ou criar links para perfis de usuários.

Endpoints disponíveis

Todos os endpoints por usuário seguem o padrão: /analytics/by-user/{metric}

  • GET /analytics/by-user/agent-edits - Edições do agente por usuário
  • GET /analytics/by-user/tabs - Uso do Tab por usuário
  • GET /analytics/by-user/models - Uso de modelos por usuário
  • GET /analytics/by-user/top-file-extensions - Principais arquivos por usuário
  • GET /analytics/by-user/client-versions - Versões do cliente por usuário
  • GET /analytics/by-user/mcp - Adoção do MCP por usuário
  • GET /analytics/by-user/commands - Adoção de comandos por usuário
  • GET /analytics/by-user/plans - Adoção de planos por usuário
  • GET /analytics/by-user/skills - Adoção de Skills por usuário
  • GET /analytics/by-user/ask-mode - Adoção do modo Ask por usuário

Edições do agente por usuário

GET/analytics/by-user/agent-edits

Obtém métricas de edições do agente por usuário, com suporte à paginação.

Parâmetros

startDate string

Data de início do período de análise (padrão: há 7 dias). Consulte Formatos de data

endDate string

Data de término do período de análise (padrão: hoje). Consulte Formatos de data

page number

Número da página (indexado a partir de 1). Padrão: 1

pageSize number

Número de usuários por página (padrão: 100, máximo: 500)

users string

Limita a paginação a usuários específicos (e-mails ou IDs de usuário separados por vírgula, por exemplo, [email protected],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/[email protected],[email protected],[email protected]" \  -u YOUR_API_KEY:

Resposta:

{  "data": {    "[email protected]": [      {        "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      }    ],    "[email protected]": [      {        "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": "[email protected]" },      { "id": "user_def456", "email": "[email protected]" }    ]  }}

Uso do Tab por usuário

GET/analytics/by-user/tabs

Obtenha métricas de autocompletar do Tab por usuário, com suporte à paginação.

Parâmetros

startDate string

Data de início do período de análise (padrão: há 7 dias). Consulte Formatos de data

endDate string

Data de término do período de análise (padrão: hoje). Consulte Formatos de data

page number

Número da página (indexado a partir de 1). Padrão: 1

pageSize number

Número de usuários por página (padrão: 100, máximo: 500)

users string

Limita a paginação a usuários específicos (e-mails ou IDs de usuário separados por vírgula, por exemplo, [email protected],user_abc123)
curl -X GET "https://api.cursor.com/analytics/by-user/tabs?page=1&pageSize=50" \  -u YOUR_API_KEY:

Resposta:

{  "data": {    "[email protected]": [      {        "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      }    ],    "[email protected]": [      {        "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": "[email protected]" },      { "id": "user_def456", "email": "[email protected]" }    ]  }}

Uso de modelos por usuário

GET/analytics/by-user/models

Retorna métricas de uso de modelos organizadas por usuário, com suporte à paginação.

Parâmetros

startDate string

Data de início do período de análise (padrão: 7 dias atrás). Consulte Formatos de data

endDate string

Data de término do período de análise (padrão: hoje). Consulte Formatos de data

page number

Número da página (indexado a partir de 1). Padrão: 1

pageSize number

Número de usuários por página (padrão: 100, máximo: 500)

users string

Limita a paginação a usuários específicos (e-mails ou IDs de usuário separados por vírgula, por exemplo, [email protected],user_abc123)
curl -X GET "https://api.cursor.com/analytics/by-user/models?page=1&pageSize=50" \  -u YOUR_API_KEY:

Resposta:

{  "data": {    "[email protected]": [      {        "date": "2025-01-15",        "model_breakdown": {          "claude-sonnet-4.5": {            "messages": 85,            "users": 1          },          "gpt-4o": {            "messages": 32,            "users": 1          }        }      }    ],    "[email protected]": [      {        "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": "[email protected]" },      { "id": "user_def456", "email": "[email protected]" }    ]  }}

Principais extensões de arquivo por usuário

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

Retorna métricas das principais extensões de arquivo por usuário, com suporte à paginação.

Parâmetros

startDate string

Data de início do período de análise (padrão: há 7 dias). Consulte Formatos de data

endDate string

Data de término do período de análise (padrão: hoje). Consulte Formatos de data

page number

Número da página (indexado a partir de 1). Padrão: 1

pageSize number

Número de usuários por página (padrão: 100; máximo: 500)

users string

Limita a paginação a usuários específicos (e-mails ou IDs de usuário separados por vírgula, por exemplo, [email protected],user_abc123)
curl -X GET "https://api.cursor.com/analytics/by-user/top-file-extensions?page=1&pageSize=50" \  -u YOUR_API_KEY:

Resposta:

{  "data": {    "[email protected]": [      {        "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      }    ],    "[email protected]": [      {        "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": "[email protected]" },      { "id": "user_def456", "email": "[email protected]" }    ]  }}

Versões do cliente por usuário

GET/analytics/by-user/client-versions

Obtém métricas de versão do cliente por usuário, com suporte à paginação.

Parâmetros

startDate string

Data de início do período de análise (padrão: há 7 dias). Consulte Formatos de data

endDate string

Data de término do período de análise (padrão: hoje). Consulte Formatos de data

page number

Número da página (indexado a partir de 1). Padrão: 1

pageSize number

Número de usuários por página (padrão: 100, máx.: 500)

users string

Limita a paginação a usuários específicos (e-mails ou IDs de usuário separados por vírgula, por exemplo, [email protected],user_abc123)
curl -X GET "https://api.cursor.com/analytics/by-user/client-versions?page=1&pageSize=50" \  -u YOUR_API_KEY:

Resposta:

{  "data": {    "[email protected]": [      {        "event_date": "2025-01-15",        "client_version": "0.42.3",        "user_count": 1,        "percentage": 1.0      }    ],    "[email protected]": [      {        "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": "[email protected]" },      { "id": "user_def456", "email": "[email protected]" }    ]  }}

Adoção de MCP por usuário

GET/analytics/by-user/mcp

Obtenha métricas de adoção de ferramentas MCP por usuário, com suporte à paginação.

Parâmetros

startDate string

Data de início do período de análise (padrão: há 7 dias). Consulte Formatos de data

endDate string

Data de término do período de análise (padrão: hoje). Consulte Formatos de data

page number

Número da página (indexado a partir de 1). Padrão: 1

pageSize number

Número de usuários por página (padrão: 100, máximo: 500)

users string

Limite a paginação a usuários específicos (e-mails ou IDs de usuário separados por vírgulas, por exemplo, [email protected],user_abc123)
curl -X GET "https://api.cursor.com/analytics/by-user/mcp?page=1&pageSize=50" \  -u YOUR_API_KEY:

Resposta:

{  "data": {    "[email protected]": [      {        "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      }    ],    "[email protected]": [      {        "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": "[email protected]" },      { "id": "user_def456", "email": "[email protected]" }    ]  }}

Adoção de comandos por usuário

GET/analytics/by-user/commands

Obtenha métricas de adoção de comandos por usuário, com suporte à paginação.

Parâmetros

startDate string

Data de início do período de análise (padrão: há 7 dias). Consulte Formatos de data

endDate string

Data de término do período de análise (padrão: hoje). Consulte Formatos de data

page number

Número da página (indexado a partir de 1). Padrão: 1

pageSize number

Número de usuários por página (padrão: 100, máximo: 500)

users string

Limite a paginação a usuários específicos (e-mails ou IDs de usuário separados por vírgulas, por exemplo, [email protected],user_abc123)
curl -X GET "https://api.cursor.com/analytics/by-user/commands?page=1&pageSize=50" \  -u YOUR_API_KEY:

Resposta:

{  "data": {    "[email protected]": [      {        "event_date": "2025-01-15",        "command_name": "explain",        "usage": 12      },      {        "event_date": "2025-01-16",        "command_name": "explain",        "usage": 15      }    ],    "[email protected]": [      {        "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": "[email protected]" },      { "id": "user_def456", "email": "[email protected]" }    ]  }}

Adoção do modo Plan por usuário

GET/analytics/by-user/plans

Obtenha métricas de adoção do modo Plan por usuário, com suporte à paginação.

Parâmetros

startDate string

Data de início do período de análise (padrão: há 7 dias). Consulte Formatos de data

endDate string

Data de término do período de análise (padrão: hoje). Consulte Formatos de data

page number

Número da página (indexado a partir de 1). Padrão: 1

pageSize number

Número de usuários por página (padrão: 100, máximo: 500)

users string

Limite a paginação a usuários específicos (e-mails ou IDs de usuário separados por vírgula, por exemplo, [email protected],user_abc123)
curl -X GET "https://api.cursor.com/analytics/by-user/plans?page=1&pageSize=50" \  -u YOUR_API_KEY:

Resposta:

{  "data": {    "[email protected]": [      {        "event_date": "2025-01-15",        "model": "claude-sonnet-4.5",        "usage": 23      },      {        "event_date": "2025-01-16",        "model": "claude-sonnet-4.5",        "usage": 19      }    ],    "[email protected]": [      {        "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": "[email protected]" },      { "id": "user_def456", "email": "[email protected]" }    ]  }}

Adoção de Skills por usuário

GET/analytics/by-user/skills

Retorna métricas de adoção de Skills por usuário, com suporte à paginação.

Parâmetros

startDate string

Data de início do período de análise (padrão: há 7 dias). Consulte Formatos de data

endDate string

Data de término do período de análise (padrão: hoje). Consulte Formatos de data

page number

Número da página (indexado a partir de 1). Padrão: 1

pageSize number

Número de usuários por página (padrão: 100, máximo: 500)

users string

Limitar a paginação a usuários específicos (e-mails ou IDs de usuário separados por vírgula, por exemplo, [email protected],user_abc123)
curl -X GET "https://api.cursor.com/analytics/by-user/skills?page=1&pageSize=50" \  -u YOUR_API_KEY:

Resposta:

{  "data": {    "[email protected]": [      {        "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      }    ],    "[email protected]": [      {        "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": "[email protected]" },      { "id": "user_def456", "email": "[email protected]" }    ]  }}

Adoção do modo Ask por usuário

GET/analytics/by-user/ask-mode

Obtém métricas de adoção do modo Ask por usuário, com suporte à paginação.

Parâmetros

startDate string

Data de início do período de análise (padrão: há 7 dias). Consulte Formatos de data

endDate string

Data de término do período de análise (padrão: hoje). Consulte Formatos de data

page number

Número da página (indexado a partir de 1). Padrão: 1

pageSize number

Número de usuários por página (padrão: 100, máximo: 500)

users string

Limita a paginação a usuários específicos (e-mails ou IDs de usuário separados por vírgulas, por exemplo, [email protected],user_abc123)
curl -X GET "https://api.cursor.com/analytics/by-user/ask-mode?page=1&pageSize=50" \  -u YOUR_API_KEY:

Resposta:

{  "data": {    "[email protected]": [      {        "event_date": "2025-01-15",        "model": "claude-sonnet-4.5",        "usage": 34      },      {        "event_date": "2025-01-16",        "model": "claude-sonnet-4.5",        "usage": 28      }    ],    "[email protected]": [      {        "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": "[email protected]" },      { "id": "user_def456", "email": "[email protected]" }    ]  }}

Endpoints em nível de equipe

Os endpoints em nível de equipe fornecem métricas agregadas de toda a equipe ou de subconjuntos filtrados de usuários. Todos os endpoints permitem filtrar por intervalo de datas e, opcionalmente, por usuário.

Parâmetros de consulta comuns

ParâmetroTipoObrigatórioDescrição
startDateString de dataNãoData de início do período de análise (padrão: há 7 dias)
endDateString de dataNãoData de término do período de análise (padrão: hoje)
usersstringNãoFiltre os dados por usuários específicos (separados por vírgula). Cada valor pode ser um e-mail (por exemplo, [email protected]) ou um ID público de usuário (por exemplo, user_abc123). Você pode combinar os dois formatos.

Filtragem de usuários: O parâmetro users aceita uma lista de identificadores separados por vírgula. Cada identificador pode ser:

  • Endereço de e-mail (por exemplo, [email protected]) - Detectado automaticamente pela presença de @
  • ID público de usuário (por exemplo, user_abc123) - Detectado automaticamente pelo prefixo user_
  • Formato misto - Você pode combinar e-mails e IDs na mesma solicitação

Exemplos:

# Filtrar apenas por e-mails[email protected],[email protected],[email protected]# Filtrar apenas por IDs de usuário públicos?users=user_abc123,user_def456,user_ghi789# Combinar e-mails e IDs[email protected],user_def456,[email protected]

Quando você filtra por usuários, a API retorna dados apenas desses usuários específicos. Isso é útil para:

  • Analisar membros ou grupos específicos da equipe (por exemplo, líderes de engenharia e equipes de projetos específicos)
  • Gerar relatórios para um subconjunto de usuários
  • Comparar métricas entre indivíduos selecionados

Formatos de data

Comportamento padrão: Se você omitir startDate e endDate, a API usará, por padrão, os últimos 7 dias (de 7 dias atrás até hoje). Isso é ideal para consultas rápidas sem especificar datas.

Formatos padrão:

  • YYYY-MM-DD - Formato de data simples (por exemplo, 2025-01-15) ← Recomendado
  • timestamps no formato ISO 8601 (por exemplo, 2025-01-15T00:00:00Z)

Atalhos:

  • now ou today - Data atual (às 00:00:00)
  • yesterday - Data de ontem (às 00:00:00)
  • <number>d - Dias atrás (por exemplo, 7d = 7 dias atrás, 30d = 30 dias atrás)

Observações importantes:

  • A hora é ignorada: Todas as datas são consideradas no nível do dia (00:00:00 UTC). Enviar 2025-01-15T14:30:00Z equivale a enviar 2025-01-15.
  • Use os formatos recomendados: Use YYYY-MM-DD ou atalhos para melhorar o suporte a cache HTTP. Valores de horário diferentes (como T14:30:00Z e T08:00:00Z) impedem acertos no cache, mesmo que correspondam ao mesmo dia.
  • Intervalos de datas: Limitados a no máximo 30 dias.

Exemplos:

# Omita as datas para os últimos 7 dias (mais simples e melhor para o cache)curl "https://api.cursor.com/analytics/team/agent-edits"# Use o formato YYYY-MM-DD para um intervalo de datas específico (recomendado)?startDate=2025-01-01&endDate=2025-01-31# Use atalhos para os últimos 30 dias?startDate=30d&endDate=today# Use atalhos para os últimos 14 dias?startDate=14d&endDate=now# ❌ Não use timestamps: eles impedem o cache, e o horário é ignorado de qualquer forma?startDate=2025-01-15T14:30:00Z&endDate=2025-01-31T23:59:59Z

Limites de taxa

Os limites de taxa são aplicados por equipe e redefinidos a cada minuto:

  • Endpoints em nível de equipe: 100 solicitações por minuto por equipe
  • Endpoints por usuário: 50 solicitações por minuto por equipe

O que acontece quando você ultrapassa o limite de taxa?

Quando você ultrapassa o limite de taxa, recebe uma resposta 429 Too Many Requests:

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

Melhores práticas

Para conhecer as boas práticas gerais da API, incluindo backoff exponencial, estratégias de cache e tratamento de erros, consulte as Melhores práticas da Visão geral da API.

  1. Use paginação para equipes grandes: se sua equipe tiver mais de 100 usuários, use os endpoints por usuário com paginação para evitar tempos limite.
  2. Use o cache: os endpoints nos níveis de Team e User oferecem suporte a ETags. Armazene o ETag e use os headers If-None-Match para reduzir transferências desnecessárias de dados.
  3. Filtre por usuários quando possível: se precisar de dados apenas de usuários específicos, use o parâmetro users para reduzir o tempo de consulta.
  4. Intervalos de datas: mantenha os intervalos de datas razoáveis (por exemplo, de 1 a 3 meses) para obter o melhor desempenho.