Sign Up

Audit Logs

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 with full access and members 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 ↗. 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: 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 ↗
  2. Enable the Auto Refresh toggle in the top-right corner of the page

Log structure

Each audit log entry contains the following fields:

FieldTypeDescription
idstringUnique log entry identifier
actorIdstringID of the user who performed the action
actorEmailstringEmail of the user who performed the action
organizationIdstringOrganization ID
actionstringOperation executed (e.g., create, start, stop)
targetTypestringResource type affected (e.g., sandbox, snapshot)
targetIdstringID of the affected resource
statusCodenumberHTTP status code of the result
errorMessagestringError message if the action failed
ipAddressstringIP address of the request origin
userAgentstringUser agent of the request origin
sourcestringSource of the action
metadataobjectAdditional context about the action
createdAtstringISO 8601 timestamp of when the action occurred

Get all audit logs

Get all audit logs.

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.

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.

curl 'https://app.daytona.io/api/audit/scenarios'

The response is in the following format:

{
  "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:

OutcomeDescription
InfoInformational (1xx codes)
SuccessAction succeeded (2xx codes)
RedirectRedirects (3xx codes)
ErrorClient/server error (4xx/5xx)