《Cursor文档》-Analytics API

Analytics API 可全面洞察团队的 Cursor 用量,包括 AI 辅助编码指标、活跃用户、模型用量等。

  • Analytics API 使用 Basic 认证。大多数端点需要具有 admin:* 权限范围的管理员 API 密钥。Bugbot 评审分析需要 read:* 权限范围。可在 Cursor Dashboard → API Keys 中生成密钥。
  • 有关身份验证、速率限制和最佳实践的详情,请参阅 API Overview
  • 可用性:仅限企业版团队使用

可用端点

智能体编辑

/analytics/team/agent-edits

获取你的团队在 Cursor 中接受 AI 建议代码编辑的相关指标。

参数

startDate string

分析时段的起始日期 (默认值:7 天前) 。请参阅 日期格式

endDate string

分析时段的结束日期 (默认值:今日) 。请参阅 日期格式

users string

将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,user_abc123)

curl -X GET "https://api.cursor.com/analytics/team/agent-edits" \
  -u YOUR_API_KEY:

响应:

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

Tab 用量

/analytics/team/tabs

获取团队 Tab 自动补全用量指标。

参数

startDate string

分析时段的起始日期 (默认:7 天前) 。参见 日期格式

endDate string

分析时段的结束日期 (默认:今天) 。参见 日期格式

users string

将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,user_abc123)

curl -X GET "https://api.cursor.com/analytics/team/tabs" \
  -u YOUR_API_KEY:

响应:

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

每日活跃用户 (DAU)

/analytics/team/dau

获取团队的每日活跃用户数。DAU 是指某一天内使用过 Cursor 的唯一用户数。
活跃用户是指在 Cursor 中至少使用过一项 AI 功能的用户。

响应包含 Cursor 命令行界面、Cloud Agents 和 BugBot 的 DAU 细分指标。

参数

startDate string

分析时段的起始日期 (默认:7 天前) 。参见 日期格式

endDate string

分析时段的结束日期 (默认:今天) 。参见 日期格式

users string

将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,user_abc123)

curl -X GET "https://api.cursor.com/analytics/team/dau?startDate=14d&endDate=today" \
  -u YOUR_API_KEY:

响应:

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

客户端版本

/analytics/team/client-versions

获取团队所使用的 Cursor 客户端版本分布 (默认统计过去 7 天) 。对于每位用户,我们会报告其每天使用的最新版本 (如果用户安装了多个版本,则报告最新安装的版本) 。

参数

startDate string

分析时段的起始日期 (默认:7 天前) 。参见 日期格式

endDate string

分析时段的结束日期 (默认:今天) 。参见 日期格式

users string

将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,user_abc123)

curl -X GET "https://api.cursor.com/analytics/team/client-versions" \
  -u YOUR_API_KEY:

响应:

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

模型用量

/analytics/team/models

获取团队中 AI 模型用量的指标。

参数

startDate string

分析时段的起始日期 (默认值:7 天前) 。请参阅 日期格式

endDate string

分析时段的结束日期 (默认值:今日) 。请参阅 日期格式

users string

将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,user_abc123)

curl -X GET "https://api.cursor.com/analytics/team/models" \
  -u YOUR_API_KEY:

响应:

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

热门文件扩展名

/analytics/team/top-file-extensions

获取团队在 Cursor 中编辑最频繁的文件。按建议数量返回每天排名前 5 的文件扩展名。

参数

startDate string

分析时段的起始日期 (默认值:7 天前) 。参阅 日期格式

endDate string

分析时段的结束日期 (默认值:今日) 。参阅 日期格式

users string

将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如 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:

响应:

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

MCP 采用率

/analytics/team/mcp

获取团队 MCP (模型上下文协议) 工具采用情况的指标。返回按工具名称和 MCP 服务器名称细分的每日采用数量。

参数

startDate string

分析时段的起始日期 (默认值:7 天前) 。参阅 日期格式

endDate string

分析时段的结束日期 (默认值:今日) 。参阅 日期格式

users string

将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如:alice@example.com,user_abc123)

