# Audit log actions

Every action the audit log records, with the title the web app and the CLI show.

Canonical page: https://kortix.com/docs/audit-actions

{/* Generated by apps/web/scripts/generate-audit-actions-doc.mjs from packages/shared/src/audit-labels.ts. Do not edit directly. */}

Every row in the [audit log](/docs/accounts#audit-log) carries an `action`: `domain.resource.verb`, for example `gateway.key.revoke`. A request's row carries the action of its route. The web app and `kortix audit ls` show the title next to it.

- Filter by prefix: `?action=gateway.` on the audit API, `kortix audit ls --action gateway.`, or `--action-prefix` on an audit webhook.
- `metadata.http` keeps the request's route template, for example `DELETE /v1/projects/:projectId/gateway/keys/:keyId`. The raw path is never recorded.
- A request that matched no route is `api.route.unmatched`.
- A route with two actions (`secret.strategy.update` or `secret.strategy.changed`) records the second when its handler records that event, for example only for a real change. That event, with its before and after state, is then the request's row.
- Rows written before 2026-09-24 carry `METHOD /template` as their action. The web app and the CLI show them with the same titles.

This page lists 671 route actions and 63 other events.

## `account.`

| Action | Title | Route |
| --- | --- | --- |
| `account.branding.asset.remove` | Removed branding asset | `DELETE /v1/accounts/:accountId/branding/assets/:kind` |
| `account.branding.asset.upload` | Uploaded branding asset | `POST /v1/accounts/:accountId/branding/assets/:kind` |
| `account.branding.read` | Viewed branding | `GET /v1/accounts/:accountId/branding` |
| `account.branding.reset` | Reset branding | `DELETE /v1/accounts/:accountId/branding` |
| `account.branding.update` | Updated branding | `PUT /v1/accounts/:accountId/branding` |
| `account.create` | Created account | `POST /v1/accounts` |
| `account.deletion.cancel` | Canceled account deletion | `POST /v1/account/cancel-deletion` (also `POST /v1/billing/account/cancel-deletion`) |
| `account.deletion.execute` | Deleted account immediately | `DELETE /v1/account/delete-immediately` (also `DELETE /v1/billing/account/delete-immediately`) |
| `account.deletion.read` | Viewed account deletion status | `GET /v1/account/deletion-status` (also `GET /v1/billing/account/deletion-status`) |
| `account.deletion.request` | Requested account deletion | `POST /v1/account/request-deletion` (also `POST /v1/billing/account/request-deletion`) |
| `account.list` | Listed accounts | `GET /v1/accounts` |
| `account.read` | Viewed account | `GET /v1/accounts/:accountId` |
| `account.token.create` | Created personal access token | `POST /v1/accounts/tokens` |
| `account.token.list` | Listed personal access tokens | `GET /v1/accounts/tokens` |
| `account.token.revoke` | Revoked personal access token | `DELETE /v1/accounts/tokens/:tokenId` |
| `account.update` | Renamed account | `PATCH /v1/accounts/:accountId` |

## `admin.`

| Action | Title | Route |
| --- | --- | --- |
| `admin.account.credit.debit` | Debited account credits | `POST /v1/admin/api/accounts/:id/credits/debit` |
| `admin.account.credit.grant` | Granted account credits | `POST /v1/admin/api/accounts/:id/credits` |
| `admin.account.enterprise_demo.set` | Set enterprise demo flag | `POST /v1/admin/api/accounts/:id/enterprise-demo` |
| `admin.account.enterprise_entitlement.set` | Set enterprise entitlement flag | `POST /v1/admin/api/accounts/:id/enterprise-entitlement` |
| `admin.account.ledger.list` | Viewed account credit ledger | `GET /v1/admin/api/accounts/:id/ledger` |
| `admin.account.list` | Listed all platform accounts | `GET /v1/admin/api/accounts` |
| `admin.account.managed_models.set` | Set managed-models override | `POST /v1/admin/api/accounts/:id/managed-models` |
| `admin.account.member.list` | Listed account members as admin | `GET /v1/admin/api/accounts/:id/users` |
| `admin.account.member_role.set` | Changed account member role | `POST /v1/admin/api/accounts/:id/members/:userId/role` |
| `admin.account.overrides.set` | Set account entitlement overrides | `PUT /v1/admin/api/accounts/:id/overrides` |
| `admin.account.project.list` | Listed account projects as admin | `GET /v1/admin/api/accounts/:id/projects` |
| `admin.account.session_limit.set` | Updated account session limit | `POST /v1/admin/api/accounts/:id/session-limit` |
| `admin.account.subscription.read` | Viewed account Stripe subscription | `GET /v1/admin/api/accounts/:id/subscription` |
| `admin.account.tier.set` | Updated account tier | `POST /v1/admin/api/accounts/:id/tier` |
| `admin.account.trial.grant` | Granted account trial | `POST /v1/admin/api/accounts/:id/trial` |
| `admin.account.trial.revoke` | Revoked account trial | `DELETE /v1/admin/api/accounts/:id/trial` |
| `admin.analytics.activity.read` | Viewed platform activity analytics | `GET /v1/admin/analytics/activity` |
| `admin.analytics.usage.read` | Viewed platform credit burn analytics | `GET /v1/admin/analytics/usage` |
| `admin.impersonate.list` | Listed active impersonation grants | `GET /v1/admin/api/impersonate/active` |
| `admin.impersonate.start` | Started account impersonation | `POST /v1/admin/api/impersonate` |
| `admin.impersonate.stop` | Stopped account impersonation | `DELETE /v1/admin/api/impersonate/:grantId` |
| `admin.ops.overview.read` | Viewed platform operations overview | `GET /v1/ops/overview` |
| `admin.project.list` | Listed all platform projects | `GET /v1/admin/api/projects` |
| `admin.sandbox.list` | Listed all platform sandboxes | `GET /v1/admin/api/sandboxes` |
| `admin.sandbox.migrate` | Migrated sandbox to another provider | `POST /v1/admin/api/sandboxes/:sessionId/migrate` |
| `admin.sandbox_provider.analytics.read` | Viewed sandbox provider analytics | `GET /v1/admin/api/provider-analytics` |
| `admin.sandbox_provider.distribution.read` | Viewed sandbox provider distribution | `GET /v1/admin/api/provider-distribution` |
| `admin.sandbox_provider.distribution.update` | Updated sandbox provider distribution | `PUT /v1/admin/api/provider-distribution` |
| `admin.sandbox_provider.fallback.read` | Viewed sandbox provider fallback | `GET /v1/admin/api/provider-fallback` |
| `admin.sandbox_provider.fallback.update` | Updated sandbox provider fallback | `PUT /v1/admin/api/provider-fallback` |

## `agent.`

| Action | Title | Route |
| --- | --- | --- |
| `agent.config.read` | Viewed agent configuration | `GET /v1/projects/:projectId/agents/:agentName/config` |
| `agent.config.update` | Updated agent configuration | `PUT /v1/projects/:projectId/agents/:agentName/config` |
| `agent.scope.update` | Updated agent access scope | `PUT /v1/projects/:projectId/agents/:agentName/scope` |

## `app.`

| Action | Title | Route |
| --- | --- | --- |
| `app.access.read` | Viewed Kortix App access policy | `GET /v1/projects/:projectId/apps/:appId/access` |
| `app.access.update` | Updated Kortix App access policy | `PATCH /v1/projects/:projectId/apps/:appId/access` |
| `app.access_session.create` | Created Kortix App access session | `POST /v1/projects/:projectId/apps/:appId/access-session` |
| `app.agent.list` | Listed Kortix App agent grants | `GET /v1/projects/:projectId/apps/:appId/agents` |
| `app.artifact.create` | Registered Kortix App artifact | `POST /v1/projects/:projectId/apps/artifacts` |
| `app.artifact.finalize` | Finalized Kortix App artifact upload | `POST /v1/projects/:projectId/apps/artifacts/:artifactId/finalize` |
| `app.create` | Created Kortix App | `POST /v1/projects/:projectId/apps` |
| `app.delete` | Deleted Kortix App | `DELETE /v1/projects/:projectId/apps/:appId` |
| `app.deployment.create` | Deployed Kortix App | `POST /v1/projects/:projectId/apps/:appId/deployments` |
| `app.deployment.list` | Listed Kortix App deployments | `GET /v1/projects/:projectId/apps/:appId/deployments` |
| `app.deployment.log.list` | Viewed Kortix App deployment logs | `GET /v1/projects/:projectId/apps/:appId/deployments/:deploymentId/logs` |
| `app.deployment.read` | Viewed Kortix App deployment | `GET /v1/projects/:projectId/apps/:appId/deployments/:deploymentId` |
| `app.list` | Listed Kortix Apps | `GET /v1/projects/:projectId/apps` |
| `app.origin.access` | Opened deployed Kortix App | before the API router |
| `app.origin.websocket.connect` | Opened Kortix App WebSocket | before the API router |
| `app.read` | Viewed Kortix App | `GET /v1/projects/:projectId/apps/:appId` |
| `app.rollback` | Rolled back Kortix App | `POST /v1/projects/:projectId/apps/:appId/rollback` |
| `app.start` | Started Kortix App | `POST /v1/projects/:projectId/apps/:appId/start` |
| `app.stop` | Stopped Kortix App | `POST /v1/projects/:projectId/apps/:appId/stop` |
| `app.update` | Updated Kortix App | `PATCH /v1/projects/:projectId/apps/:appId` |

## `approval.`

| Action | Title | Route |
| --- | --- | --- |
| `approval.link.read` | Viewed approval link | `GET /v1/approval-links/:token` |

## `audit.`

| Action | Title | Route |
| --- | --- | --- |
| `audit.project.list` | Viewed project audit log | `GET /v1/projects/:projectId/audit` |
| `audit.session.ingest` | Ingested session audit events | `POST /v1/projects/:projectId/sessions/:sessionId/audit/events` |
| `audit.session.list` | Viewed session audit log | `GET /v1/projects/:projectId/sessions/:sessionId/audit` |

## `auth.`

| Action | Title | Route |
| --- | --- | --- |
| `auth.access_request.create` | Requested early access | `POST /v1/access/request-access` |
| `auth.email.check` | Checked sign-in email | `POST /v1/access/check-email` |
| `auth.identity.read` | Viewed own identity | `GET /v1/accounts/me` |
| `auth.logout` | Signed out | `POST /v1/auth/logout` (also `POST /v1/auth/sign-out`) |
| `auth.magic_link.send` | Requested a sign-in link | `POST /v1/auth/sign-in/magic-link` |
| `auth.mfa.challenge.create` | Started a second-factor challenge | `POST /v1/auth/mfa/factors/:factorId/challenge` |
| `auth.mfa.factor.create` | Enrolled a second factor | `POST /v1/auth/mfa/factors` |
| `auth.mfa.factor.delete` | Removed a second factor | `DELETE /v1/auth/mfa/factors/:factorId` |
| `auth.mfa.factor.verify` | Verified a second factor | `POST /v1/auth/mfa/factors/:factorId/verify` |
| `auth.otp.verify` | Verified a sign-in code | `POST /v1/auth/verify-otp` |
| `auth.password.authenticate` | Signed in with a password | `POST /v1/auth/sign-in/password` |
| `auth.password.update` | Changed the password | `POST /v1/auth/password/update` |
| `auth.password_reset.send` | Requested a password reset | `POST /v1/auth/password/reset` |
| `auth.platform_role.read` | Viewed own platform role | `GET /v1/user-roles` |
| `auth.profile.update` | Updated profile | `PATCH /v1/auth/user` |
| `auth.session.refresh` | Refreshed a sign-in session | `POST /v1/auth/refresh` |
| `auth.signup_status.read` | Viewed signup status | `GET /v1/access/signup-status` |
| `auth.social_sign_in.complete` | Completed a social sign-in | `POST /v1/auth/oauth/exchange` |
| `auth.social_sign_in.start` | Started a social sign-in | `POST /v1/auth/sign-in/oauth` |
| `auth.sso_sign_in.start` | Started an SSO sign-in | `POST /v1/auth/sign-in/sso` |
| `auth.user.create` | Signed up | `POST /v1/auth/signup` |
| `auth.user.read` | Viewed the signed-in user | `GET /v1/auth/user` |

## `billing.`

| Action | Title | Route |
| --- | --- | --- |
| `billing.account_state.read` | Viewed billing status | `GET /v1/billing/account-state` |
| `billing.account_state.summary.read` | Viewed billing summary | `GET /v1/billing/account-state/minimal` |
| `billing.auto_topup.read` | Viewed auto top-up settings | `GET /v1/billing/auto-topup/settings` |
| `billing.auto_topup.setup_status.read` | Viewed auto top-up setup status | `GET /v1/billing/auto-topup/setup-status` |
| `billing.auto_topup.update` | Configured credit auto top-up | `POST /v1/billing/auto-topup/configure` |
| `billing.checkout_session.confirm` | Confirmed checkout session | `POST /v1/billing/confirm-checkout-session` |
| `billing.checkout_session.create` | Created subscription checkout session | `POST /v1/billing/create-checkout-session` |
| `billing.checkout_session.read` | Viewed checkout session | `GET /v1/billing/checkout-session/:sessionId` |
| `billing.credit.agent_usage.deduct` | Deducted credits for agent run | `POST /v1/billing/deduct-usage` |
| `billing.credit.llm_usage.deduct` | Deducted credits for LLM usage | `POST /v1/billing/deduct` |
| `billing.credit_breakdown.read` | Viewed credit breakdown | `GET /v1/billing/credit-breakdown` |
| `billing.credit_purchase.start` | Started credit purchase checkout | `POST /v1/billing/purchase-credits` |
| `billing.credit_usage.list` | Viewed credit usage | `GET /v1/billing/credit-usage` |
| `billing.cron.free_tier_credit.rotate` | Ran free-tier credit rotation | `POST /v1/billing/cron/free-tier-rotation` |
| `billing.cron.trial.expire` | Ran trial expiry sweep | `POST /v1/billing/cron/trial-expiry` |
| `billing.cron.yearly_credit.rotate` | Ran yearly credit rotation | `POST /v1/billing/cron/yearly-rotation` |
| `billing.inline_checkout.confirm` | Confirmed inline checkout | `POST /v1/billing/confirm-inline-checkout` |
| `billing.inline_checkout.create` | Created inline checkout | `POST /v1/billing/create-inline-checkout` |
| `billing.per_seat.migrate` | Migrated to per-seat pricing | `POST /v1/billing/claim-per-seat` |
| `billing.per_seat_checkout.create` | Created per-seat checkout session | `POST /v1/billing/create-per-seat-checkout` |
| `billing.portal_session.create` | Created Stripe portal session | `POST /v1/billing/create-portal-session` |
| `billing.proration.preview` | Previewed plan change proration | `GET /v1/billing/proration-preview` |
| `billing.seat_quantity.sync` | Synchronized seat quantity | `POST /v1/billing/sync-seat-quantity` |
| `billing.subscription.cancel` | Canceled subscription | `POST /v1/billing/cancel-subscription` |
| `billing.subscription.downgrade.schedule` | Scheduled plan downgrade | `POST /v1/billing/schedule-downgrade` |
| `billing.subscription.reactivate` | Reactivated subscription | `POST /v1/billing/reactivate-subscription` |
| `billing.subscription.scheduled_change.cancel` | Canceled scheduled plan change | `POST /v1/billing/cancel-scheduled-change` |
| `billing.subscription.sync` | Synchronized subscription | `POST /v1/billing/sync-subscription` |
| `billing.tier_configuration.list` | Viewed tier configurations | `GET /v1/billing/tier-configurations` |
| `billing.transaction.list` | Listed credit transactions | `GET /v1/billing/transactions` |
| `billing.transaction.summary.read` | Viewed transaction summary | `GET /v1/billing/transactions/summary` |
| `billing.usage_history.read` | Viewed credit usage history | `GET /v1/billing/usage-history` |
| `billing.webhook.revenuecat.receive` | Received RevenueCat billing webhook | `POST /v1/billing/webhooks/revenuecat` (also `POST /v1/billing/webhook/revenuecat`) |
| `billing.webhook.stripe.receive` | Received Stripe billing webhook | `POST /v1/billing/webhooks/stripe` (also `POST /v1/billing/webhook/stripe`) |

## `change_request.`

| Action | Title | Route |
| --- | --- | --- |
| `change_request.close` | Closed change request | `POST /v1/projects/:projectId/change-requests/:crId/close` |
| `change_request.create` | Created change request | `POST /v1/projects/:projectId/change-requests` |
| `change_request.diff.read` | Viewed change request diff | `GET /v1/projects/:projectId/change-requests/:crId/diff` |
| `change_request.list` | Listed change requests | `GET /v1/projects/:projectId/change-requests` |
| `change_request.merge` | Merged change request | `POST /v1/projects/:projectId/change-requests/:crId/merge` |
| `change_request.merge.preview` | Previewed change request merge | `GET /v1/projects/:projectId/change-requests/:crId/merge-preview` |
| `change_request.read` | Viewed change request | `GET /v1/projects/:projectId/change-requests/:crId` |
| `change_request.reopen` | Reopened change request | `POST /v1/projects/:projectId/change-requests/:crId/reopen` |
| `change_request.request_changes` | Requested changes on change request | `POST /v1/projects/:projectId/change-requests/:crId/request-changes` |
| `change_request.update` | Updated change request | `PATCH /v1/projects/:projectId/change-requests/:crId` |

## `channel.`

| Action | Title | Route |
| --- | --- | --- |
| `channel.binding.list` | Listed channel bindings | `GET /v1/projects/:projectId/channels/bindings` |
| `channel.binding.update` | Updated channel binding | `PATCH /v1/projects/:projectId/channels/bindings/:bindingId` |
| `channel.email.connect` | Connected email inbox | `POST /v1/projects/:projectId/channels/email/connect` |
| `channel.email.disconnect` | Disconnected email inbox | `DELETE /v1/projects/:projectId/channels/email/installation` |
| `channel.email.installation.read` | Viewed email installation | `GET /v1/projects/:projectId/channels/email/installation` |
| `channel.email.mode.read` | Viewed email setup options | `GET /v1/projects/:projectId/channels/email/mode` |
| `channel.email.sender_policy.update` | Updated email sender policy | `PATCH /v1/projects/:projectId/channels/email/installation` |
| `channel.slack.connect` | Connected Slack workspace | `POST /v1/projects/:projectId/channels/slack/connect` |
| `channel.slack.custom_app_manifest.read` | Viewed custom Slack app manifest | `GET /v1/webhooks/slack/:projectId/manifest` |
| `channel.slack.disconnect` | Disconnected Slack workspace | `DELETE /v1/projects/:projectId/channels/slack/installation` |
| `channel.slack.file.download` | Downloaded Slack file | `GET /v1/projects/:projectId/channels/slack/file` |
| `channel.slack.file.upload` | Uploaded file to Slack | `POST /v1/projects/:projectId/channels/slack/file/upload` |
| `channel.slack.identity.connect` | Linked Slack identity | `POST /v1/channels/slack/identity/bind` |
| `channel.slack.install.complete` | Completed Slack app installation | `GET /v1/webhooks/slack/oauth/callback` |
| `channel.slack.installation.read` | Viewed Slack installation | `GET /v1/projects/:projectId/channels/slack/installation` |
| `channel.slack.login_link.read` | Opened Slack login link | `GET /v1/channels/slack/identity/login/:token` |
| `channel.slack.mode.read` | Viewed Slack setup options | `GET /v1/projects/:projectId/channels/slack/mode` |
| `channel.slack.thread.bind` | Bound session to Slack thread | `POST /v1/projects/:projectId/channels/slack/bind-thread` |
| `channel.teams.connect` | Connected Microsoft Teams tenant | `POST /v1/projects/:projectId/channels/teams/connect` |
| `channel.teams.conversation.list` | Listed Microsoft Teams conversations | `GET /v1/projects/:projectId/channels/teams/conversations` |
| `channel.teams.disconnect` | Disconnected Microsoft Teams tenant | `DELETE /v1/projects/:projectId/channels/teams/installation` |
| `channel.teams.file.download` | Downloaded Microsoft Teams file | `GET /v1/projects/:projectId/channels/teams/file` |
| `channel.teams.file.upload` | Uploaded file to Microsoft Teams | `POST /v1/projects/:projectId/channels/teams/file/upload` |
| `channel.teams.identity.connect` | Linked Teams identity | `POST /v1/channels/teams/identity/bind` |
| `channel.teams.install.complete` | Completed Teams app installation | `GET /v1/webhooks/teams/oauth/callback` |
| `channel.teams.installation.read` | Viewed Microsoft Teams installation | `GET /v1/projects/:projectId/channels/teams/installation` |
| `channel.teams.login_link.read` | Opened Teams login link | `GET /v1/channels/teams/identity/login/:token` |
| `channel.teams.manifest.read` | Viewed Microsoft Teams app manifest | `GET /v1/projects/:projectId/channels/teams/manifest` |
| `channel.teams.message.send` | Sent Microsoft Teams message | `POST /v1/projects/:projectId/channels/teams/message` |
| `channel.teams.mode.read` | Viewed Microsoft Teams setup options | `GET /v1/projects/:projectId/channels/teams/mode` |

## `connector.`

| Action | Title | Route |
| --- | --- | --- |
| `connector.account.list` | Listed connector accounts | `GET /v1/connectors/projects/:projectId/connectors/:slug/accounts` |
| `connector.action.run` | Requested connector call | `POST /v1/connectors/call` (also `POST /v1/connectors/projects/:projectId/call`) |
| `connector.approval.list` | Listed pending connector approvals | `GET /v1/projects/:projectId/approvals` |
| `connector.approval.needs_input.list` | Listed approvals needing input | `GET /v1/projects/:projectId/approvals/needs-input` |
| `connector.approval.resolve` or `connector.approval.approved` or `connector.approval.denied` | Resolved connector approval | `POST /v1/projects/:projectId/approvals/:executionId` |
| `connector.attachment.upload` | Uploaded connector attachment | `POST /v1/connectors/attachments` (also `POST /v1/connectors/projects/:projectId/attachments`) |
| `connector.auth.preview` | Previewed connector authentication | `POST /v1/connectors/projects/:projectId/connectors/auth-discovery` |
| `connector.authorization_strategy.update` | Updated connector authorization strategy | `PUT /v1/connectors/projects/:projectId/connectors/:slug/authorization-strategy` |
| `connector.catalog.list` | Viewed connector catalog | `GET /v1/connectors/catalog` (also `GET /v1/connectors/connectors`, `GET /v1/connectors/projects/:projectId/catalog`) |
| `connector.config.read` | Viewed connector configuration | `GET /v1/connectors/projects/:projectId/connectors/:slug/config` |
| `connector.connect_request.list` | Viewed pending connector authorizations | `GET /v1/connectors/projects/:projectId/sessions/:sessionId/connect-requests` |
| `connector.connection.activate` | Activated connector account | `PUT /v1/projects/:projectId/connections/:connectionId/activate` |
| `connector.connection.connect.finalize` | Finalized connector account connection | `POST /v1/projects/:projectId/connections/:connectionId/connect/finalize` |
| `connector.connection.connect.start` | Started connector account connection | `POST /v1/projects/:projectId/connections/:connectionId/connect` |
| `connector.connection.create` | Created connector account | `POST /v1/projects/:projectId/connections` |
| `connector.connection.credential.update` | Updated connector account credential | `PUT /v1/projects/:projectId/connections/:connectionId/credential` |
| `connector.connection.default.set` | Set default connector account | `PUT /v1/projects/:projectId/connections/:connectionId/default` |
| `connector.connection.list` | Listed project connector accounts | `GET /v1/projects/:projectId/connections` |
| `connector.connection.oauth.application.read` | Viewed connector OAuth application | `GET /v1/projects/:projectId/connections/:connectionId/oauth2/application` |
| `connector.connection.oauth.application.update` | Updated connector OAuth application | `PUT /v1/projects/:projectId/connections/:connectionId/oauth2/application` |
| `connector.connection.oauth.authorize` | Started connector OAuth authorization | `POST /v1/projects/:projectId/connections/:connectionId/oauth2/authorize` |
| `connector.connection.oauth.client.register` | Registered connector OAuth client | `POST /v1/projects/:projectId/connections/:connectionId/oauth2/register` |
| `connector.connection.oauth.device.check` | Checked connector device authorization | `POST /v1/projects/:projectId/connections/:connectionId/oauth2/device/:sessionId` |
| `connector.connection.oauth.device.start` | Started connector device authorization | `POST /v1/projects/:projectId/connections/:connectionId/oauth2/device` |
| `connector.connection.oauth.discover` | Discovered connector OAuth metadata | `POST /v1/projects/:projectId/connections/:connectionId/oauth2/discover` |
| `connector.connection.oauth.resource.discover` | Discovered MCP authorization server | `POST /v1/projects/:projectId/connections/:connectionId/oauth2/discover-resource` |
| `connector.connection.oauth.status.read` | Viewed connector OAuth status | `GET /v1/projects/:projectId/connections/:connectionId/oauth2/status` |
| `connector.connection.personal.create` | Created personal connector account | `POST /v1/projects/:projectId/connections/me` |
| `connector.connection.rename` | Renamed connector account | `PUT /v1/projects/:projectId/connections/:connectionId/label` |
| `connector.connection.revoke` | Revoked connector account | `PUT /v1/projects/:projectId/connections/:connectionId/revoke` |
| `connector.connection.roster.list` | Listed all connector accounts | `GET /v1/projects/:projectId/connections/all` |
| `connector.connection.shared.create` | Created shared connector account | `POST /v1/projects/:projectId/connectors/:slug/oauth2/connection` |
| `connector.create` | Created or updated connector | `POST /v1/connectors/projects/:projectId/connectors` |
| `connector.credential.delete` | Removed connector credential | `DELETE /v1/connectors/projects/:projectId/connectors/:slug/credential` |
| `connector.credential.set` | Set connector credential | `PUT /v1/connectors/projects/:projectId/connectors/:slug/credential` |
| `connector.credential_mode.update` | Updated connector credential mode | `PUT /v1/connectors/projects/:projectId/connectors/:slug/credential-mode` |
| `connector.delete` | Deleted connector | `DELETE /v1/connectors/projects/:projectId/connectors/:slug` |
| `connector.discover.detail.read` | Viewed discovery catalog connector | `GET /v1/connectors/projects/:projectId/discover/connectors/detail` |
| `connector.discover.list` | Browsed connector discovery catalog | `GET /v1/connectors/projects/:projectId/discover/connectors` |
| `connector.discover.section.list` | Browsed discovery catalog categories | `GET /v1/connectors/projects/:projectId/discover/sections` |
| `connector.easy_connect.finalize` | Finished easy-connect authorization | `POST /v1/connectors/projects/:projectId/connectors/:slug/connect/finalize` |
| `connector.easy_connect.section.list` | Browsed easy-connect categories | `GET /v1/connectors/projects/:projectId/connect/sections` |
| `connector.easy_connect.start` | Started easy-connect authorization | `POST /v1/connectors/projects/:projectId/connectors/:slug/connect` |
| `connector.easy_connect.toolkit.list` | Browsed easy-connect apps | `GET /v1/connectors/projects/:projectId/connect/toolkits` |
| `connector.easy_connect_status.read` | Viewed easy-connect status | `GET /v1/connectors/connect-status` |
| `connector.list` | Listed connectors | `GET /v1/connectors/projects/:projectId/connectors` |
| `connector.name.update` | Renamed connector | `PUT /v1/connectors/projects/:projectId/connectors/:slug/name` |
| `connector.oauth2.complete` | Completed connector OAuth authorization | `GET /v1/connectors/oauth2/callback` |
| `connector.pipedream.app.list` | Browsed Pipedream apps | `GET /v1/connectors/projects/:projectId/pipedream/apps` |
| `connector.pipedream.section.list` | Browsed Pipedream categories | `GET /v1/connectors/projects/:projectId/pipedream/sections` |
| `connector.policy.list` | Listed connector policies | `GET /v1/connectors/projects/:projectId/connectors/:slug/policies` |
| `connector.policy.update` | Updated connector policies | `PUT /v1/connectors/projects/:projectId/connectors/:slug/policies` |
| `connector.project_policy.list` | Listed project connector policies | `GET /v1/connectors/projects/:projectId/policies` |
| `connector.project_policy.update` | Updated project connector policies | `PUT /v1/connectors/projects/:projectId/policies` |
| `connector.secret_binding.update` | Updated connector secret binding | `PUT /v1/connectors/projects/:projectId/connectors/:slug/secret-binding` |
| `connector.sensitive.set` | Set connector sensitive flag | `PUT /v1/connectors/projects/:projectId/connectors/:slug/sensitive` |
| `connector.setup_link.create` | Created connector setup link | `POST /v1/projects/:projectId/connect-requests` |
| `connector.setup_link.finalize` | Finished connector setup-link authorization | `POST /v1/setup-links/connectors/:token/finalize` |
| `connector.setup_link.read` | Opened connector setup link | `GET /v1/setup-links/connectors/:token` |
| `connector.setup_link.start` | Started connector setup-link authorization | `POST /v1/setup-links/connectors/:token/start` |
| `connector.sync` | Synchronized connectors | `POST /v1/connectors/projects/:projectId/connectors/sync` |

## `file.`

| Action | Title | Route |
| --- | --- | --- |
| `file.archive.download` | Downloaded project files | `GET /v1/projects/:projectId/files/archive` |
| `file.content.read` | Viewed file content | `GET /v1/projects/:projectId/files/content` |
| `file.history.list` | Viewed file history | `GET /v1/projects/:projectId/files/history` |
| `file.list` | Listed project files | `GET /v1/projects/:projectId/files` |
| `file.search` | Searched project files | `GET /v1/projects/:projectId/files/search` |

## `gateway.`

| Action | Title | Route |
| --- | --- | --- |
| `gateway.breakdown.read` | Viewed LLM gateway usage by model | `GET /v1/projects/:projectId/gateway/breakdown` |
| `gateway.budget.delete` | Deleted LLM gateway budget | `DELETE /v1/projects/:projectId/gateway/budgets/:budgetId` |
| `gateway.budget.list` | Listed LLM gateway budgets | `GET /v1/projects/:projectId/gateway/budgets` |
| `gateway.budget.set` | Set LLM gateway budget | `PUT /v1/projects/:projectId/gateway/budgets` |
| `gateway.error.list` | Listed LLM gateway errors | `GET /v1/projects/:projectId/gateway/errors` |
| `gateway.generation.read` | Viewed LLM generation details | `GET /v1/generation` |
| `gateway.internal.billing.check` | Checked LLM billing eligibility | `POST /internal/gateway/billing` |
| `gateway.internal.budget.check` | Checked LLM gateway budget | `POST /internal/gateway/budget-check` |
| `gateway.internal.model.list` | Resolved LLM gateway model catalog | `POST /internal/gateway/models` |
| `gateway.internal.pool_key.cool_down` | Cooled down pooled provider key | `POST /internal/gateway/pool-rate-limit` |
| `gateway.internal.request.authorize` | Authorized LLM gateway request | `POST /internal/gateway/authorize` |
| `gateway.internal.route.resolve` | Resolved LLM model routing | `POST /internal/gateway/resolve-route` |
| `gateway.internal.token.authenticate` | Authenticated LLM gateway token | `POST /internal/gateway/authenticate` |
| `gateway.internal.trace.record` | Recorded LLM gateway trace | `POST /internal/gateway/trace` |
| `gateway.internal.upstream.resolve` | Resolved LLM upstream provider | `POST /internal/gateway/resolve-upstream` |
| `gateway.internal.usage.record` | Recorded LLM gateway usage | `POST /internal/gateway/usage` |
| `gateway.key.create` | Created LLM gateway key | `POST /v1/projects/:projectId/gateway/keys` |
| `gateway.key.list` | Listed LLM gateway keys | `GET /v1/projects/:projectId/gateway/keys` |
| `gateway.key.revoke` | Revoked LLM gateway key | `DELETE /v1/projects/:projectId/gateway/keys/:keyId` |
| `gateway.log.list` | Listed LLM gateway request logs | `GET /v1/projects/:projectId/gateway/logs` |
| `gateway.log.read` | Viewed LLM gateway request log | `GET /v1/projects/:projectId/gateway/logs/:logId` |
| `gateway.overview.read` | Viewed LLM gateway usage overview | `GET /v1/projects/:projectId/gateway/overview` |
| `gateway.playground.send` | Ran gateway playground request | `POST /v1/projects/:projectId/gateway/playground` |
| `gateway.provider.verify` | Verified LLM provider key | `POST /v1/projects/:projectId/gateway/providers/:providerId/verify` |
| `gateway.request.proxy` | Called LLM gateway | `/v1/llm/*`, any method (also `/v1/llm-gateway/*`, any method) |
| `gateway.routing_policy.delete` | Deleted gateway routing policy | `DELETE /v1/projects/:projectId/gateway/routing-policy` |
| `gateway.routing_policy.preview` | Previewed gateway routing policy | `POST /v1/projects/:projectId/gateway/routing-policy/preview` |
| `gateway.routing_policy.read` | Viewed gateway routing policy | `GET /v1/projects/:projectId/gateway/routing-policy` |
| `gateway.routing_policy.update` | Updated gateway routing policy | `PUT /v1/projects/:projectId/gateway/routing-policy` |
| `gateway.series.read` | Viewed LLM gateway daily usage | `GET /v1/projects/:projectId/gateway/series` |
| `gateway.session_spend.list` | Listed LLM gateway spend by session | `GET /v1/projects/:projectId/gateway/sessions` |

## `git.`

| Action | Title | Route |
| --- | --- | --- |
| `git.backend.read` | Viewed instance Git backend | `GET /v1/projects/git/backend` |
| `git.backend.repository.list` | Listed instance Git backend repositories | `GET /v1/projects/git/backend/repositories` |
| `git.branch.list` | Listed Git branches | `GET /v1/projects/:projectId/branches` |
| `git.clone` | Cloned or fetched Git repository | `POST /v1/git/:project/git-upload-pack` |
| `git.collaborator.invite` | Added Git collaborator | `POST /v1/projects/:projectId/git/collaborators` |
| `git.commit.diff.read` | Viewed Git commit diff | `GET /v1/projects/:projectId/commits/:sha/diff` |
| `git.commit.list` | Listed Git commits | `GET /v1/projects/:projectId/commits` |
| `git.commit.read` | Viewed Git commit | `GET /v1/projects/:projectId/commits/:sha` |
| `git.compiled_checkout.download` | Downloaded compiled project checkout | `GET /v1/git/:project/compiled-checkout` |
| `git.compiled_pi_runtime.download` | Downloaded compiled pi worker runtime | `GET /v1/git/:project/compiled-pi-runtime` |
| `git.compiled_runtime.download` | Downloaded compiled session runtime | `GET /v1/git/:project/compiled-runtime` |
| `git.connection.read` | Viewed Git connection status | `GET /v1/projects/:projectId/git/connection` |
| `git.credential.set` | Set project Git credential | `PUT /v1/projects/:projectId/git-credential` |
| `git.fast_boot_bundle.download` | Downloaded fast-boot Git bundle | `GET /v1/git/:project/fast-boot-bundle` |
| `git.github.installation.connect` | Connected GitHub installation | `POST /v1/projects/github/installation` |
| `git.github.installation.disconnect` | Disconnected GitHub installation | `DELETE /v1/projects/github/installations/:installationId` (also `DELETE /v1/projects/github/installation`) |
| `git.github.installation.link` | Linked existing GitHub installation | `POST /v1/projects/github/installations/link` |
| `git.github.installation.linkable.list` | Listed linkable GitHub installations | `POST /v1/projects/github/installations/linkable` |
| `git.github.installation.list` | Listed GitHub installations | `GET /v1/projects/github/installations` (also `GET /v1/projects/github/installation`) |
| `git.github.repository.branch.list` | Listed GitHub repository branches | `GET /v1/projects/github/repository-branches` |
| `git.github.repository.list` | Listed GitHub repositories | `GET /v1/projects/github/repositories` |
| `git.managed_status.read` | Viewed managed Git status | `GET /v1/projects/managed-git/status` |
| `git.project_snapshot.download` | Requested project snapshot download | `GET /v1/git/:project/project-snapshot` |
| `git.push` | Pushed to Git repository | `POST /v1/git/:project/git-receive-pack` |
| `git.push_token.create` | Created Git push token | `POST /v1/projects/:projectId/git-token` |
| `git.ref.list` | Listed Git repository refs | `GET /v1/git/:project/info/refs` |
| `git.repository.replace` | Replaced project Git repository | `PUT /v1/projects/:projectId/git/repository` |
| `git.version_diff.read` | Viewed version diff | `GET /v1/projects/:projectId/version-diff` |

## `iam.`

| Action | Title | Route |
| --- | --- | --- |
| `iam.action.list` | Listed IAM actions | `GET /v1/accounts/:accountId/iam/actions` |
| `iam.agent_identity.list` | Listed agent identities | `GET /v1/accounts/:accountId/iam/agent-identities` |
| `iam.assignment.grant` or `iam.assignment.granted` | Granted a role | `POST /v1/accounts/:accountId/iam/assignments` |
| `iam.assignment.list` | Listed role assignments | `GET /v1/accounts/:accountId/iam/assignments` |
| `iam.assignment.revoke` or `iam.assignment.revoked` | Revoked a role assignment | `DELETE /v1/accounts/:accountId/iam/assignments/:assignmentId` |
| `iam.audit.export` | Exported audit log | `GET /v1/accounts/:accountId/audit/export` |
| `iam.audit.list` | Viewed audit log | `GET /v1/accounts/:accountId/audit` |
| `iam.audit.reconcile` | Reconciled audit log | `POST /v1/accounts/:accountId/audit/reconcile` |
| `iam.audit.webhook.create` | Created audit webhook | `POST /v1/accounts/:accountId/audit/webhooks` |
| `iam.audit.webhook.delete` | Deleted audit webhook | `DELETE /v1/accounts/:accountId/audit/webhooks/:webhookId` |
| `iam.audit.webhook.delivery.list` | Listed audit webhook deliveries | `GET /v1/accounts/:accountId/audit/webhooks/:webhookId/deliveries` |
| `iam.audit.webhook.delivery.replay` | Replayed audit webhook delivery | `POST /v1/accounts/:accountId/audit/webhooks/:webhookId/deliveries/:deliveryId/replay` |
| `iam.audit.webhook.list` | Listed audit webhooks | `GET /v1/accounts/:accountId/audit/webhooks` |
| `iam.audit.webhook.update` | Updated audit webhook | `PATCH /v1/accounts/:accountId/audit/webhooks/:webhookId` |
| `iam.enterprise_demo.read` | Viewed Enterprise preview | `GET /v1/accounts/:accountId/iam/enterprise-demo` |
| `iam.enterprise_demo.set` or `enterprise_demo.enable` or `enterprise_demo.disable` or `enterprise_demo.set` | Updated Enterprise preview | `PUT /v1/accounts/:accountId/iam/enterprise-demo` |
| `iam.group.create` | Created group | `POST /v1/accounts/:accountId/iam/groups` |
| `iam.group.delete` | Deleted group | `DELETE /v1/accounts/:accountId/iam/groups/:groupId` |
| `iam.group.list` | Listed groups | `GET /v1/accounts/:accountId/iam/groups` |
| `iam.group.members.add` | Added member to group | `POST /v1/accounts/:accountId/iam/groups/:groupId/members` |
| `iam.group.members.list` | Listed group members | `GET /v1/accounts/:accountId/iam/groups/:groupId/members` |
| `iam.group.members.remove` | Removed member from group | `DELETE /v1/accounts/:accountId/iam/groups/:groupId/members/:userId` |
| `iam.group.project_grants.list` | Listed group project access | `GET /v1/accounts/:accountId/iam/groups/:groupId/project-grants` |
| `iam.group.read` | Viewed group | `GET /v1/accounts/:accountId/iam/groups/:groupId` |
| `iam.group.update` | Updated group | `PATCH /v1/accounts/:accountId/iam/groups/:groupId` |
| `iam.member.effective_permission.batch_check` | Batch-checked effective permissions | `POST /v1/accounts/:accountId/iam/members/:userId/effective:batch` |
| `iam.member.effective_permission.check` | Checked effective permission | `GET /v1/accounts/:accountId/iam/members/:userId/effective` |
| `iam.member.groups.list` | Listed member groups | `GET /v1/accounts/:accountId/iam/members/:userId/groups` |
| `iam.member.project_access.list` | Listed member project access | `GET /v1/accounts/:accountId/iam/members/:userId/project-access` |
| `iam.member.super_admin.set` | Set super-admin status | `PATCH /v1/accounts/:accountId/iam/members/:userId/super-admin` |
| `iam.mfa_required.preview` | Previewed MFA enforcement | `GET /v1/accounts/:accountId/iam/mfa-required/preview` |
| `iam.mfa_required.read` | Viewed MFA requirement | `GET /v1/accounts/:accountId/iam/mfa-required` |
| `iam.mfa_required.set` or `iam.mfa_required.enable` or `iam.mfa_required.disable` | Changed MFA requirement | `PATCH /v1/accounts/:accountId/iam/mfa-required` |
| `iam.oauth_client.create` | Registered an OAuth app | `POST /v1/accounts/:accountId/iam/oauth-clients` |
| `iam.oauth_client.delete` | Deleted an OAuth app | `DELETE /v1/accounts/:accountId/iam/oauth-clients/:clientId` |
| `iam.oauth_client.list` | Listed OAuth apps | `GET /v1/accounts/:accountId/iam/oauth-clients` |
| `iam.oauth_client.read` | Viewed an OAuth app | `GET /v1/accounts/:accountId/iam/oauth-clients/:clientId` |
| `iam.oauth_client.rotate_secret` | Rotated an OAuth app secret | `POST /v1/accounts/:accountId/iam/oauth-clients/:clientId/rotate-secret` |
| `iam.oauth_client.update` | Updated an OAuth app | `PATCH /v1/accounts/:accountId/iam/oauth-clients/:clientId` |
| `iam.pat_policy.read` | Viewed PAT policy | `GET /v1/accounts/:accountId/iam/pat-policy` |
| `iam.pat_policy.update` | Updated PAT policy | `PATCH /v1/accounts/:accountId/iam/pat-policy` |
| `iam.permission.list` | Listed the permission catalog | `GET /v1/accounts/:accountId/iam/permissions` |
| `iam.policy.bulk_delete` | Bulk deleted IAM policies | `POST /v1/accounts/:accountId/iam/policies:bulk-delete` |
| `iam.policy.bulk_import` | Bulk imported IAM policies | `POST /v1/accounts/:accountId/iam/policies:bulk-import` |
| `iam.policy.create` | Created IAM policy | `POST /v1/accounts/:accountId/iam/policies` |
| `iam.policy.delete` | Deleted IAM policy | `DELETE /v1/accounts/:accountId/iam/policies/:policyId` |
| `iam.policy.list` | Listed IAM policies | `GET /v1/accounts/:accountId/iam/policies` |
| `iam.policy.update` | Updated IAM policy | `PATCH /v1/accounts/:accountId/iam/policies/:policyId` |
| `iam.resource_grant.list` | Listed resource grants | `GET /v1/accounts/:accountId/iam/resource-grants` |
| `iam.role.create` | Created IAM role | `POST /v1/accounts/:accountId/iam/roles` |
| `iam.role.delete` | Deleted IAM role | `DELETE /v1/accounts/:accountId/iam/roles/:roleId` |
| `iam.role.list` | Listed IAM roles | `GET /v1/accounts/:accountId/iam/roles` |
| `iam.role.permissions.read` | Viewed IAM role permissions | `GET /v1/accounts/:accountId/iam/roles/:roleId/permissions` |
| `iam.role.permissions.set` | Updated IAM role permissions | `PUT /v1/accounts/:accountId/iam/roles/:roleId/permissions` |
| `iam.role.update` | Updated IAM role | `PATCH /v1/accounts/:accountId/iam/roles/:roleId` |
| `iam.role.usage.read` | Viewed IAM role usage | `GET /v1/accounts/:accountId/iam/roles/:roleId/usage` |
| `iam.scim.token.create` | Created SCIM token | `POST /v1/accounts/:accountId/iam/scim/tokens` |
| `iam.scim.token.list` | Listed SCIM tokens | `GET /v1/accounts/:accountId/iam/scim/tokens` |
| `iam.scim.token.revoke` | Revoked SCIM token | `DELETE /v1/accounts/:accountId/iam/scim/tokens/:tokenId` |
| `iam.service_account.create` | Created service account | `POST /v1/accounts/:accountId/iam/service-accounts` |
| `iam.service_account.delete` | Deleted service account | `DELETE /v1/accounts/:accountId/iam/service-accounts/:saId` |
| `iam.service_account.disable` | Disabled service account | `POST /v1/accounts/:accountId/iam/service-accounts/:saId/disable` |
| `iam.service_account.list` | Listed service accounts | `GET /v1/accounts/:accountId/iam/service-accounts` |
| `iam.session.list` | Listed sign-in sessions | `GET /v1/accounts/:accountId/iam/sessions` |
| `iam.session.revoke` | Revoked sign-in session | `POST /v1/accounts/:accountId/iam/sessions/:sessionId/revoke` |
| `iam.session_oversight.read` | Viewed admin session access | `GET /v1/accounts/:accountId/iam/session-oversight` |
| `iam.session_oversight.set` or `iam.session_oversight.enable` or `iam.session_oversight.disable` | Changed admin session access | `PATCH /v1/accounts/:accountId/iam/session-oversight` |
| `iam.session_policy.read` | Viewed session policy | `GET /v1/accounts/:accountId/iam/session-policy` |
| `iam.session_policy.update` | Updated session policy | `PATCH /v1/accounts/:accountId/iam/session-policy` |
| `iam.sso.mapping.create` | Added SSO group mapping | `POST /v1/accounts/:accountId/iam/sso/mappings` |
| `iam.sso.mapping.delete` | Removed SSO group mapping | `DELETE /v1/accounts/:accountId/iam/sso/mappings/:mappingId` |
| `iam.sso.mapping.list` | Listed SSO group mappings | `GET /v1/accounts/:accountId/iam/sso/mappings` |
| `iam.sso.provider.create` | Created SSO provider | `POST /v1/accounts/:accountId/iam/sso/provider/from-metadata` |
| `iam.sso.provider.delete` | Removed SSO provider | `DELETE /v1/accounts/:accountId/iam/sso/provider` |
| `iam.sso.provider.read` | Viewed SSO provider | `GET /v1/accounts/:accountId/iam/sso/provider` |
| `iam.sso.provider.update` | Updated SSO provider | `PUT /v1/accounts/:accountId/iam/sso/provider` |

## `invite.`

| Action | Title | Route |
| --- | --- | --- |
| `invite.accept` | Accepted account invitation | `POST /v1/account-invites/:inviteId/accept` |
| `invite.cancel` | Canceled account invitation | `DELETE /v1/accounts/:accountId/invites/:inviteId` |
| `invite.decline` | Declined account invitation | `POST /v1/account-invites/:inviteId/decline` |
| `invite.list` | Listed pending invitations | `GET /v1/accounts/:accountId/invites` |
| `invite.read` | Viewed account invitation | `GET /v1/account-invites/:inviteId` |
| `invite.received.list` | Listed received invitations | `GET /v1/account-invites` |
| `invite.resend` | Resent account invitation | `POST /v1/accounts/:accountId/invites/:inviteId/resend` |

## `marketplace.`

| Action | Title | Route |
| --- | --- | --- |
| `marketplace.featured.list` | Listed featured marketplaces | `GET /v1/marketplace/marketplaces/featured` |
| `marketplace.install.start` | Started marketplace install | `POST /v1/projects/:projectId/marketplace/install-session` |
| `marketplace.item.file.read` | Viewed marketplace item file | `GET /v1/marketplace/items/:id/file` |
| `marketplace.item.list` | Listed marketplace items | `GET /v1/marketplace/items` |
| `marketplace.item.read` | Viewed marketplace item | `GET /v1/marketplace/items/:id` |
| `marketplace.list` | Listed marketplaces | `GET /v1/marketplace/marketplaces` |
| `marketplace.source.create` | Added marketplace source | `POST /v1/marketplace/sources` |
| `marketplace.source.delete` | Removed marketplace source | `DELETE /v1/marketplace/sources/:id` |
| `marketplace.source.list` | Listed marketplace sources | `GET /v1/marketplace/sources` |

## `member.`

| Action | Title | Route |
| --- | --- | --- |
| `member.invite` | Invited member to account | `POST /v1/accounts/:accountId/members` |
| `member.leave` | Left account | `POST /v1/accounts/:accountId/leave` |
| `member.list` | Listed account members | `GET /v1/accounts/:accountId/members` |
| `member.remove` | Removed member from account | `DELETE /v1/accounts/:accountId/members/:userId` |
| `member.role.update` | Changed member role | `PATCH /v1/accounts/:accountId/members/:userId` |

## `model.`

| Action | Title | Route |
| --- | --- | --- |
| `model.access.read` | Viewed model access | `GET /v1/projects/:projectId/model-access` |
| `model.access.update` | Updated model access | `PUT /v1/projects/:projectId/model-access` |
| `model.catalog.provider.list` | Listed LLM catalog providers | `GET /v1/projects/:projectId/llm-catalog/providers` |
| `model.catalog.read` | Viewed LLM catalog | `GET /v1/projects/:projectId/llm-catalog` |
| `model.default.delete` | Deleted model defaults | `DELETE /v1/projects/:projectId/model-defaults` |
| `model.default.read` | Viewed model defaults | `GET /v1/projects/:projectId/model-defaults` |
| `model.default.update` | Updated model defaults | `PUT /v1/projects/:projectId/model-defaults` |
| `model.enablement.update` | Updated model picker visibility | `PUT /v1/projects/:projectId/model-enablement` |
| `model.picker.read` | Viewed model picker | `GET /v1/projects/:projectId/model-picker` |

## `oauth.`

| Action | Title | Route |
| --- | --- | --- |
| `oauth.authorization.start` | Started OAuth authorization | `GET /v1/oauth/authorize` |
| `oauth.consent.answer` | Submitted OAuth consent | `POST /v1/oauth/authorize/consent` |
| `oauth.consent_request.read` | Viewed OAuth consent request | `GET /v1/oauth/authorize/consent/:requestId` |
| `oauth.server_metadata.read` | Read OAuth server metadata | `GET /.well-known/oauth-authorization-server` (also `GET /v1/oauth/.well-known/oauth-authorization-server`) |
| `oauth.token.create` | Issued an OAuth token | `POST /v1/oauth/token` |
| `oauth.token.revoke` | Revoked an OAuth token | `POST /v1/oauth/revoke` |
| `oauth.userinfo.read` | Viewed OAuth user information | `GET /v1/oauth/userinfo` |

## `platform.`

| Action | Title | Route |
| --- | --- | --- |
| `platform.github_app.connect` | Connected existing GitHub App | `POST /v1/platform/github-app/app` |
| `platform.github_app.create` | Created GitHub App from manifest | `GET /v1/platform/github-app/manifest-callback` |
| `platform.github_app.disconnect` | Disconnected instance GitHub integration | `DELETE /v1/platform/github-app` |
| `platform.github_app.installation.complete` | Completed GitHub App installation | `GET /v1/platform/github-app/install-callback` |
| `platform.github_app.manifest.start` | Started GitHub App setup | `POST /v1/platform/github-app/manifest-start` |
| `platform.github_app.oauth.authorize` | Started GitHub identity verification | `GET /v1/platform/github-app/oauth/authorize` |
| `platform.github_app.oauth.complete` | Completed GitHub identity verification | `GET /v1/platform/github-app/oauth/callback` |
| `platform.github_app.status.read` | Viewed instance GitHub status | `GET /v1/platform/github-app/status` |
| `platform.github_pat.connect` | Connected managed git via GitHub PAT | `POST /v1/platform/github-app/pat` |
| `platform.info.read` | Viewed platform service info | `GET /v1/platform` |
| `platform.sandbox_version.changelog.read` | Viewed sandbox changelog | `GET /v1/platform/sandbox/version/changelog` |
| `platform.sandbox_version.latest.read` | Viewed latest sandbox version | `GET /v1/platform/sandbox/version/latest` |
| `platform.sandbox_version.list` | Listed sandbox versions | `GET /v1/platform/sandbox/version/all` |
| `platform.sandbox_version.read` | Viewed running sandbox version | `GET /v1/platform/sandbox/version` |

## `project.`

| Action | Title | Route |
| --- | --- | --- |
| `project.access_request.approve` | Approved project access request | `POST /v1/projects/:projectId/access-requests/:requestId/approve` |
| `project.access_request.create` | Requested project access | `POST /v1/projects/:projectId/access-requests` |
| `project.access_request.list` | Listed project access requests | `GET /v1/projects/:projectId/access-requests` |
| `project.access_request.reject` | Rejected project access request | `POST /v1/projects/:projectId/access-requests/:requestId/reject` |
| `project.cli_token.create` | Created project CLI token | `POST /v1/projects/:projectId/cli-token` |
| `project.cli_token.list` | Listed project CLI tokens | `GET /v1/projects/:projectId/cli-token` |
| `project.cli_token.revoke` | Revoked project CLI token | `DELETE /v1/projects/:projectId/cli-token/:tokenId` |
| `project.create` | Created project | `POST /v1/projects` |
| `project.default_agent.update` | Updated default agent | `PUT /v1/projects/:projectId/default-agent` |
| `project.delete` | Deleted project | `DELETE /v1/projects/:projectId` |
| `project.detail.read` | Viewed project details | `GET /v1/projects/:projectId/detail` |
| `project.feature_flag.update` | Updated project feature flag | `PATCH /v1/projects/:projectId/features` (also `PATCH /v1/projects/:projectId/experimental`) |
| `project.group_grant.create` | Attached group to project | `POST /v1/projects/:projectId/group-grants` |
| `project.group_grant.delete` | Detached group from project | `DELETE /v1/projects/:projectId/group-grants/:groupId` |
| `project.group_grant.list` | Viewed project group grants | `GET /v1/projects/:projectId/group-grants` |
| `project.group_grant.update` | Changed group role on project | `PATCH /v1/projects/:projectId/group-grants/:groupId` |
| `project.invite.list` | Listed pending project invites | `GET /v1/projects/:projectId/access/pending-invites` |
| `project.invite.resend` | Resent pending project invitation | `POST /v1/projects/:projectId/access/pending-invites/:inviteId/resend` |
| `project.invite.revoke` | Revoked pending project invitation | `DELETE /v1/projects/:projectId/access/pending-invites/:inviteId` |
| `project.list` | Listed projects | `GET /v1/projects` |
| `project.manifest.validate` | Validated project manifest | `POST /v1/projects/:projectId/manifest/validate` |
| `project.member.delete` | Removed project member | `DELETE /v1/projects/:projectId/access/:userId` |
| `project.member.invite` | Invited project member | `POST /v1/projects/:projectId/access/invite` |
| `project.member.list` | Viewed project member access | `GET /v1/projects/:projectId/access` |
| `project.member.update` | Changed project member role | `PUT /v1/projects/:projectId/access/:userId` |
| `project.monitor.event.ingest` | Ingested monitor events | `POST /v1/projects/:projectId/monitors/ingest` |
| `project.onboarding.update` | Updated project onboarding | `PATCH /v1/projects/:projectId/onboarding` |
| `project.provision` | Provisioned project | `POST /v1/projects/provision` (also `POST /v1/projects/provision-stream`) |
| `project.read` | Viewed project | `GET /v1/projects/:projectId` |
| `project.repository.create` | Created project with new GitHub repository | `POST /v1/projects/create-repo` |
| `project.repository.link` | Linked repository as project | `POST /v1/projects/link-repository` |
| `project.resource_grant.create` | Granted resource access | `POST /v1/projects/:projectId/resource-grants` |
| `project.resource_grant.list` | Viewed resource access grants | `GET /v1/projects/:projectId/resource-grants` |
| `project.resource_grant.revoke` | Revoked resource access | `DELETE /v1/projects/:projectId/resource-grants/:grantId` |
| `project.sandbox_provider.transition.read` | Viewed sandbox provider transition | `GET /v1/projects/:projectId/sandbox-provider/transition` |
| `project.sandbox_provider.update` | Updated sandbox provider | `PATCH /v1/projects/:projectId/sandbox-provider` |
| `project.suna_migration.eligibility.read` | Viewed project migration eligibility | `GET /v1/projects/suna-migration/eligibility` |
| `project.suna_migration.read` | Viewed project migration status | `GET /v1/projects/suna-migration/status` |
| `project.suna_migration.start` | Started project migration | `POST /v1/projects/suna-migration/start` |
| `project.update` | Updated project | `PATCH /v1/projects/:projectId` |

## `review.`

| Action | Title | Route |
| --- | --- | --- |
| `review.item.bulk_resolve` | Resolved review items in bulk | `POST /v1/projects/:projectId/review/bulk` |
| `review.item.create` | Submitted review item | `POST /v1/projects/:projectId/review/items` |
| `review.item.list` | Listed review items | `GET /v1/projects/:projectId/review/items` |
| `review.item.read` | Viewed review item | `GET /v1/projects/:projectId/review/items/:reviewItemId` |
| `review.item.resolve` | Resolved review item | `POST /v1/projects/:projectId/review/items/:reviewItemId/act` |

## `router.`

| Action | Title | Route |
| --- | --- | --- |
| `router.chat_completion.create` | Generated chat completion | `POST /v1/router/chat/completions` |
| `router.context7.proxy` | Called Context7 through router | `/v1/router/context7/*`, any method (also `/v1/router/context7`, any method) |
| `router.firecrawl.proxy` | Called Firecrawl through router | `/v1/router/firecrawl/*`, any method (also `/v1/router/firecrawl`, any method) |
| `router.gemini.proxy` | Called Gemini through router | `/v1/router/gemini/*`, any method (also `/v1/router/gemini`, any method) |
| `router.groq.proxy` | Called Groq through router | `/v1/router/groq/*`, any method (also `/v1/router/groq`, any method) |
| `router.health.check` | Checked router health | `GET /v1/router/health` |
| `router.image.search` | Searched images | `POST /v1/router/image-search` |
| `router.model.list` | Listed router models | `GET /v1/router/models` |
| `router.model.read` | Viewed router model | `GET /v1/router/models/:model` |
| `router.openai.proxy` | Called OpenAI through router | `/v1/router/openai/*`, any method (also `/v1/router/openai`, any method) |
| `router.serper.proxy` | Called Serper through router | `/v1/router/serper/*`, any method (also `/v1/router/serper`, any method) |
| `router.tavily.proxy` | Called Tavily through router | `/v1/router/tavily/*`, any method (also `/v1/router/tavily`, any method) |
| `router.web.search` | Searched the web | `POST /v1/router/web-search` |
| `router.xai.proxy` | Called xAI through router | `/v1/router/xai/*`, any method (also `/v1/router/xai`, any method) |

## `runtime.`

| Action | Title | Route |
| --- | --- | --- |
| `runtime.agent.check` | Checked the sandbox agent | `HEAD /v1/runtime-assets/agent` |
| `runtime.agent.download` | Downloaded the sandbox agent | `GET /v1/runtime-assets/agent` |
| `runtime.cli.check` | Checked the sandbox CLI | `HEAD /v1/runtime-assets/cli` |
| `runtime.cli.download` | Downloaded the sandbox CLI | `GET /v1/runtime-assets/cli` |
| `runtime.entrypoint.check` | Checked the sandbox entrypoint | `HEAD /v1/runtime-assets/entrypoint` |
| `runtime.entrypoint.download` | Downloaded the sandbox entrypoint | `GET /v1/runtime-assets/entrypoint` |
| `runtime.managed_skills.download` | Downloaded managed skills | `GET /v1/runtime-assets/managed-skills` |
| `runtime.manifest.read` | Checked sandbox runtime-asset versions | `GET /v1/runtime-assets/manifest` |
| `runtime.projection.sync` | Synced session runtime projection | `POST /v1/platform/runtime-projection` |
| `runtime.prompt_attachment.read` | Resolved runtime attachment descriptor | `GET /v1/projects/:projectId/runtime/prompt-attachments/:attachmentId` |

## `sandbox.`

| Action | Title | Route |
| --- | --- | --- |
| `sandbox.boot_timeline.create` | Recorded sandbox boot timeline | `POST /v1/platform/boot-timeline` |
| `sandbox.health.read` | Viewed sandbox health | `GET /v1/projects/:projectId/sandbox-health` |
| `sandbox.port.proxy` | Accessed sandbox port | `/v1/p/:sandboxId/:port/*`, any method (also `/v1/p/:sandboxId/:port`, any method) |
| `sandbox.port.websocket.connect` | Opened sandbox port WebSocket | before the API router |
| `sandbox.port_share.create` | Created sandbox port share link | `POST /v1/p/share` |
| `sandbox.port_share.list` | Listed sandbox port share links | `GET /v1/p/share` |
| `sandbox.port_share.revoke` | Revoked sandbox port share link | `DELETE /v1/p/share/:token` |
| `sandbox.preview.access` | Opened sandbox preview | before the API router |
| `sandbox.preview.authenticate` | Authenticated to sandbox previews | `POST /v1/p/auth` |
| `sandbox.preview.config.read` | Viewed sandbox preview URL template | `GET /v1/p/config` |
| `sandbox.preview.cors.check` | Checked sandbox preview CORS access | `OPTIONS /v1/p/auth` |
| `sandbox.preview.websocket.connect` | Opened sandbox preview WebSocket | before the API router |
| `sandbox.public_share.file.read` | Viewed shared session file | `/v1/p/public-share/:token/file/*`, any method (also `/v1/p/public-share/:token/file`, any method) |
| `sandbox.public_share.preview.proxy` | Accessed shared sandbox preview | `/v1/p/public-share/:token/:port/*`, any method (also `/v1/p/public-share/:token/:port`, any method) |
| `sandbox.public_share.read` | Viewed public share link | `GET /v1/p/public-share/:token` |
| `sandbox.template.build` | Started sandbox template build | `POST /v1/projects/:projectId/sandbox-templates/:templateId/build` |
| `sandbox.template.create` | Created sandbox template | `POST /v1/projects/:projectId/sandbox-templates` |
| `sandbox.template.delete` | Deleted sandbox template | `DELETE /v1/projects/:projectId/sandbox-templates/:templateId` |
| `sandbox.template.list` | Listed sandbox templates | `GET /v1/projects/:projectId/sandbox-templates` (also `GET /v1/projects/:projectId/sandboxes`) |
| `sandbox.template.update` | Updated sandbox template | `PATCH /v1/projects/:projectId/sandbox-templates/:templateId` |

## `scim.`

| Action | Title | Route |
| --- | --- | --- |
| `scim.group.create` | Provisioned SCIM group | `POST /scim/v2/accounts/:accountId/Groups` |
| `scim.group.delete` | Deleted SCIM group | `DELETE /scim/v2/accounts/:accountId/Groups/:groupId` |
| `scim.group.list` | Listed SCIM groups | `GET /scim/v2/accounts/:accountId/Groups` |
| `scim.group.read` | Viewed SCIM group | `GET /scim/v2/accounts/:accountId/Groups/:groupId` |
| `scim.group.update` | Updated SCIM group | `PATCH /scim/v2/accounts/:accountId/Groups/:groupId` (also `PUT /scim/v2/accounts/:accountId/Groups/:groupId`) |
| `scim.resource_type.list` | Listed SCIM resource types | `GET /scim/v2/accounts/:accountId/ResourceTypes` |
| `scim.resource_type.read` | Viewed SCIM resource type | `GET /scim/v2/accounts/:accountId/ResourceTypes/:id` |
| `scim.schema.list` | Listed SCIM schemas | `GET /scim/v2/accounts/:accountId/Schemas` |
| `scim.schema.read` | Viewed SCIM schema | `GET /scim/v2/accounts/:accountId/Schemas/:id` |
| `scim.service_provider_config.read` | Viewed SCIM service provider config | `GET /scim/v2/accounts/:accountId/ServiceProviderConfig` |
| `scim.user.create` | Provisioned SCIM user | `POST /scim/v2/accounts/:accountId/Users` |
| `scim.user.delete` | Deprovisioned SCIM user | `DELETE /scim/v2/accounts/:accountId/Users/:userId` |
| `scim.user.list` | Listed SCIM users | `GET /scim/v2/accounts/:accountId/Users` |
| `scim.user.read` | Viewed SCIM user | `GET /scim/v2/accounts/:accountId/Users/:userId` |
| `scim.user.update` | Updated SCIM user | `PATCH /scim/v2/accounts/:accountId/Users/:userId` (also `PUT /scim/v2/accounts/:accountId/Users/:userId`) |

## `secret.`

| Action | Title | Route |
| --- | --- | --- |
| `secret.account_resource.access.set` | Set pooled provider key access | `PUT /v1/accounts/:accountId/secret-resources/:secretId/access` |
| `secret.account_resource.create` | Added pooled provider key | `POST /v1/accounts/:accountId/secret-resources` |
| `secret.account_resource.delete` | Deleted pooled provider key | `DELETE /v1/accounts/:accountId/secret-resources/:secretId` |
| `secret.account_resource.grant` | Granted pooled provider key | `PUT /v1/accounts/:accountId/secret-resources/:secretId/grants/:userId` |
| `secret.account_resource.list` | Listed pooled provider keys | `GET /v1/accounts/:accountId/secret-resources` |
| `secret.account_resource.revoke` | Revoked pooled provider key grant | `DELETE /v1/accounts/:accountId/secret-resources/:secretId/grants/:userId` |
| `secret.account_resource.rotate` | Rotated pooled provider key | `PUT /v1/accounts/:accountId/secret-resources/:secretId/value` |
| `secret.agent.grant` | Granted secret to an agent | `POST /v1/projects/:projectId/secrets/:identifier/grant` |
| `secret.broker.proxy` | Sent request via secret broker | `POST /v1/projects/:projectId/secrets/:identifier/broker` |
| `secret.delete` or `secret.deleted` | Removed shared secret | `DELETE /v1/projects/:projectId/secrets/:name` |
| `secret.list` | Listed project secrets | `GET /v1/projects/:projectId/secrets` |
| `secret.oauth.check` or `secret.oauth.connected` | Checked model provider OAuth login | `POST /v1/projects/:projectId/oauth/:provider/poll` |
| `secret.oauth.disconnect` or `secret.oauth.disconnected` | Disconnected model provider OAuth login | `DELETE /v1/projects/:projectId/oauth/:provider` |
| `secret.oauth.list` | Listed model provider OAuth logins | `GET /v1/projects/:projectId/oauth` |
| `secret.oauth.start` | Started model provider OAuth login | `POST /v1/projects/:projectId/oauth/:provider/start` |
| `secret.personal.delete` | Removed personal secret | `DELETE /v1/projects/:projectId/secrets/:name/personal` |
| `secret.personal.set` | Set personal secret | `PUT /v1/projects/:projectId/secrets/:name/personal` |
| `secret.relay.stream` | Streamed request via secret relay | `POST /v1/projects/:projectId/secrets/:identifier/relay` |
| `secret.request.create` | Created secret request | `POST /v1/projects/:projectId/secret-requests` |
| `secret.set` or `secret.created` or `secret.updated` | Set project secret | `POST /v1/projects/:projectId/secrets` |
| `secret.setup_link.read` | Opened secret setup link | `GET /v1/setup-links/secret/:token` |
| `secret.setup_link.set` | Saved secrets via setup link | `POST /v1/setup-links/secret/:token` |
| `secret.strategy.update` or `secret.strategy.changed` | Updated secret delivery strategy | `PUT /v1/projects/:projectId/secrets/:identifier/strategy` |
| `secret.sync` | Synced secrets to active sandboxes | `POST /v1/projects/:projectId/secrets/sync` |

## `session.`

| Action | Title | Route |
| --- | --- | --- |
| `session.agent_config.check` | Checked session agent config freshness | `GET /v1/projects/:projectId/sessions/:sessionId/config` |
| `session.agent_config.reload` | Reloaded session agent config | `POST /v1/projects/:projectId/sessions/:sessionId/reload` (also `POST /v1/projects/:projectId/sessions/:sessionId/reload-stream`) |
| `session.attachment.download` | Downloaded session attachment | `GET /v1/projects/:projectId/sessions/:sessionId/attachments/:attachmentId` |
| `session.attachment.upload` | Uploaded session attachment | `POST /v1/projects/:projectId/sessions/:sessionId/attachments` |
| `session.create` | Created session | `POST /v1/projects/:projectId/sessions` |
| `session.delete` | Deleted session | `DELETE /v1/projects/:projectId/sessions/:sessionId` |
| `session.environment.read` | Viewed session environment | `GET /v1/projects/:projectId/sessions/:sessionId/environment` |
| `session.environment.start` | Started session environment | `POST /v1/projects/:projectId/sessions/:sessionId/environment/ensure` |
| `session.environment.stop` | Stopped session environment | `POST /v1/projects/:projectId/sessions/:sessionId/environment/stop` |
| `session.event.stream` | Streamed session events | `GET /v1/projects/:projectId/sessions/:sessionId/events` |
| `session.git.push` | Committed and pushed session changes | `POST /v1/projects/:projectId/sessions/:sessionId/commit-push` |
| `session.list` | Listed project sessions | `GET /v1/projects/:projectId/sessions` |
| `session.model.update` | Changed session model | `PUT /v1/projects/:projectId/sessions/:sessionId/model` |
| `session.preview.list` | Listed session preview candidates | `GET /v1/projects/:projectId/sessions/:sessionId/previews` |
| `session.prompt.delete` | Removed a queued session prompt | `DELETE /v1/projects/:projectId/sessions/:sessionId/prompts/:promptId` |
| `session.prompt.hold.set` | Set session prompt queue hold | `POST /v1/projects/:projectId/sessions/:sessionId/prompts/hold` |
| `session.prompt.list` | Viewed queued session prompts | `GET /v1/projects/:projectId/sessions/:sessionId/prompts` |
| `session.prompt.retry` | Retried a queued session prompt | `POST /v1/projects/:projectId/sessions/:sessionId/prompts/:promptId/retry` |
| `session.prompt.send` | Queued a session prompt | `POST /v1/projects/:projectId/sessions/:sessionId/prompts` |
| `session.prompt_attachment.chunk.upload` | Uploaded attachment chunk | `PUT /v1/projects/:projectId/attachments/:attachmentId/chunks/:index` |
| `session.prompt_attachment.complete` | Completed attachment upload | `POST /v1/projects/:projectId/attachments/:attachmentId/complete` |
| `session.prompt_attachment.create` | Started attachment upload | `POST /v1/projects/:projectId/attachments` |
| `session.prompt_attachment.delete` | Removed attachment upload | `DELETE /v1/projects/:projectId/attachments/:attachmentId` |
| `session.provider_secret_pool.list` | Listed session provider secret pools | `GET /v1/projects/:projectId/sessions/:sessionId/provider-secret-pools` |
| `session.provider_secret_pool.read` | Viewed session provider secret pool | `GET /v1/projects/:projectId/sessions/:sessionId/provider-secret-pools/:providerId` |
| `session.provider_secret_pool.update` | Updated session provider secret pool | `PUT /v1/projects/:projectId/sessions/:sessionId/provider-secret-pools/:providerId` |
| `session.public_share.create` | Created public share link | `POST /v1/projects/:projectId/sessions/:sessionId/public-shares` |
| `session.public_share.list` | Listed public share links | `GET /v1/projects/:projectId/sessions/:sessionId/public-shares` |
| `session.public_share.message.list` | Listed publicly shared session messages | `GET /v1/public/session-shares/:shareId/messages` |
| `session.public_share.metadata.read` | Viewed publicly shared session | `GET /v1/public/session-shares/:shareId` |
| `session.public_share.revoke` | Revoked public share link | `DELETE /v1/projects/:projectId/sessions/:sessionId/public-shares/:shareId` |
| `session.question.answer` | Answered session question | `POST /v1/projects/:projectId/sessions/:sessionId/question` |
| `session.question.create` | Submitted session question | `POST /v1/projects/:projectId/turn-question` |
| `session.question.read` | Viewed open session question | `GET /v1/projects/:projectId/sessions/:sessionId/question` |
| `session.read` | Viewed session | `GET /v1/projects/:projectId/sessions/:sessionId` |
| `session.restart` | Restarted session | `POST /v1/projects/:projectId/sessions/:sessionId/restart` |
| `session.scope.read` | Viewed session scope | `GET /v1/projects/:projectId/sessions/:sessionId/scope` |
| `session.scope.update` | Updated session scope | `PUT /v1/projects/:projectId/sessions/:sessionId/scope` |
| `session.sharing.update` | Updated session sharing | `PUT /v1/projects/:projectId/sessions/:sessionId/sharing` |
| `session.snapshot.read` | Opened session | `GET /v1/projects/:projectId/sessions/:sessionId/snapshot` (also `GET /v1/projects/:projectId/sessions/:sessionId/open-bundle`) |
| `session.start` | Started session | `POST /v1/projects/:projectId/sessions/:sessionId/start` |
| `session.stop` | Stopped session | `POST /v1/projects/:projectId/sessions/:sessionId/stop` |
| `session.transcript.read` | Viewed session transcript | `GET /v1/projects/:projectId/sessions/:sessionId/transcript` |
| `session.turn.read` | Viewed session turn state | `GET /v1/projects/:projectId/sessions/:sessionId/turn` |
| `session.turn.stream` | Streamed session turn | `POST /v1/projects/:projectId/turn-stream` |
| `session.update` | Updated session | `PATCH /v1/projects/:projectId/sessions/:sessionId` |
| `session.warm.claim` | Claimed warm session sandbox | `POST /v1/projects/:projectId/sessions/warm/claim` |
| `session.warm.create` | Warmed session sandbox | `POST /v1/projects/:projectId/sessions/warm` |

## `setup.`

| Action | Title | Route |
| --- | --- | --- |
| `setup.health.read` | Checked instance service health | `GET /v1/setup/health` |
| `setup.install_status.read` | Viewed instance install status | `GET /v1/setup/install-status` |
| `setup.owner.create` | Created instance owner account | `POST /v1/setup/bootstrap-owner` |
| `setup.sandbox_provider.list` | Listed enabled sandbox providers | `GET /v1/setup/sandbox-providers` |
| `setup.system_status.read` | Viewed instance system status | `GET /v1/setup/status` |
| `setup.wizard.complete` | Completed setup wizard | `POST /v1/setup/setup-complete` |
| `setup.wizard.read` | Viewed setup wizard status | `GET /v1/setup/setup-status` |
| `setup.wizard_step.read` | Viewed setup wizard step | `GET /v1/setup/setup-wizard-step` |
| `setup.wizard_step.update` | Updated setup wizard step | `POST /v1/setup/setup-wizard-step` |

## `skill.`

| Action | Title | Route |
| --- | --- | --- |
| `skill.system.file.read` | Viewed Kortix system skill file | `GET /v1/skills/:name/file` |
| `skill.system.list` | Listed Kortix system skills | `GET /v1/skills` |
| `skill.system.read` | Viewed Kortix system skill | `GET /v1/skills/:name` |

## `snapshot.`

| Action | Title | Route |
| --- | --- | --- |
| `snapshot.agent_fix.start` | Fixed snapshot with agent | `POST /v1/projects/:projectId/snapshots/fix-with-agent` |
| `snapshot.list` | Listed sandbox snapshots | `GET /v1/projects/:projectId/snapshots` |
| `snapshot.rebuild` | Started sandbox snapshot rebuild | `POST /v1/projects/:projectId/snapshots/rebuild` |

## `system.`

| Action | Title | Route |
| --- | --- | --- |
| `system.api_docs.read` | Viewed API reference docs | `GET /v1/docs` |
| `system.demo_request.create` | Submitted demo request | `POST /v1/system/demo-request` |
| `system.edge_tls.check` | Checked TLS certificate eligibility | `GET /v1/edge/tls-check` (also `GET /v1/apps/edge/tls-check`) |
| `system.health.liveness.read` | Checked API liveness | `GET /health/live` (also `GET /v1/health/live`) |
| `system.health.read` | Checked API health | `GET /health` (also `GET /v1/health`) |
| `system.health.readiness.read` | Checked API readiness | `GET /health/ready` (also `GET /v1/health/ready`) |
| `system.maintenance.read` | Viewed maintenance config | `GET /v1/system/maintenance` |
| `system.maintenance.update` | Updated maintenance config | `PUT /v1/system/maintenance` |
| `system.metrics.read` | Viewed system metrics | `GET /metrics` |
| `system.openapi_spec.read` | Viewed OpenAPI specification | `GET /v1/openapi.json` |
| `system.prewarm.request` | Requested API prewarm | `POST /v1/prewarm` |
| `system.status.read` | Viewed system status banner | `GET /v1/system/status` |

## `trigger.`

| Action | Title | Route |
| --- | --- | --- |
| `trigger.activation.set` | Paused or resumed all triggers | `PATCH /v1/projects/:projectId/triggers/activation` |
| `trigger.create` | Created trigger | `POST /v1/projects/:projectId/triggers` |
| `trigger.delete` | Deleted trigger | `DELETE /v1/projects/:projectId/triggers/:slug` |
| `trigger.fire` | Fired trigger | `POST /v1/projects/:projectId/triggers/:slug/fire` |
| `trigger.list` | Listed triggers | `GET /v1/projects/:projectId/triggers` |
| `trigger.update` | Updated trigger | `PATCH /v1/projects/:projectId/triggers/:slug` |

## `tunnel.`

| Action | Title | Route |
| --- | --- | --- |
| `tunnel.agent.connect` | Connected computer tunnel agent | before the API router |
| `tunnel.audit_log.list` | Viewed computer tunnel audit log | `GET /v1/tunnel/audit/:tunnelId` |
| `tunnel.connection.create` | Registered computer tunnel | `POST /v1/tunnel/connections` |
| `tunnel.connection.delete` | Deleted computer tunnel | `DELETE /v1/tunnel/connections/:tunnelId` |
| `tunnel.connection.list` | Listed computer tunnels | `GET /v1/tunnel/connections` |
| `tunnel.connection.read` | Viewed computer tunnel | `GET /v1/tunnel/connections/:tunnelId` |
| `tunnel.connection.token.rotate` | Rotated computer tunnel setup token | `POST /v1/tunnel/connections/:tunnelId/rotate-token` |
| `tunnel.connection.update` | Updated computer tunnel | `PATCH /v1/tunnel/connections/:tunnelId` |
| `tunnel.device_auth.approve` | Approved computer tunnel device authorization | `POST /v1/tunnel/device-auth/:code/approve` |
| `tunnel.device_auth.check` | Polled computer tunnel device authorization | `GET /v1/tunnel/device-auth/:code/status` |
| `tunnel.device_auth.create` | Requested computer tunnel device authorization | `POST /v1/tunnel/device-auth` |
| `tunnel.device_auth.deny` | Denied computer tunnel device authorization | `POST /v1/tunnel/device-auth/:code/deny` |
| `tunnel.device_auth.read` | Viewed computer tunnel device authorization | `GET /v1/tunnel/device-auth/:code/info` |
| `tunnel.event.stream` | Streamed computer tunnel events | `GET /v1/tunnel/permission-requests/stream` |
| `tunnel.permission.grant` | Granted computer tunnel permission | `POST /v1/tunnel/permissions/:tunnelId` |
| `tunnel.permission.list` | Listed computer tunnel permissions | `GET /v1/tunnel/permissions/:tunnelId` |
| `tunnel.permission.revoke` | Revoked computer tunnel permission | `DELETE /v1/tunnel/permissions/:tunnelId/:permissionId` |
| `tunnel.permission_request.approve` | Approved computer tunnel permission request | `POST /v1/tunnel/permission-requests/:requestId/approve` |
| `tunnel.permission_request.deny` | Denied computer tunnel permission request | `POST /v1/tunnel/permission-requests/:requestId/deny` |
| `tunnel.permission_request.list` | Listed computer tunnel permission requests | `GET /v1/tunnel/permission-requests` |
| `tunnel.rpc.send` | Sent operation to computer tunnel | `POST /v1/tunnel/rpc/:tunnelId` |

## `usage.`

| Action | Title | Route |
| --- | --- | --- |
| `usage.cost_summary.read` | Viewed cost summary | `GET /v1/usage/cost-summary` |
| `usage.project_cost.list` | Viewed project cost rollup | `GET /v1/usage/cost-by-project` |
| `usage.rollup.read` | Viewed account usage rollup | `GET /v1/usage` |
| `usage.session_cost.list` | Listed session costs | `GET /v1/usage/session-costs` |
| `usage.session_cost.read` | Viewed session cost ledger | `GET /v1/usage/session-costs/:sessionId` |

## `webhook.`

| Action | Title | Route |
| --- | --- | --- |
| `webhook.agentmail.message.receive` | Received AgentMail inbound email | `POST /v1/webhooks/email/agentmail` |
| `webhook.daytona.sandbox_lifecycle.receive` | Received Daytona sandbox lifecycle event | `POST /v1/webhooks/sandbox/daytona` |
| `webhook.pipedream.connection.receive` | Received Pipedream connection webhook | `POST /v1/connectors/webhook/pipedream` |
| `webhook.platinum.sandbox_lifecycle.receive` | Received Platinum sandbox lifecycle event | `POST /v1/webhooks/sandbox/platinum` |
| `webhook.slack.command.receive` | Received Slack slash command | `POST /v1/webhooks/slack/commands` |
| `webhook.slack.custom_app.command.receive` | Received custom Slack app slash command | `POST /v1/webhooks/slack/:projectId/commands` |
| `webhook.slack.custom_app.event.receive` | Received custom Slack app event | `POST /v1/webhooks/slack/:projectId` |
| `webhook.slack.custom_app.interaction.receive` | Received custom Slack app interaction | `POST /v1/webhooks/slack/:projectId/interactivity` |
| `webhook.slack.event.receive` | Received Slack event | `POST /v1/webhooks/slack` |
| `webhook.slack.interaction.receive` | Received Slack interaction | `POST /v1/webhooks/slack/interactivity` |
| `webhook.supabase_auth.send_email.receive` | Received auth email hook | `POST /v1/webhooks/auth/send-email` |
| `webhook.teams.activity.receive` | Received Teams activity | `POST /v1/webhooks/teams/messages` |
| `webhook.teams.custom_app.activity.receive` | Received custom Teams app activity | `POST /v1/webhooks/teams/:projectId/messages` |
| `webhook.telegram.update.receive` | Received Telegram update | `POST /v1/webhooks/telegram/:projectId` |
| `webhook.trigger.receive` | Received trigger webhook | `POST /v1/webhooks/projects/:projectId/:slug` |

## Events outside a request

Sandboxes, background jobs, database triggers, and handlers record these for something other than the request itself. An action ending in `.*` is a family: the rest of the action names the call, for example `connector.github.create_issue`.

| Action | Title |
| --- | --- |
| `admin.account.temporary_access.grant` | Granted temporary account access |
| `admin.impersonate.action` | Acted while impersonating account |
| `api.rate_limit.exceeded` | Hit API rate limit |
| `app.deployment.activated` | Activated Kortix App deployment |
| `app.deployment.failed` | Failed Kortix App deployment |
| `audit.anonymous.suppressed` | Suppressed anonymous audit rows |
| `audit.reconciliation.completed` | Completed audit reconciliation |
| `auth.login.fail` | Failed to sign in |
| `auth.login.success` | Signed in |
| `auth.session.first_sight` | Started authenticated session |
| `billing.trial.converted` | Converted trial to paid plan |
| `connector.*` | Ran connector call |
| `connector.approval.approved` | Approved connector action |
| `connector.approval.denied` | Denied connector action |
| `connector.computer.*` | Ran computer operation |
| `connector.computer.permission.expired` | Expired computer tunnel permission |
| `enterprise_demo.disable` | Disabled Enterprise preview |
| `enterprise_demo.enable` | Enabled Enterprise preview |
| `enterprise_demo.set` | Recorded Enterprise preview override |
| `git.branch.deleted` | Deleted stale Git branch |
| `iam.assignment.expired` | Expired a role |
| `iam.assignment.granted` | Granted a role |
| `iam.assignment.revoked` | Revoked a role assignment |
| `iam.mfa_required.disable` | Disabled MFA requirement |
| `iam.mfa_required.enable` | Required MFA for the account |
| `iam.session_oversight.disable` | Stopped admins opening every session |
| `iam.session_oversight.enable` | Let admins open every session |
| `llm.request` | Made LLM request |
| `llm.usage` | Recorded LLM usage |
| `opencode.*` | Recorded agent runtime event |
| `opencode.message.part.*` | Updated agent message |
| `opencode.tool.updated` | Updated agent tool call |
| `project.admin_bypass_read` | Used admin bypass to view project |
| `project.admin_bypass_session_read` | Used admin bypass to view session |
| `project.admin_oversight_session_read` | Opened a member session as account admin |
| `project.sandbox_provider.activated` | Activated sandbox provider switch |
| `project.sandbox_provider.transition_failed` | Failed sandbox provider switch |
| `sandbox.runtime.legacy_bootstrap` | Bootstrapped legacy sandbox runtime |
| `secret.broker.completed` | Completed secret broker call |
| `secret.broker.failed` | Failed secret broker call |
| `secret.broker.requested` | Requested secret broker call |
| `secret.broker.streamed` | Streamed secret relay response |
| `secret.consumer.denied` | Denied secret to consumer |
| `secret.consumer.invalid` | Failed to decrypt secret |
| `secret.consumer.missing` | Requested a secret that is not set |
| `secret.consumer.refresh_failed` | Failed to refresh secret credential |
| `secret.consumer.refreshed` | Refreshed secret credential |
| `secret.consumer.used` | Used secret |
| `secret.created` | Created secret |
| `secret.deleted` | Removed shared secret |
| `secret.handle.issued` | Issued secret handle to sandbox |
| `secret.handle.refused` | Refused secret handle |
| `secret.oauth.connected` | Connected model provider OAuth login |
| `secret.oauth.disconnected` | Disconnected model provider OAuth login |
| `secret.strategy.changed` | Updated secret delivery strategy |
| `secret.updated` | Updated secret |
| `session.created` | Recorded session creation |
| `session.event_rate_limited` | Rate-limited session audit events |
| `session.lifecycle.continue_session` | Queued session continuation |
| `session.lifecycle.create_session` | Queued session creation |
| `session.status.changed` | Changed session status |
| `tunnel.agent.authenticate` | Authenticated computer tunnel agent |
| `webhook.test` | Sent audit webhook test |
