Skip to main content

Cursor integration with Coralogix

Cursor API availability

Your team must have access to the Cursor Admin API. Team and per-user analytics, AI Code Tracking, Bugbot analytics, and the Organization APIs each require the corresponding Cursor feature entitlement, independent of this integration's configuration. If Cursor denies access to an optional team endpoint, Coralogix continues collecting from accessible endpoints and checks the denied endpoint again during the next daily collection.

Overview

The Cursor Usage & Cost integration uses Cursor APIs to collect operational and adoption data from multiple teams. It can also collect organization-wide data when you provide an organization API key and organization ID.

The integration collects:

  • Team administration data, including members, usage events, spend, groups, model access, repository blocklists, audit events, and Bugbot repositories.
  • Team analytics, per-user analytics, AI code attribution, conversation insights, and Bugbot review analytics when those features are available.
  • Organization usage, spend, membership, groups, and model-access data when you configure organization credentials.

Coralogix derives metrics for usage, cost, activity, governance, and adoption analysis.

Collection schedule

DataScheduleInitial coverage
Usage events, audit events, AI code commits, and AI code changesHourly, after a short settlement delayUp to the previous 23 hours
Team daily usage and AI code summariesRefreshed hourlyCurrent provider data
Team analytics and per-user analyticsDaily after 01:00 UTCPrevious UTC day
Team and organization snapshotsDaily after 01:00 UTCCurrent snapshot
Organization daily usage and usage eventsDaily after 01:00 UTCPrevious UTC day

Coralogix distributes daily collections across a 30-minute window and hourly collections across a 4-minute window. These offsets reduce synchronized calls to Cursor without changing the reporting period.

What you need

  • A Cursor team API key with the admin:* scope for every team you want to monitor, set to the maximum expiry date Cursor allows. The key must be able to read the team's model-access configuration, which Coralogix uses to validate the key and identify the team. Coralogix accepts a key of the form crsr_ followed by 64 lowercase hexadecimal characters.
  • Optionally, a Cursor organization API key with the admin:* scope and its organization ID, to also collect organization-wide data. Both values are required together; omit both to skip organization data.
  • The Coralogix INTEGRATIONS:READCONFIG permission to view integrations and INTEGRATIONS:DEPLOY permission to create or update them. The Data Admin and Platform Admin roles include deployment permission.

Create Cursor API keys

Team API keys

  1. In the Cursor Dashboard, select API Keys.
  2. Select New API Key.
  3. Enter a descriptive name, assign the admin:* scope, and set the expiry to the maximum date Cursor allows.
  4. Copy the key and store it securely. Cursor displays team keys with the crsr_ prefix.
  5. Repeat these steps for every team you want the integration to collect.

Organization API key

Organization data collection is optional, and a single integration instance supports only one Cursor organization — unlike team keys, you cannot add keys for multiple organizations to one integration.

  1. In Cursor organization settings, select API Keys.
  2. Create an organization API key with the admin:* scope and the maximum expiry date Cursor allows.
  3. Copy the key and the organization ID. You must provide both when configuring the integration.

Set up the integration

  1. In Coralogix, select Data Flow, then Integrations.

  2. Search for and select Cursor Usage & Cost.

  3. Select Connect, then Add New.

  4. Configure the integration:

    FieldDescription
    Integration nameName used to identify this integration instance. The default is Cursor Usage & Cost.
    Application nameCoralogix application assigned to collected data. The default is Cursor.
    Subsystem nameCoralogix subsystem assigned to collected data. The default is Admin APIs. Clear the field to use the individual dataset name as the subsystem.
    Cursor API keysUnder Team, select Add team key and enter a key for each Cursor team.
    Organization IDCursor organization ID. Optional. Provide it together with Organization API key to also collect organization-wide data.
    Organization API keyCursor organization API key. Optional. Provide it together with Organization ID to also collect organization-wide data.
  5. Select Create.

Coralogix validates every team key against the Cursor model-access configuration endpoint. When you provide organization credentials, it also validates the organization key and organization ID together against the pooled-usage endpoint.

Collected data

Metrics

The integration emits all metric instruments as gauges. Names ending in _total describe the count reported for an event or reporting period; they are not monotonic counters maintained by the collector.

Metric labels and timestamps

Labels vary by dataset and include only dimensions supplied by Cursor.

DatasetCommon labels
Team datateam_id; member series can also include user_id, email, name, and role.
Usage eventsmodel, kind, billing_mode, is_chargeable, is_headless, max_mode, email, and applicable automation or service-account identifiers.
AnalyticsModel, client version, feature, outcome, intent, mode, tool, skill, command, or file-extension dimensions supplied by the endpoint.
AI codeRepository, branch, source, model, file extension, surface, and change direction.
Auditevent_type, actor identity, and dimensions specific to the audit event.
Organization dataorganization; team and member series can also include team_id, team_name, member identity, and role.

Event-based samples use the Cursor event timestamp. Daily samples use the start of the reported UTC day, and snapshots use the collection time. When a delayed daily metric is too old for normal ingestion, Coralogix moves its sample timestamp forward and adds a date label containing the original report date.

Limits and behavior

  • The first hourly collection covers at most the previous 23 hours. The first daily report covers the previous UTC day. The integration does not automatically backfill older history.
  • Cursor can publish daily analytics several hours after the report day ends. If an analytics endpoint returns an empty report, Coralogix retries every 30 minutes for up to 48 hours before accepting the day as genuinely empty.
  • A missing field or empty collection does not produce a zero-valued series. Coralogix emits explicit zero values where the Cursor endpoint defines them, such as inactive-member state and per-user spend.
  • A 401 or 403 response from an entitlement-gated team analytics, AI Code, Bugbot, or conversation endpoint does not stop other datasets. Coralogix records progress for that dataset and checks it again during the next daily collection.
  • Conversation insight collection remains empty when you turn off conversation insights in Cursor.
  • Coralogix honors Cursor rate-limit responses and retries after the delay supplied by Cursor, or after a default delay when no retry value is present.

Validate the integration

Validate metrics

In Metrics Explorer, query a baseline team metric such as:

cursor_member_info

If your Cursor plan includes analytics access, query a daily analytics metric such as:

cursor_active_users_total

Daily analytics can appear later than team snapshots because Coralogix waits for Cursor to publish the completed report day.

Troubleshoot missing data

  • If Coralogix cannot create the integration, confirm that each team key has the admin:* scope and can read the team's model-access configuration.
  • If only analytics, AI Code, Bugbot, or conversation data is missing, confirm that the Cursor plan and feature configuration grant access to those endpoints.
  • If organization data is missing, confirm that you configured both organization fields, and that the organization key has the admin:* scope.
  • If a metric is absent, inspect whether the source field used by that metric is missing from the Cursor response. The integration does not synthesize zero values for absent fields.
Last updated on