CostCatch
Docs/ Connectors/ Cursor
Available AI

Connect Cursor

Cost Catch reads your team's usage events from Cursor's Admin API — one billable request each, with its model, kind, and charge. Summing them is your spend, at the finest grain. Nothing to choose here: Cursor has one billing surface and one key type.

Before you start

Three things, and the app generates the technical parts:

  • A paid Cursor team plan (Teams, Business, or Enterprise). Individual Hobby / Pro / Ultra accounts have no Admin API.
  • A Cursor Team API key (Dashboard → API & SSH Keys → Team tab → New API Key; you must be a team admin). Already have one? Reuse it.
  • A Snowflake ACCOUNTADMIN to store the key as a secret and allow outbound calls to api.cursor.com. The app generates the SQL.

Good to know

There are no options to choose — one API, one key. Worth knowing:

  • Cost data is per-user. Every event carries an email. Cost Catch aggregates by default; per-user figures are an explicit, admin-gated opt-in — and even then the data never leaves your account.

You can connect more than one Cursor team, each as its own connection.

Create the key

You must be a team admin:

  1. Open the Cursor dashboard and go to API & SSH Keys.
  2. At the top of the key list there's a small User / Team toggle next to New API Key — click Team, then New API Key. It's this toggle, not the separate Team Settings sidebar item; and it must be Team, not User — a personal User key (even with Admin scope) authenticates as you, not the team, and Cursor's team usage API rejects it with a 401.
  3. Give it a name, then copy the key — it's shown only once — and paste it into the wizard.

Reference: Cursor Admin API.

Refresh cadence

Pick how often Cost Catch checks for new data. Every connection offers the same menu; we suggest a default that matches how often Cursor actually publishes.

Cadence option Good for
Every hourTightest freshness; more runs
Every 6 hours Recommended Cursor usage is near-real-time but the cost grain that matters is a day; this keeps the current day current without exceeding the Admin API rate limit.
Every 12 hoursTwice a day; low cost
DailyA once-a-day snapshot; lowest cost
CustomAny schedule you like, on your own cron

The app pre-selects Every 6 hours and shows this reasoning right next to the picker — override it any time.

What to expect

  • Recent days can still change. Async agent events can arrive for a past day, so Cost Catch re-reads and replaces that date's snapshot during the settlement window; days are marked final 7 days after they occur. Compare against your Cursor invoice for the closed billing cycle.
  • Where your data lands. Source event rows in RAW.VENDOR_BILLING; current billing via ANALYTICS.CURSOR_BILLING.
  • The app offers a Test connection button so a bad key is caught during setup.

Connect it

Open Cursor in the setup wizard — it generates the Snowflake secret and network access, and tests the connection before you commit.

Stuck on a step? Email [email protected].