curl -X GET "https://api.cursor.com/analytics/team/mcp" \
  -u YOUR_API_KEY:

响应:

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

命令采用率

/analytics/team/commands

获取团队中 Cursor 命令采用情况的指标。返回按命令名称细分的每日采用数量。

参数

startDate string

分析时段的起始日期 (默认值:7 天前) 。参阅 日期格式

endDate string

分析时段的结束日期 (默认值:今日) 。参阅 日期格式

users string

将数据筛选为指定用户 (以逗号分隔的电子邮件地址或用户 ID,例如 alice@example.com,user_abc123)

curl -X GET "https://api.cursor.com/analytics/team/commands" \
  -u YOUR_API_KEY:

响应:

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

方案模式采用率

/analytics/team/plans

获取团队中 Plan 模式采用情况的指标。返回按生成方案所用 AI 模型细分的每日采用数量。

当用户启用 Auto model selection 时,API 会返回 default 作为模型名称。这对应于用户在 Cursor 界面中看到的“Auto”。

参数

startDate string

分析时段的起始日期 (默认值:7 天前) 。参阅 日期格式

endDate string

分析时段的结束日期 (默认值:今日) 。参阅 日期格式

users string

将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,user_abc123)

curl -X GET "https://api.cursor.com/analytics/team/plans" \
  -u YOUR_API_KEY:

响应:

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

技能采用率

/analytics/team/skills

获取整个团队的技能采用率指标。返回按技能名称细分的每日采用数量。

参数

startDate string

分析时段的起始日期 (默认值:7 天前) 。请参阅日期格式

endDate string

分析时段的结束日期 (默认值:今日) 。请参阅日期格式

users string

将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,user_abc123)

curl -X GET "https://api.cursor.com/analytics/team/skills" \
  -u YOUR_API_KEY:

响应:

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

Ask 模式采用率

/analytics/team/ask-mode

获取团队 Ask 模式采用率指标。返回按用于 Ask 模式查询的 AI 模型细分的每日采用数量。

参数

startDate string

分析时段的起始日期 (默认:7 天前) 。参见 日期格式

endDate string

分析时段的结束日期 (默认:今天) 。参见 日期格式

users string

将数据筛选为指定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,user_abc123)

curl -X GET "https://api.cursor.com/analytics/team/ask-mode" \
  -u YOUR_API_KEY:

响应:

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

对话洞察

/analytics/team/conversation-insights

获取仪表盘中显示的汇总对话洞察数据。此端点返回汇总洞察,不返回原始对话导出数据或原始对话内容。

仅适用于已启用对话洞察的企业版团队。如果在团队设置中开启了 禁用对话洞察,此端点将返回 401

如需按用户筛选,请使用团队级端点中介绍的通用 users 查询参数。SCIM 群组筛选仅在仪表盘 UI 中可用,Analytics API 不支持。

intentscomplexity 描述完整对话。

categoriesguidanceLevelsworkTypes 描述对话各片段中的工作内容。

参数

startDate string

分析周期的开始日期 (默认值:7 天前) 。参见日期格式

endDate string

分析周期的结束日期 (默认值:今日) 。参见日期格式

include string | string[]

必填。选择要返回的对话洞察维度。支持的值包括:intentscomplexitycategoriesguidanceLevelsworkTypes。可将 include 作为以逗号分隔的列表传入,例如 include=intents,complexity;也可重复传入,例如 include=intents&include=workTypes

users string

可选。将对话洞察筛选为特定用户。传入以逗号分隔的电子邮件地址或用户 ID,例如 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:

响应:

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

排行榜

/analytics/team/leaderboard

获取按 AI 用量指标排名的团队成员排行榜。

行为:

  • 不筛选用户:返回按指定指标排名的用户 (默认值:已接受代码行数总计)
  • 筛选用户:返回符合筛选条件的用户 (并显示其实际的团队总排名)
  • 支持对成员较多的团队进行分页

参数

startDate string

分析周期的起始日期 (默认值:7 天前) 。参阅 日期格式

endDate string

分析周期的结束日期 (默认值:今日) 。参阅 日期格式

page number

分页页码 (从 1 开始) 。默认值:1

