
Plans
Get daily usage data with the Admin API
Pull per-day usage metrics for your team with POST https://api.cursor.com/teams/daily-usage-data. Official reference: Admin API → Get Daily Usage Data.
Authenticate with a team Admin API key (Basic auth, key as username, empty password). Data is aggregated at the hourly level — poll at most once per hour. Rate limit: 20 requests per minute per team. Date range cannot exceed 30 days; split longer windows into multiple requests.
Active users only (no pagination)
Without page and pageSize, the response includes only users who had activity in the range.
curl -X POST https://api.cursor.com/teams/daily-usage-data \
-u YOUR_API_KEY: \
-H "Content-Type: application/json" \
-d '{
"startDate": 1710720000000,
"endDate": 1710892800000
}'
| Field | Rules |
|---|---|
startDate |
Required. Epoch milliseconds |
endDate |
Required. Epoch milliseconds |
All team members (with pagination)
Send both page and pageSize to include every member who had a membership during the range (inactive rows included). Members who joined after the requested period are excluded. Each row then includes isActive.
curl -X POST https://api.cursor.com/teams/daily-usage-data \
-u YOUR_API_KEY: \
-H "Content-Type: application/json" \
-d '{
"startDate": 1710720000000,
"endDate": 1710892800000,
"page": 1,
"pageSize": 1000
}'
Response fields (each data row)
| Field | Meaning |
|---|---|
userId |
Numeric user id |
day |
ISO date string (e.g. 2024-03-18) |
date |
Epoch milliseconds for that day |
email |
User email |
isActive |
Present with pagination — activity that day |
totalLinesAdded / totalLinesDeleted |
Lines added / deleted |
acceptedLinesAdded / acceptedLinesDeleted |
Accepted AI line edits |
totalApplies / totalAccepts / totalRejects |
Apply / accept / reject counts |
totalTabsShown / totalTabsAccepted |
Tab completion shown / accepted |
composerRequests / chatRequests / agentRequests |
Composer / chat / Agent mode requests |
cmdkUsages |
Cmd+K inline edit usages |
subscriptionIncludedReqs / usageBasedReqs / apiKeyReqs |
Raw usage-event counters (see caveat below) |
bugbotUsages |
Bugbot usages |
mostUsedModel |
Most-used model for the day, or null |
applyMostUsedExtension / tabMostUsedExtension |
Common extensions, or null |
clientVersion |
Cursor client version, or null |
Top-level period echoes startDate / endDate. With pagination, pagination includes page, pageSize, totalUsers, totalPages, hasNextPage, hasPreviousPage.
Billable request counts
subscriptionIncludedReqs, usageBasedReqs, and apiKeyReqs count raw usage events, not billable request units under older request-based pricing. For accurate billable request counts, call Get filtered usage events and sum requestsCosts.
Pitfalls
- Omitting pagination when you need inactive members — without
page+pageSizeyou only get active users - Requesting more than 30 days in one call — split the window
- Treating the three
*Reqsfields as invoice units — use filtered usage events +requestsCostsfor billable counts - Polling faster than once per hour — data is hourly; extra traffic hits the 20/min team limit without new signal