Documentation 29
Cursor team APIs quickstart · 3 min read
Team analytics with git-true numbers. No Teams seat required.
Cursor's admin, analytics, AI-code-tracking, and cloud-agent read surfaces for a simulated team — where every AI-attributed commit hash is a real, fetchable commit on the git hosts.
Coverage, hosts and pinned snapshots for Cursor — 20 of 21 read surfaces served and verified.
01 / Base URL + auth
Cursor's grammar, mirrored.
Point requests at https://cursor.sandboxapis.dev. Cursor's conventions are mirrored exactly: the API key rides HTTP Basic as the USERNAME with an empty password (curl -u KEY:), the usage endpoints are POSTs that only read (a JSON date-range body), daily-usage-data enforces the documented 30-day maximum, and unknown routes answer the same route-echo 404 the real service sends.
curl -u any-key: "https://cursor.sandboxapis.dev/teams/members"Using a key? Keys & rate limits → — a SandboxAPIs key rides the same -u KEY: slot and lifts the anonymous limit.
02 / The reads that matter
Usage, spend, AI code tracking.
# Per-member daily usage (epoch-ms body, 30-day max)
curl -u any-key: -X POST "https://cursor-2026-08.snap.sandboxapis.dev/teams/daily-usage-data" \
-H 'content-type: application/json' \
-d '{"startDate":1782345600000,"endDate":1784851200000}'
# Spend for the cycle — events x pin-scoped pricing, to the cent
curl -u any-key: -X POST "https://cursor-2026-08.snap.sandboxapis.dev/teams/spend"
# AI-attributed commits with REAL git SHAs
curl -u any-key: "https://cursor-2026-08.snap.sandboxapis.dev/analytics/ai-code/commits?startDate=30d&endDate=0d"03 / A real response
Live from the universe.
{
"items": [
{
"commitHash": "e166cc40c73c83ca1025107df0709928a79d50f6",
"userEmail": "calliope@olympus-labs.dev",
"repoName": "olympus-labs/parthenon",
"branchName": "support-request-id-middleware-core",
"isPrimaryBranch": false,
"createdAt": "2026-07-23T16:06:21.000Z",
"tabLinesAdded": 3,
"composerLinesAdded": 7,
"nonAiLinesAdded": 0,
"totalLinesAdded": 10,
"totalLinesDeleted": 0,
"primaryModel": "claude-sonnet-4-6",
"source": "ide"
},
{
"commitHash": "7bffc80f0155c038c07d113ef3e73044c81a9f0d",
"userEmail": "euterpe@olympus-labs.dev",
"repoName": "olympus-labs/parthenon",
"branchName": "main",
"isPrimaryBranch": true,
"createdAt": "2026-07-19T04:05:42.000Z",
"tabLinesAdded": 6,
"composerLinesAdded": 16,
"nonAiLinesAdded": 0,
"totalLinesAdded": 22,
"totalLinesDeleted": 1,
"primaryModel": "claude-sonnet-4-6",
"source": "ide"
}
],
"pagination": {
"numPages": 11,
"currentPage": 1,
"pageSize": 2,
"hasNextPage": true,
"hasPreviousPage": false
}
}04 / Pin a snapshot
Deterministic CI.
The *.snap. base URL is the whole of it — byte-identical on every request. Relative date shortcuts (startDate=7d) resolve against the snapshot's anchor, so scheduled reports are reproducible too.
# reproducible in CI
export CURSOR_API_URL=https://cursor-2026-08.snap.sandboxapis.devTour the universe → · Coverage manifest → · Versioning & pinning →