pageSize number

每页用户数 (默认值:10,最大值:500)

users string

筛选指定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,user_abc123)

Tab 自动补全和智能体编辑分别返回各自的排行榜。按用户筛选时,这些用户会显示其实际的团队总排名,而非筛选后的排名。例如,如果请求的用户总排名为第 45 名,则会显示为 rank: 45

# 获取排行榜第 1 页(前 10 名用户)
curl -X GET "https://api.cursor.com/analytics/team/leaderboard" \
  -u YOUR_API_KEY:
# 使用自定义页面大小获取第二页
curl -X GET "https://api.cursor.com/analytics/team/leaderboard?page=2&pageSize=20" \
  -u YOUR_API_KEY:
# 按指定用户筛选
curl -X GET "https://api.cursor.com/analytics/team/leaderboard?users=alice@example.com,bob@example.com" \
  -u YOUR_API_KEY:

响应:

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

Bugbot 使用分析

/analytics/team/bugbot

获取团队中每个 PR 的 Bugbot 评审分析数据,包括按严重程度统计的问题数量以及已解决的问题数量。

如需获取包含计费成本和各项发现的单次评审数据,请使用 Bugbot 评审分析

参数

startDate string

分析周期的起始日期 (默认:7 天前) 。详见 日期格式

endDate string

分析周期的结束日期 (默认:今天) 。详见 日期格式

prState string

PR 状态筛选条件。允许值:mergedall。默认值:merged。仅查看已合并 PR 的分析数据时使用 merged;查看所有 PR 状态的分析数据时使用 all

repo string

可选的代码仓库筛选条件。接受完整 URL 或 host/path 格式 (例如 https://github.com/org/repo.gitgithub.com/org/repo) 。将规范化为 host/owner/repo

page number

分页页码 (从 1 开始) 。默认值:1

pageSize number

每页 PR 数量 (默认值:100,最大值:250)

# 获取过去 7 天的 Bugbot PR 使用分析(默认时间窗口)
curl -X GET "https://api.cursor.com/analytics/team/bugbot" \
  -u YOUR_API_KEY:
# 按代码仓库和日期范围筛选
curl -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:
# 对结果进行分页
curl -X GET "https://api.cursor.com/analytics/team/bugbot?page=2&pageSize=50" \
  -u YOUR_API_KEY:

响应:

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

Bugbot 评审使用分析

/analytics/team/bugbot-reviews

每个已完成的 Bugbot 评审返回一条记录,包括已评审的 commit、finding 数量、计费费用以及每个 finding 的解决数据。

包括已发布的评审和 Dry-run 评审。已发布的 finding 通过 comment_idresolution_status 标识。Dry-run finding 则返回 titledescriptionlocations,因为不会向 SCM 发布任何内容。

需要具有 read:* 范围的 API 密钥。

参数

startDate string

使用分析范围的开始时间。默认值为 7 天前。参阅 日期格式

endDate string

使用分析范围的结束时间。默认值为 now。参阅 日期格式

repo string

可选的代码仓库筛选条件,格式为 host/owner/repo。协议和 .git 后缀均可省略。

prNumber number

可选的 PR 或合并请求编号。

page number

分页页码 (从 1 开始) 。默认值:1

pageSize number

每页评审数量。默认值:100,最大值:250

dryRun boolean

可选筛选条件,仅筛选 Dry-run (true) 或已发布 (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'

响应 (已发布的评审) :

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

响应 (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_idpr_numbercommit_shacost_centsbugs[].comment_idbugs[].resolution_statusbugs[].severity 在不可用时可能为 null。如果审核未单独计费,cost_centsnull。对于 dry-run 审核,bugs[].titlebugs[].descriptionbugs[].locations 包含检测结果内容。dry-run 的检测结果其 comment_idresolution_status 均为 null,因为不会向 SCM 发布任何内容。

要触发 Dry-run 评审,请调用 POST /bugbot/review,并将 "dryRun" 设为 true。请参阅 Bugbot API 文档


按用户划分的端点

按用户划分的端点提供与团队级端点相同的指标,并按用户汇总数据,支持分页。它们非常适合生成按用户统计的报告,或分批处理大型团队。

常用查询参数

参数 类型 必填 描述
startDate 日期 string 分析时段的开始日期 (默认值:7 天前)
endDate 日期 string 分析周期的结束日期 (默认值:今日)
page number 页码 (默认值:1)
pageSize number 每页用户数 (默认值:100,最大值:500)
users string 将分页限定为特定用户 (以逗号分隔的电子邮件或 ID,例如 alice@example.com,user_abc123)

用户筛选:
向按用户端点传入 users 参数时:

  • 分页结果会被筛选:结果集和分页计数仅包含指定用户
  • 适用于:无需遍历所有用户的分页即可获取特定团队成员的详细数据
  • 示例:如果有 500 名用户,但只需获取其中 3 名特定用户的数据,可按其电子邮件筛选,在单页中获取这 3 名用户的全部数据

**注意:**按用户端点支持与团队级端点相同的日期格式和快捷方式。请参阅上方的日期格式部分。

响应格式

所有按用户划分的端点均按以下格式返回数据:

{
  "data": {
    "user1@example.com": [ /* 用户数据 */ ],
    "user2@example.com": [ /* 用户数据 */ ]
  },
  "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" }
    ]
  }
}

