Connecting Cursor to AI Spend

Last updated: September 30, 2026

Overview

Connecting Cursor to AI Spend lets TeamOhana read your Cursor billing and usage data so it shows up, attributed to people, in your AI Spend dashboard. You'll need a Cursor Team API key with Read-only scope, plus your seat prices — Cursor's API doesn't report what you pay per seat, so you enter that in TeamOhana. The key can't read code, prompts, chats, or files, and can't change anything in your Cursor team.

This article covers Cursor Teams. If you're on Cursor Enterprise (an Organizations area with several linked teams and a pooled-usage contract), contact your TeamOhana representative first.

Prerequisites

  • TeamOhana: Manage AI Providers permission (under AI Spend Management). Admin and IT Admin have this by default.

  • Cursor: Admin of your Cursor team — only admins can create API keys.

  • Not sure of your plan? One team with per-seat billing under Team Settings = Teams (this article). An Organizations area with pooled usage = Enterprise. Your invoice will also show this: per-seat charge vs. a committed usage pool.

Setup Steps

Step 1 — Create a Read-only Team API key in Cursor

  1. Sign in at cursor.com/dashboard.

  2. Open Team Settings > Advanced > API Keys (a separate page on some accounts).

  3. Click New API Key, name it teamohana-spend-readonly, and set Scope to Read-only.

  4. Set an expiration if offered (12 months recommended), then create and copy the key — shown only once, starts with crsr_.

Share it through a secure channel if someone else will connect it — never over email or Slack.

Step 2 — Connect Cursor in TeamOhana

  1. Go to Settings > Integrations > AI Providers > Cursor.

  2. Fill in: Provider Name (e.g. "Cursor"), Team API key, and Seat pricing (Standard seat, number of Premium seats, Premium seat price — monthly equivalent if on an annual plan).

  3. Click Connect.

TeamOhana stores the key encrypted and syncs immediately — the card shows Sync in Progress, then Connected. On connect, everything from January 1 of the current year loads; after that, data refreshes daily.

If the connection errors

  • Key deleted/expired — create a new one and update it in the settings drawer.

  • Wrong team — recreate the key with the correct Cursor team selected.

  • Missing permission — recreate with Admin scope; TeamOhana still only calls the read endpoints below.

What we pull

  • GET /teams/members — name, email, role (for matching spend to people).

  • POST /teams/filtered-usage-events — per-request date, email, model, token counts, billing category, cents charged. No prompt/code content.

  • POST /teams/daily-usage-data — per-member daily activity counters (requests, lines added, Tab acceptances). No content.

Managing your Cursor connection

Open the gear icon on the Cursor card to:

  • Rename the connection or replace the key (history stays; new sync uses the new key).

  • Change seat prices from a chosen month — defaults to next month so a save never rewrites a month already paid for; pick an earlier month to backdate.

  • Assign Premium seats — Cursor's API can't identify who holds one. Unassigned Premium cost shows on its own "(N unassigned)" line until you search a member and click Assign Premium (applies to their whole history immediately; Unassign to undo).

Click Save changes for name/key/prices — Premium assignments save instantly. Use the ⋯ menu to disable the connection.

How cost is calculated

  • Seat fees — per paid member per month, from the prices you entered (Premium members get the Premium price).

  • Usage-based charges — pulled automatically from Cursor's API.

  • Usage included in a seat shows at $0 (never double-counted). Unpaid Admin seats cost $0. Mid-month joiners/leavers pay a full month.

  • Seat fees are estimates. For invoice-grade numbers, upload your Cursor invoice as a Custom Provider CSV instead — see "Connecting a Custom AI Provider to AI Spend."

Troubleshooting / FAQ

  • Do I send you the key? No — paste it directly into the drawer. Stored encrypted, never sent by email or Slack.

  • Can it read code, prompts, chats, or files? No. Only timestamps, emails, model names, token counts, billing category, and cents charged (usage events) or daily activity counters (requests, lines added, Tab acceptances) — never content. TeamOhana doesn't call Cursor's Analytics or AI Code Tracking APIs.

  • Why Read-only, and what's the worst case if it leaks? A Read-only key can only call reporting endpoints — Cursor rejects writes from it. Worst case: exposure of usage/billing metadata only. It can't change settings, create keys, or run AI requests, and you can revoke it anytime.

  • Does it consume usage or affect rate limits? No — Team API keys aren't accepted by Cursor's editor/agents, so this key never touches your included usage or limits.

  • How is it protected? Encrypted at rest, never logged or stored in plaintext, used only by the daily sync (egress limited to api.cursor.com). Use a named, dedicated, expiring key so you can audit and revoke it independently — it keeps working even if the creating admin leaves.

  • What personal data do you get? Name, email, role, usage/cost figures, and daily activity counters — used only for spend/adoption attribution, under your existing DPA, never shared elsewhere.

  • Why ask for seat prices? Cursor's API never reports what you pay per seat — only usage. Entering it yourself is the only way to get accurate fixed cost; update it anytime from the settings drawer.

  • What about removed team members? Their historical usage stays attributed to their email. Some removed-member rows lack identity data on Cursor's side and land on an "unattributed" line so totals stay complete.

  • Can we revoke access? Yes, anytime — delete the key on cursor.com/dashboard. This only stops future syncs; historical data stays. Disable the connection in TeamOhana separately if you want that too.

  • How often do you sync? A full year-to-date load on connect, then daily — well under Cursor's recommended polling rate.

  • Is this used to train models? No — only billing/usage metadata is read, never content.

Related Resources (optional)

  • AI Spend (Feature Overview)

  • Connecting Anthropic to AI Spend

  • Connecting OpenAI to AI Spend

  • Connecting a Custom AI Provider to AI Spend (CSV Upload)