Skip to content

Connecting Cursor to CostReveal, setup guide

The CostReveal team, , 6 minute read

AI coding tools have become a real line in engineering budgets, and usage based pricing means the cost now depends on how each developer works and which models they choose. This guide covers how CostReveal reads every call your Cursor team made through Cursor's Admin API, what is and is not included, each setup step, how members are assigned to teams, and how Cursor spend sits beside your AI provider spend.

What the Cursor connection reads

CostReveal reads every call your Cursor team made, through Cursor's Admin API, and records what each day's chargeable calls cost:

  • Usage based charges: each call's charge, the Cursor token fee included, summed by day, member, model and kind of call, in US dollars.
  • Models, as Cursor names them, so Explore groups Cursor spend by model the same way it does the AI providers.
  • Members, by their email, as the resource each charge is for.

Calls within your plan's included usage are charged nothing, so they add nothing to the figures. Spend appears once a team goes beyond what its plan includes.

What it does not cover

Seat subscriptions are not in Cursor's API, so they are not read. Cursor states charges as they happen rather than its invoice, so the figures are not marked invoiced.

What you need

  • A team admin in Cursor, who can create an Admin API key.
  • An owner or admin role in CostReveal.

Step by step setup

1. Start the connection

In CostReveal, go to Connections and choose Connect next to Cursor.

2. Create an Admin API key

In Cursor's team settings, a team admin creates an Admin API key for CostReveal. Name it for CostReveal, so it can be revoked on its own.

3. Enter the key and verify

Enter the key and choose Verify and connect. Only the format is checked as you type. When you verify, CostReveal reads the team's members with the key before saving it.

The key is stored encrypted and never shown again. CostReveal only ever reads usage and members with it. Revoking it in Cursor ends access at once.

Freshness and history

Cursor states each call's charge as it happens. CostReveal reads every six hours, so figures trail usage by up to six hours. The first read brings in the current month and the twelve before it, as far as Cursor's API holds them. Where Cursor holds no older months, Connections says how far back it reached, and each read asks again. After that, each read covers the current and previous month.

Connection states

Under Connections, the connection is always in one of four states:

  • Setup not finished: the key has not been verified yet.
  • Waiting for first data: the key was verified, and the first read is due.
  • Connected: usage was read and the latest read succeeded.
  • Needs attention: the latest read failed, for example because the key was revoked. Everything already read is kept.

How Cursor spend is explained

  • Direct: the service and the model, which Cursor states for each call.
  • Inferred: the team, feature or customer, when an allocation rule names the owner of a member. Members are recorded by email as the resource each charge is for, so a rule such as "when the resource is ada@example.com, the team is search" explains that member's spend.
  • Allocated: a share of a cost an allocation rule divides, by fixed percentages, evenly, or in proportion to what each owner already explains.
  • Unknown: spend no rule explains. It is shown as unknown, never spread across teams.

A rule can match several members at once, for example every address on a team's list, so a handful of rules covers a whole engineering organization. When a rule changes, every month is explained again with the new rule, so a reorganization is reflected across history, not only from today.

How figures are checked

Every amount is recorded as Cursor states each call's charge. Attribution on every dimension must add up exactly to the ledger. A change to a month already read is recorded as a correction that keeps what was said before, and attribution runs again.

Cursor states charges, not its invoice, so there is no second source to compare the total against, and the figures are not marked invoiced. Home says so.

Making the most of Cursor spend

  1. Assign members to teams with rules, so spend lands on the teams that use the tool.
  2. Group by model in Explore, to see which models drive the charges beyond included usage.
  3. Set a budget on Cursor spend, with an alert before the limit.
  4. Compare with your AI provider spend in Explore by provider and model, to see coding tools beside product AI.

Troubleshooting

  • Verify says the key is not accepted. Check it is an Admin API key, created by a team admin, not a personal key.
  • No spend appears. Calls within your plan's included usage are charged nothing; spend appears once usage goes beyond it.
  • Seats are missing. Seat subscriptions are not in Cursor's API, so they are not read.
  • A member's spend is unknown. Add a rule on the resource, their email, naming their team.

Using Cursor figures in CostReveal

Once Cursor spend is read, it appears everywhere the rest of your spend does:

  • Explore groups it by provider, service, account, region, team, feature, customer or any custom dimension you define, and can filter to any of them. Every row shows how much of it is direct, inferred, allocated or unknown.
  • Budgets can be set on Cursor as a provider, or on any one of its services, with alerts when spend nears or passes the limit, or when the month is forecast past it.
  • Insights forecasts the month once it has three complete days, with a range and a confidence, and flags a day when a service spent outside its normal range: the median of the same weekday over the four weeks before.
  • Reports export the figures as CSV or a PDF, once or on a weekly or monthly schedule.
  • A worked example. Suppose rules assign each engineer's email to a team. Explore by team then by model shows which teams use which models beyond included usage, and a budget on the Cursor provider alerts before the month goes past what you planned.

Security and access

  • What CostReveal holds. The Admin API key. It is encrypted with AES-256-GCM before it is stored, under keys that can be rotated, and it is never shown again after you enter it.
  • What it is used for. Reading only. CostReveal never changes anything in your account.
  • Who can change the connection. Only owners and admins in CostReveal can connect, change or remove a connection, and each of those actions is recorded in the organization's audit log, with who did it and when.
  • Isolation. Every figure is stored in CostReveal's database with your organization isolated by PostgreSQL row level security, enforced in the database itself, below the application.
  • Ending access. Revoke the key in Cursor. CostReveal keeps every figure already read and says that new data has stopped.

Removing the connection

Removing the connection under Connections deletes every figure it brought in from the project. Revoke the key in Cursor too. To stop reading without removing anything, revoke the key: CostReveal keeps every figure already read and tells you new data has stopped.

Frequently asked questions

Does CostReveal include Cursor seats? No. Seat subscriptions are not in Cursor's API. CostReveal reads usage based charges, the Cursor token fee included.

Why is a month's Cursor spend zero? Calls within your plan's included usage are charged nothing. Spend appears once usage goes beyond what the plan includes.

How is Cursor spend split by team? Each charge names the member by email. Allocation rules on the resource assign members to teams.

What happens to history when someone changes teams? Rules apply to every month: when a rule changes, every month is explained again with it.

Are Cursor figures checked against my invoice? No. Cursor states charges as they happen, not its invoice, so the figures are not marked invoiced, and CostReveal checks that attribution adds up exactly to what it read.

How fresh are the figures? CostReveal reads every six hours, so they trail usage by up to six hours.

Keep reading