响应结构:

  • data - 以用户电子邮件地址为键的对象,每个键对应一个包含该用户指标的数组
  • pagination - 分页信息
  • params - 回显的请求参数
  • userMappings - 将电子邮件地址映射到本页公开用户 ID 的数组。可用于与其他 API 交叉参照,或创建指向用户个人资料的链接。

可用端点

所有按用户划分的端点均遵循以下模式:/analytics/by-user/{metric}

  • GET /analytics/by-user/agent-edits - 用户的智能体编辑
  • GET /analytics/by-user/tabs - 用户的 Tab 用量
  • GET /analytics/by-user/models - 用户的模型用量
  • GET /analytics/by-user/top-file-extensions - 用户使用最多的文件
  • GET /analytics/by-user/client-versions - 用户的客户端版本
  • GET /analytics/by-user/mcp - 用户的 MCP 采用率
  • GET /analytics/by-user/commands - 用户的命令采用率
  • GET /analytics/by-user/plans - 用户的方案采用率
  • GET /analytics/by-user/skills - 用户的技能采用率
  • GET /analytics/by-user/ask-mode - 用户的 Ask 模式采用率

按用户划分的智能体编辑

/analytics/by-user/agent-edits

获取按用户汇总且支持分页的智能体编辑指标。

参数

startDate string

分析时段的起始日期 (默认值:7 天前) 。参阅 日期格式

endDate string

分析时段的结束日期 (默认值:今日) 。参阅 日期格式

page number

页码 (从 1 开始) 。默认值:1

pageSize number

每页用户数 (默认值:100,最大值:500)

users string

将分页结果限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 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:

响应:

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

按用户划分的 Tab 用量

/analytics/by-user/tabs

获取按用户汇总、支持分页的 Tab 自动补全指标。

参数

startDate string

分析周期的起始日期 (默认值:7 天前) 。参阅 日期格式

endDate string

分析周期的结束日期 (默认值:今日) 。参阅 日期格式

page number

页码 (从 1 开始) 。默认值:1

pageSize number

每页用户数 (默认值:100,最大值:500)

users string

将分页限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,user_abc123)

curl -X GET "https://api.cursor.com/analytics/by-user/tabs?page=1&pageSize=50" \
  -u YOUR_API_KEY:

响应:

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

按用户划分的模型用量

/analytics/by-user/models

获取按用户汇总、支持分页的模型用量指标。

参数

startDate string

分析周期的起始日期 (默认值:7 天前) 。参阅 日期格式

endDate string

分析周期的结束日期 (默认值:今日) 。参阅 日期格式

page number

页码 (从 1 开始) 。默认值:1

pageSize number

每页用户数 (默认值:100,最大值:500)

users string

将分页限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,user_abc123)

curl -X GET "https://api.cursor.com/analytics/by-user/models?page=1&pageSize=50" \
  -u YOUR_API_KEY:

