PLANS / get-daily-usage-data-via-admin-api

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 + pageSize you only get active users
  • Requesting more than 30 days in one call — split the window
  • Treating the three *Reqs fields as invoice units — use filtered usage events + requestsCosts for billable counts
  • Polling faster than once per hour — data is hourly; extra traffic hits the 20/min team limit without new signal