On this page

The audit log records all significant actions performed within your tenant - resource creation and deletion, API key usage, settings changes, and more. Results are cursor-paginated and ordered newest-first.

Base path: /api/v1/audit-log


Endpoints

MethodPathDescription
GET/api/v1/audit-logFetch recent audit events

List Audit Events

GET /api/v1/audit-log

Auth

Authorization: Bearer msk_...

Query Parameters

ParameterTypeRequiredDefaultDescription
limitintegerNo50Events per page (max 100)
afterstringNo-Cursor from previous response’s next_cursor
typestringNo-Filter by event type prefix (e.g. sandbox.)
actor_idstringNo-Filter by actor user ID
resource_typestringNo-Filter by resource type (e.g. sandbox)
resource_idstringNo-Filter by resource ID

Response - 200 OK

{
  "data": [
    {
      "id": "evt_01hwxyz...",
      "type": "sandbox.created",
      "actor": {
        "type": "api_key",
        "id": "user_clinic_42"
      },
      "resource": {
        "type": "sandbox",
        "id": "sbx_abc123"
      },
      "ts": "2026-05-26T10:14:23Z",
      "metadata": {
        "image": "debian-12-sandbox-v8",
        "workspace_id": "ws_01hwxyz..."
      }
    }
  ],
  "next_cursor": "MjAyNi0wNS0yNlQxMDoxNDoyM1o"
}
FieldTypeDescription
data[].idstringUnique event ID
data[].typestringDot-namespaced event type
data[].actor.typestring"user" or "api_key"
data[].actor.idstringUser ID or external_user_id for API key actors
data[].resource.typestringResource type (e.g. sandbox, computer, webhook)
data[].resource.idstringResource ID
data[].tsstringISO 8601 timestamp
data[].metadataobjectEvent-specific detail fields
next_cursorstringOpaque cursor; omitted when no more pages

Common Event Types

TypeTrigger
sandbox.createdSandbox provisioned
sandbox.destroyedSandbox deleted
sandbox.execPOST /exec called
computer.createdComputer provisioned
computer.stoppedComputer stopped
computer.deletedComputer deleted
snapshot.createdSnapshot initiated
api_key.createdAPI key minted
api_key.deletedAPI key revoked
tenant.preview_domain.setPreview domain configured
webhook.createdOutgoing webhook created
quota.upsertedPer-user quota set
settings.updatedTenant settings changed

Use the type filter with a prefix to narrow events (e.g. type=sandbox. returns all sandbox events).


Pagination

Audit events are returned newest-first. To page forward:

  1. Issue the initial request without after.
  2. If next_cursor is present, re-issue with after={next_cursor}.
  3. Stop when next_cursor is absent.

Cursors are opaque base64url strings encoding a timestamp. Do not parse or construct them.


Errors

StatusCodeCause
400-Invalid cursor format

Examples

Was this helpful?