--- title: Audit Logs description: View and monitor all user actions across your Daytona organization. --- Audit logs provide a detailed record of user and system activity across your organization. Use this feature to track sandbox lifecycle events, user access, system changes, and more. - **Security audits**: monitor for unauthorized access or sandbox misuse - **Debugging**: understand sandbox lifecycle issues (e.g. failed starts) - **Compliance Export**: export logs for internal or external audits (coming soon) Audit logs are available to [administrators](/docs/en/organizations#roles) with full access and [members](/docs/en/organizations#roles) with audit log permissions. Contact your organization administrator to get access to audit logs. ## Access from Dashboard Access the audit logs page directly from [Daytona Dashboard ↗](https://app.daytona.io/dashboard/audit-logs). The audit logs page displays a list of all audit logs for your organization, including the following columns: - **Time**: the timestamp of the action - **User**: the user who performed the action - **Action**: the action performed - **Target**: the resource affected by the action - [Outcomes](#outcomes): the result of the action To filter audit logs by time, use the date range picker in the top-left corner of the page. ## Real-time updates Refresh the audit log list automatically as new events occur. 1. Go to [Daytona Audit Logs ↗](https://app.daytona.io/dashboard/audit-logs) 2. Enable the **Auto Refresh** toggle in the top-right corner of the page ## Log structure Each audit log entry contains the following fields: | Field | Type | Description | | -------------------- | ------ | ---------------------------------------------------- | | **`id`** | string | Unique log entry identifier | | **`actorId`** | string | ID of the user who performed the action | | **`actorEmail`** | string | Email of the user who performed the action | | **`organizationId`** | string | Organization ID | | **`action`** | string | Operation executed (e.g., `create`, `start`, `stop`) | | **`targetType`** | string | Resource type affected (e.g., `sandbox`, `snapshot`) | | **`targetId`** | string | ID of the affected resource | | **`statusCode`** | number | HTTP status code of the result | | **`errorMessage`** | string | Error message if the action failed | | **`ipAddress`** | string | IP address of the request origin | | **`userAgent`** | string | User agent of the request origin | | **`source`** | string | Source of the action | | **`metadata`** | object | Additional context about the action | | **`createdAt`** | string | ISO 8601 timestamp of when the action occurred | ## Get all audit logs Get all audit logs. ```bash curl 'https://app.daytona.io/api/audit' \ --header 'Authorization: Bearer YOUR_API_KEY' ``` ## Get audit logs for organization Get audit logs for a specific organization. ```bash curl 'https://app.daytona.io/api/audit/organizations/{organizationId}' \ --header 'Authorization: Bearer YOUR_API_KEY' ``` ## Get audit scenarios Get supported audit actions grouped by target type. This endpoint is public and does not require authentication. Each audit log entry records an `action` and, when applicable, a `targetType`. Daytona exposes the supported pairs as scenarios: actions grouped by the resource type they apply to. ```bash curl 'https://app.daytona.io/api/audit/scenarios' ``` The response is in the following format: ```json { "targets": [ { "targetType": "api_key", "actions": ["create", "delete"] }, { "targetType": "docker_registry", "actions": ["create", "delete", "set_default", "update"] }, { "targetType": "identity_provider", "actions": ["create", "delete", "update"] }, { "targetType": "organization", "actions": [ "create", "create_region_quota", "delete", "delete_otel_config", "delete_region_quota", "initialize_webhooks", "send_webhook_message", "suspend", "unsuspend", "update", "update_otel_config", "update_preview_warning", "update_quota", "update_region_quota", "update_sandbox_default_limited_network_egress", "update_sso_enabled" ] }, { "targetType": "organization_invitation", "actions": ["accept", "create", "decline", "delete", "update"] }, { "targetType": "organization_role", "actions": ["create", "delete", "update"] }, { "targetType": "organization_user", "actions": ["create", "delete", "update_access"] }, { "targetType": "region", "actions": [ "create", "delete", "regenerate_proxy_api_key", "regenerate_snapshot_manager_credentials", "regenerate_ssh_gateway_api_key", "update" ] }, { "targetType": "runner", "actions": ["create", "delete", "update_draining", "update_scheduling"] }, { "targetType": "sandbox", "actions": [ "archive", "create", "create_ssh_access", "delete", "fork", "pause", "recover", "replace_labels", "resize", "revoke_ssh_access", "rotate_signing_key", "set_auto_archive_interval", "set_auto_delete_interval", "set_auto_pause_interval", "set_auto_stop_interval", "set_ttl", "snapshot", "start", "stop", "update", "update_network_settings", "update_public_status", "update_secrets" ] }, { "targetType": "secret", "actions": ["create", "delete", "update"] }, { "targetType": "snapshot", "actions": ["activate", "create", "deactivate", "delete", "set_general_status"] }, { "targetType": "user", "actions": ["create", "link_account", "regenerate_key_pair", "unlink_account"] }, { "targetType": "volume", "actions": ["create", "delete"] }, { "targetType": "warm_pool", "actions": ["create", "delete", "update"] }, { "targetType": "other", "actions": ["leave_organization", "link_account", "unlink_account"] } ] } ``` ## Outcomes The outcome field indicates the result of the action. Statuses follow standard HTTP semantics: | **Outcome** | **Description** | | ----------- | ----------------------------- | | Info | Informational (1xx codes) | | Success | Action succeeded (2xx codes) | | Redirect | Redirects (3xx codes) | | Error | Client/server error (4xx/5xx) |