响应:

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

按用户划分的热门文件扩展名

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

获取按用户汇总的热门文件扩展名指标,支持分页。

参数

startDate string

分析周期的起始日期 (默认值:7 天前) 。参阅 日期格式

endDate string

分析周期的结束日期 (默认值:今日) 。参阅 日期格式

page number

页码 (从 1 开始) 。默认值:1

pageSize number

每页用户数 (默认值:100,最大值:500)

users string

将分页限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 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:

响应:

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

按用户划分的客户端版本

/analytics/by-user/client-versions

获取按用户汇总的客户端版本指标,支持分页。

参数

startDate string

分析周期的起始日期 (默认:7 天前) 。参见 日期格式

endDate string

分析周期的结束日期 (默认:今天) 。参见 日期格式

page number

页码 (从 1 开始) 。默认值:1

pageSize number

每页用户数 (默认值:100,最大值:500)

users string

将分页限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 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:

响应:

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

按用户划分的 MCP 采用率

/analytics/by-user/mcp

获取按用户汇总并支持分页的 MCP 工具采用率指标。

参数

startDate string

分析周期的起始日期 (默认:7 天前) 。参见 日期格式

endDate string

分析周期的结束日期 (默认:今天) 。参见 日期格式

page number

页码 (从 1 开始) 。默认值:1

pageSize number

每页用户数 (默认值:100,最大值:500)

users string

将分页限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,user_abc123)

curl -X GET "https://api.cursor.com/analytics/by-user/mcp?page=1&pageSize=50" \
  -u YOUR_API_KEY:

响应:

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

按用户划分的命令采用率

/analytics/by-user/commands

获取按用户汇总、支持分页的命令采用率指标。

参数

startDate string

分析周期的起始日期 (默认值:7 天前) 。参见 日期格式

endDate string

分析周期的结束日期 (默认值:今日) 。参见 日期格式

page number

页码 (从 1 开始) 。默认值:1

pageSize number

每页用户数 (默认值:100,最大值:500)

users string

将分页限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,user_abc123)

curl -X GET "https://api.cursor.com/analytics/by-user/commands?page=1&pageSize=50" \
  -u YOUR_API_KEY:

响应:

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

按用户划分的方案采用率

/analytics/by-user/plans

获取按用户汇总、支持分页的 Plan 模式采用率指标。

参数

startDate string

分析时段的起始日期 (默认值:7 天前) 。请参阅 日期格式

endDate string

分析时段的结束日期 (默认值:今日) 。请参阅 日期格式

page number

页码 (从 1 开始) 。默认值:1

pageSize number

每页用户数 (默认值:100,最大值:500)

users string

将分页限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,user_abc123)

curl -X GET "https://api.cursor.com/analytics/by-user/plans?page=1&pageSize=50" \
  -u YOUR_API_KEY:

响应:

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

按用户划分的技能采用率

/analytics/by-user/skills

获取按用户汇总、支持分页的技能采用率指标。

参数

startDate string

分析周期的起始日期 (默认值:7 天前) 。参见 日期格式

endDate string

分析周期的结束日期 (默认值:今日) 。参见 日期格式

page number

页码 (从 1 开始) 。默认值:1

pageSize number

每页用户数 (默认值:100,最大值:500)

users string

将分页限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 alice@example.com,user_abc123)

curl -X GET "https://api.cursor.com/analytics/by-user/skills?page=1&pageSize=50" \
  -u YOUR_API_KEY:

响应:

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

按用户划分的 Ask 模式采用率

/analytics/by-user/ask-mode

获取按用户汇总、支持分页的 Ask 模式采用率指标。

参数

startDate string

分析时段的起始日期 (默认值:7 天前) 。参阅 日期格式

endDate string

分析时段的结束日期 (默认值:今日) 。参阅 日期格式

page number

页码 (从 1 开始) 。默认值:1

pageSize number

每页用户数 (默认值:100,最大值:500)

users string

