Cursor integration with Coralogix
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
| Data | Schedule | Initial coverage |
|---|---|---|
| Usage events, audit events, AI code commits, and AI code changes | Hourly, after a short settlement delay | Up to the previous 23 hours |
| Team daily usage and AI code summaries | Refreshed hourly | Current provider data |
| Team analytics and per-user analytics | Daily after 01:00 UTC | Previous UTC day |
| Team and organization snapshots | Daily after 01:00 UTC | Current snapshot |
| Organization daily usage and usage events | Daily after 01:00 UTC | Previous 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 formcrsr_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:READCONFIGpermission to view integrations andINTEGRATIONS:DEPLOYpermission to create or update them. The Data Admin and Platform Admin roles include deployment permission.
Create Cursor API keys
Team API keys
- In the Cursor Dashboard, select API Keys.
- Select New API Key.
- Enter a descriptive name, assign the
admin:*scope, and set the expiry to the maximum date Cursor allows. - Copy the key and store it securely. Cursor displays team keys with the
crsr_prefix. - 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.
- In Cursor organization settings, select API Keys.
- Create an organization API key with the
admin:*scope and the maximum expiry date Cursor allows. - Copy the key and the organization ID. You must provide both when configuring the integration.
Set up the integration
-
In Coralogix, select Data Flow, then Integrations.
-
Search for and select Cursor Usage & Cost.
-
Select Connect, then Add New.
-
Configure the integration:
Field Description Integration name Name used to identify this integration instance. The default is Cursor Usage & Cost.Application name Coralogix application assigned to collected data. The default is Cursor.Subsystem name Coralogix subsystem assigned to collected data. The default is Admin APIs. Clear the field to use the individual dataset name as the subsystem.Cursor API keys Under Team, select Add team key and enter a key for each Cursor team. Organization ID Cursor organization ID. Optional. Provide it together with Organization API key to also collect organization-wide data. Organization API key Cursor organization API key. Optional. Provide it together with Organization ID to also collect organization-wide data. -
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 | Description |
|---|---|
cursor_event_cost_usd | Charged cost of a usage event in USD. |
cursor_event_list_price_usd | List-price cost of a usage event in USD. |
cursor_event_token_fee_usd | Token fee for a usage event in USD. |
cursor_event_tokens_total | Tokens in a usage event, separated by token type. |
cursor_events_total | Usage events. |
cursor_event_request_units_total | Request units attributed to a usage event. |
cursor_member_active | Whether a member was active on the report day, as 1 or 0. |
cursor_requests_total | Member requests by product surface. |
cursor_requests_by_class_total | Member requests by billing class. |
cursor_lines_added_total | Lines added with Cursor assistance. |
cursor_lines_deleted_total | Lines deleted with Cursor assistance. |
cursor_accepted_lines_added_total | Accepted suggested additions. |
cursor_accepted_lines_deleted_total | Accepted suggested deletions. |
cursor_applies_total | Apply operations. |
cursor_accepts_total | Accepted suggestions. |
cursor_rejects_total | Rejected suggestions. |
cursor_tab_suggestions_total | Tab suggestions. |
cursor_tab_accepts_total | Accepted Tab suggestions. |
cursor_member_spend_gross_usd | Member gross spend for the billing cycle. |
cursor_member_spend_overage_usd | Member overage spend for the billing cycle. |
cursor_member_fast_premium_requests_total | Member fast premium requests. |
cursor_member_monthly_limit_usd | Configured member monthly spend limit in USD. |
cursor_member_hard_limit_usd | Configured member hard spend limit in USD. |
cursor_member_effective_limit_usd | Effective member spend limit in USD. |
cursor_member_info | Member identity and role information, with a value of 1. |
cursor_model_access_enabled | Provider or model access state, as 1 for on or 0 for off. |
cursor_model_access_new_default | Default model-access state for new members, as 1 for on or 0 for off. |
cursor_repo_blocklist_rules | Repository blocklist rules. |
cursor_bugbot_repos | Bugbot repositories by configuration state. |
cursor_member_daily_spend_usd | Daily member spend within a billing group. |
cursor_group_members | Members in a billing group. |
cursor_billing_cycle_start_seconds | Billing-cycle start as Unix time in seconds. |
cursor_billing_cycle_end_seconds | Billing-cycle end as Unix time in seconds. |
| Metric | Description |
|---|---|
cursor_active_users_total | Daily active Cursor users. |
cursor_active_users_cli | Daily active CLI users. |
cursor_active_users_cloud_agent | Daily active Cloud Agent users. |
cursor_active_users_bugbot | Daily active Bugbot users. |
cursor_agent_diffs_accepted_total | Accepted Agent diff suggestions. |
cursor_agent_diffs_rejected_total | Rejected Agent diff suggestions. |
cursor_agent_green_lines_accepted_total | Accepted added lines from Agent diffs. |
cursor_agent_green_lines_rejected_total | Rejected added lines from Agent diffs. |
cursor_agent_red_lines_accepted_total | Accepted deleted lines from Agent diffs. |
cursor_agent_red_lines_rejected_total | Rejected deleted lines from Agent diffs. |
cursor_model_distinct_users | Distinct users by model. |
cursor_client_version_users | Users by Cursor client version. |
cursor_conversation_snapshot | Conversation distribution for a report day. |
cursor_conversation_intent_top_snapshot | Leading conversation intents for a report day. |
cursor_conversation_total | Conversations by reported category. |
cursor_conversation_subcategory_snapshot | Conversation subcategory distribution for a report day. |
cursor_bugbot_prs_reviewed | Pull requests reviewed by Bugbot. |
cursor_bugbot_pr_reviews_total | Bugbot pull-request reviews. |
cursor_bugbot_issues_snapshot | Current Bugbot issues by state and severity. |
cursor_bugbot_issues_total | Bugbot issues reported for the period. |
cursor_bugbot_review_bugs_found_total | Bugs found by Bugbot reviews. |
cursor_bugbot_reviews_total | Bugbot reviews. |
cursor_bugbot_review_cost_usd | Bugbot review cost in USD. |
cursor_bugbot_review_findings_total | Individual Bugbot review findings. |
cursor_user_model_messages_total | Per-user model messages. |
cursor_user_lines_total | Per-user Agent edit lines by type and outcome. |
cursor_user_agent_diffs_suggested_total | Per-user Agent diff suggestions. |
cursor_user_agent_diffs_accepted_total | Per-user accepted Agent diffs. |
cursor_user_agent_diffs_rejected_total | Per-user rejected Agent diffs. |
cursor_user_tab_suggestions_total | Per-user Tab suggestions. |
cursor_user_tab_accepts_total | Per-user accepted Tab suggestions. |
cursor_user_tab_rejects_total | Per-user rejected Tab suggestions. |
cursor_user_mcp_usage_total | Per-user MCP tool usage. |
cursor_user_skill_usage_total | Per-user skill usage. |
cursor_user_command_usage_total | Per-user command usage. |
cursor_user_plan_usage_total | Per-user Plan mode usage. |
cursor_user_ask_mode_usage_total | Per-user Ask mode usage. |
cursor_user_extension_accepts_total | Per-user accepted suggestions by file extension. |
cursor_user_extension_rejects_total | Per-user rejected suggestions by file extension. |
cursor_user_extension_files_total | Per-user files by extension. |
cursor_user_extension_lines_suggested_total | Per-user suggested lines by file extension. |
cursor_user_extension_lines_accepted_total | Per-user accepted lines by file extension. |
cursor_user_extension_lines_rejected_total | Per-user rejected lines by file extension. |
| Metric | Description |
|---|---|
cursor_ai_code_lines_total | AI-attributed lines in commits. |
cursor_commits_total | Commits reported by AI Code Tracking. |
cursor_ai_code_total_lines_added_total | Added lines across AI-attributed changes. |
cursor_ai_code_total_lines_deleted_total | Deleted lines across AI-attributed changes. |
cursor_ai_changes_total | AI-attributed changes. |
cursor_ai_change_lines_added_total | Added lines in an AI-attributed change. |
cursor_ai_change_lines_deleted_total | Deleted lines in an AI-attributed change. |
cursor_ai_change_file_lines_added_total | Added lines in an AI-attributed file change. |
cursor_ai_change_file_lines_deleted_total | Deleted lines in an AI-attributed file change. |
| Metric | Description |
|---|---|
cursor_audit_events_total | Audit events by event type. |
cursor_login_attempts_total | Login attempts. |
cursor_logout_total | Logout events. |
cursor_team_api_key_events_total | Team API key events. |
cursor_service_account_key_events_total | Service-account key events. |
cursor_service_account_events_total | Service-account lifecycle events. |
cursor_org_api_key_events_total | Organization API key events. |
cursor_user_api_key_events_total | User API key events. |
cursor_member_added_total | Team-member additions. |
cursor_member_removed_total | Team-member removals. |
cursor_role_changes_total | Member role changes. |
cursor_invite_link_events_total | Invite-link events. |
cursor_invite_email_sent_total | Invitation emails sent. |
cursor_team_settings_changes_total | Team-settings changes. |
cursor_team_rule_events_total | Team-rule events. |
cursor_team_hook_events_total | Team-hook events. |
cursor_team_command_events_total | Team-command events. |
cursor_spend_limit_changes_total | Spend-limit changes. |
cursor_privacy_mode_changes_total | Privacy-mode changes. |
cursor_team_repo_events_total | Team-repository events. |
cursor_bugbot_installation_events_total | Bugbot installation events. |
cursor_bugbot_installation_settings_changes_total | Bugbot installation-settings changes. |
cursor_bugbot_repo_settings_changes_total | Bugbot repository-settings changes. |
cursor_bugbot_team_rule_events_total | Bugbot team-rule events. |
cursor_bugbot_team_settings_changes_total | Bugbot team-settings changes. |
cursor_bugbot_bulk_repo_update_total | Bugbot bulk repository updates. |
cursor_directory_group_created_total | Directory groups created. |
cursor_directory_group_updated_total | Directory groups updated. |
cursor_directory_group_permissions_changed_total | Directory-group permission changes. |
cursor_directory_group_deleted_total | Directory groups deleted. |
cursor_directory_group_member_added_total | Members added to directory groups. |
cursor_directory_group_member_removed_total | Members removed from directory groups. |
cursor_mcp_config_events_total | MCP configuration events. |
cursor_cloud_agent_setting_changes_total | Cloud Agent setting changes. |
| Metric | Description |
|---|---|
cursor_org_pooled_usage_usd | Organization pooled usage in USD. |
cursor_org_pool_limit_usd | Organization pool limit in USD. |
cursor_org_pool_remaining_usd | Remaining organization pool balance in USD. |
cursor_org_team_budget_limit_usd | Team budget within the organization pool in USD. |
cursor_org_contract_start_seconds | Organization contract start as Unix time in seconds. |
cursor_org_contract_end_seconds | Organization contract end as Unix time in seconds. |
cursor_org_member_contract_spend_usd | Member contract spend in USD. |
cursor_org_members | Organization members by role. |
cursor_org_team_membership_info | Member-to-team relationships, with a value of 1. |
Metric labels and timestamps
Labels vary by dataset and include only dimensions supplied by Cursor.
| Dataset | Common labels |
|---|---|
| Team data | team_id; member series can also include user_id, email, name, and role. |
| Usage events | model, kind, billing_mode, is_chargeable, is_headless, max_mode, email, and applicable automation or service-account identifiers. |
| Analytics | Model, client version, feature, outcome, intent, mode, tool, skill, command, or file-extension dimensions supplied by the endpoint. |
| AI code | Repository, branch, source, model, file extension, surface, and change direction. |
| Audit | event_type, actor identity, and dimensions specific to the audit event. |
| Organization data | organization; 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
401or403response 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.