
Plans
Get team spend for the current cycle with the Admin API
Read per-member spending for the current billing cycle with POST https://api.cursor.com/teams/spend. Official reference: Admin API → Get Spending Data.
Authenticate with a team Admin API key (Basic auth, key as username, empty password). This route reports cycle spend; to set per-user caps use Set user spend limits (POST /teams/user-spend-limit and the bulk preview route).
Request
curl -X POST https://api.cursor.com/teams/spend \
-u YOUR_API_KEY: \
-H "Content-Type: application/json" \
-d '{
"searchTerm": "alex@company.com",
"page": 2,
"pageSize": 25
}'
| Field | Rules |
|---|---|
searchTerm |
Optional. Search user names and emails |
sortBy |
Optional. amount, date, or user. Default: date |
sortDirection |
Optional. asc or desc. Default: desc |
page |
Optional. 1-indexed. Default: 1 |
pageSize |
Optional. Results per page |
Response
{
"teamMemberSpend": [
{
"userId": "user_PDSPmvukpYgZEDXsoNirw3CFhy",
"spendCents": 2450.125487,
"overallSpendCents": 2450.125487,
"fastPremiumRequests": 1250,
"name": "Alex",
"email": "developer@company.com",
"role": "member",
"hardLimitOverrideDollars": 100,
"monthlyLimitDollars": 200,
"effectivePerUserLimitDollars": 100
}
],
"subscriptionCycleStart": 1708992000000,
"totalMembers": 15,
"totalPages": 1
}
| Field | Meaning |
|---|---|
userId |
Encoded user id (same namespace as /teams/members id) |
spendCents |
On-demand spend in cents for the current cycle (excludes included usage) |
overallSpendCents |
Total spend in cents for the cycle (on-demand + included) |
fastPremiumRequests |
Usage-based premium request count in the cycle |
hardLimitOverrideDollars |
Custom hard limit override in dollars; 0 means no override |
monthlyLimitDollars |
Monthly limit in dollars, or null if unset |
effectivePerUserLimitDollars |
Enforced per-user limit derived from monthly + hard override |
subscriptionCycleStart |
Cycle start as epoch milliseconds |
totalMembers / totalPages |
Roster size and page count |
On June 4th, 2026 the docs note additional precision on spendCents and overallSpendCents so values compare cleanly to invoices.
Reconcile event-level costs
To match event totals to these cycle figures, sum chargedCents from Get filtered usage events. That field includes model cost plus the Cursor Token Rate when the rate applies.
Pitfalls
- Confusing this read with spend-limit writes — caps are a different pair of routes
- Comparing only
spendCentsto the dashboard total — on-demand excludes included usage; useoverallSpendCentsor eventchargedCentsas the docs describe - Mixing encoded
userIdhere with the numericuserIdfrom daily-usage-data — namespaces differ; spend shares ids with/teams/members