将分页限定为特定用户 (以逗号分隔的电子邮件或用户 ID,例如 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:

响应:

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

团队级端点

团队级端点提供整个团队或筛选后的用户子集的汇总指标。所有端点均支持按日期范围筛选,并可选择按用户筛选。

通用查询参数

参数 类型 必填 描述
startDate 日期 string 分析时段的开始日期 (默认值:7 天前)
endDate 日期 string 分析时段的结束日期 (默认值:今日)
users string 按指定用户筛选数据 (以逗号分隔) 。每个值可以是电子邮件地址 (例如,alice@example.com) 或公开用户 ID (例如,user_abc123) 。两种格式可混用。

用户筛选:
users 参数接受以逗号分隔的标识符列表。每个标识符可以是:

  • 电子邮件地址 (例如,alice@example.com) - 根据是否包含 @ 自动识别
  • 公开用户 ID (例如,user_abc123) - 根据 user_ 前缀自动识别
  • 混合格式 - 可在同一请求中同时使用电子邮件地址和 ID

示例:

# 仅按电子邮件筛选
?users=alice@example.com,bob@example.com,carol@example.com

# 仅按公开用户 ID 筛选
?users=user_abc123,user_def456,user_ghi789

# 混合使用电子邮件和 ID
?users=alice@example.com,user_def456,bob@example.com

按用户筛选时,API 仅返回指定用户的数据。适用于:

  • 分析特定团队成员或群组 (例如工程负责人、特定项目团队)
  • 为部分用户生成报告
  • 比较所选个人用户的指标

日期格式

默认行为:
如果省略 startDateendDate,API 默认返回过去 7 天的数据 (从 7 天前到今日) 。这非常适合无需指定日期的快速查询。

标准格式:

  • YYYY-MM-DD - 简单日期格式 (例如 2025-01-15) ← 推荐
  • ISO 8601 时间戳 (例如 2025-01-15T00:00:00Z)

快捷方式:

  • nowtoday - 当前日期 (00:00:00)
  • yesterday - 昨日日期 (00:00:00)
  • <number>d - 若干天前 (例如 7d = 7 天前,30d = 30 天前)

重要说明:

  • 忽略时间:所有日期都会解析到天级别 (00:00:00 UTC) 。发送 2025-01-15T14:30:00Z 与发送 2025-01-15 的效果相同。
  • 使用推荐格式:使用 YYYY-MM-DD 或快捷方式可获得更好的 HTTP 缓存效果。即使解析为同一天,不同的时间值 (如 T14:30:00ZT08:00:00Z) 也会导致缓存未命中。
  • 日期范围:最多 30 天。

示例:

# 省略日期,获取最近 7 天的数据(最简单且最利于缓存)
curl "https://api.cursor.com/analytics/team/agent-edits"

# 指定日期范围时使用 YYYY-MM-DD 格式(推荐)
?startDate=2025-01-01&endDate=2025-01-31

# 使用快捷日期表示最近 30 天
?startDate=30d&endDate=today

# 使用快捷日期表示最近 14 天
?startDate=14d&endDate=now

# ❌ 请勿使用时间戳:会影响缓存,且时间部分本来也会被忽略
?startDate=2025-01-15T14:30:00Z&endDate=2025-01-31T23:59:59Z

速率限制

速率限制按团队实施,每分钟重置:

  • 团队级端点:每个团队每分钟 100 次请求
  • 按用户划分的端点:每个团队每分钟 50 次请求

超出速率限制后会怎样?

超出速率限制后,您将收到 429 Too Many Requests 响应:

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

最佳实践

有关 API 通用最佳实践,包括指数退避、缓存策略和错误处理,请参阅 API Overview 最佳实践

  1. 大型团队使用分页:如果团队用户超过 100 人,请使用支持分页的按用户划分的端点,避免超时。
  2. 利用缓存:团队级和用户级端点均支持 ETag。存储 ETag,并使用 If-None-Match 请求头,减少不必要的数据传输。
  3. 尽可能按用户筛选:如果只需获取特定用户的数据,请使用 users 参数缩短查询时间。
  4. 日期范围:为获得最佳性能,请将日期范围控制在合理范围内 (例如 1–3 个月) 。
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