Cactal Audit log API
Read the immutable record of actions performed in an organization by users and API keys.
Read the immutable record of actions performed in an organization by users and API keys.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/cactal-ai:cactal-ai-audit-log-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Cactal Ai Audit log API
version: 1.0.0
description: 'Operations tagged Audit log across 2 of this provider''s published API definitions: openapi.json, cactal-ai-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.cactal.ai/v1
security:
- apiKey: []
tags:
- name: Audit Log
description: Read the immutable record of actions performed in an organization by users and API keys.
paths:
/organizations/{organizationId}/audit-log:
get:
operationId: auditLog.list
summary: List audit log events
description: Returns the organization’s immutable audit trail newest first as a paginated set, recording mutations performed by users and API keys across organizations, members, invitations, websites, and billing. Filter with the `eventType`, `resourceType`, `actorKind`, `actorPrincipalId`, and `websiteId` query parameters; `websiteId` narrows the trail to one website, including events recorded against its nested resources. Page size defaults to 20 (maximum 100). Requires a role with audit log access (owner or admin).
tags:
- Audit Log
parameters:
- name: organizationId
in: path
required: true
schema:
type: string
minLength: 1
- name: eventType
in: query
required: false
schema:
type: string
minLength: 1
- name: resourceType
in: query
required: false
schema:
type: string
minLength: 1
- name: actorKind
in: query
required: false
schema:
type: string
enum:
- user
- api_key
- system
- agent
- name: actorPrincipalId
in: query
required: false
schema:
type: string
minLength: 1
- name: websiteId
in: query
required: false
schema:
description: Return only events about this website — either the website itself or a resource belonging to it.
type: string
minLength: 1
- name: cursor
in: query
required: false
schema:
type: string
- name: limit
in: query
required: false
schema:
default: 20
type: integer
minimum: 1
maximum: 100
responses:
'200':
description: One page of audit events, newest first.
content:
application/json:
schema:
type: object
properties:
items:
type: array
items:
type: object
properties:
id:
type: string
description: Unique event ID.
occurredAt:
description: When the action happened.
type: string
format: date-time
eventType:
type: string
description: Stable event identifier, e.g. `organizations.members.remove`. Also usable as the `eventType` filter.
summary:
description: Human-readable one-line summary of the action.
type:
- string
- 'null'
actorKind:
type: string
enum:
- user
- api_key
- system
- agent
description: What kind of principal performed the action.
actorPrincipalId:
description: Principal ID of the actor, when known. Usable as the `actorPrincipalId` filter to follow one actor.
type:
- string
- 'null'
actorDisplay:
anyOf:
- type: object
properties:
label:
type: string
description: 'Display name of the actor: the user’s name, the API key’s name, or `Deleted user` for a person who deleted their account.'
email:
description: Email of user actors; `null` for API key actors and deleted users.
type:
- string
- 'null'
required:
- label
- email
additionalProperties: false
- type: 'null'
description: Resolved display info for the actor; `null` when the actor cannot be resolved (for example `system` actors or an API key that no longer exists).
resourceType:
description: Type of the affected resource, e.g. `organization_member`.
type:
- string
- 'null'
resourceId:
description: ID of the affected resource.
type:
- string
- 'null'
metadata:
anyOf:
- type: object
propertyNames:
type: string
additionalProperties: {}
- type: 'null'
description: Event-specific structured details.
durationMs:
type: integer
description: How long the recorded operation took, in milliseconds.
required:
- id
- occurredAt
- eventType
- summary
- actorKind
- actorPrincipalId
- actorDisplay
- resourceType
- resourceId
- metadata
- durationMs
additionalProperties: false
nextCursor:
description: Opaque cursor for the next page. Pass it as the `cursor` parameter on the next request. `null` when this is the last page.
type:
- string
- 'null'
required:
- items
- nextCursor
additionalProperties: false
'400':
description: Validation failed. The response `message` names the first invalid field.
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceError'
'401':
description: Missing, invalid, expired, or revoked API key.
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceError'
'403':
description: The authenticated principal lacks the required capability.
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceError'
'404':
description: The resource does not exist or is outside the principal’s access scope.
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceError'
'429':
description: Rate limit exceeded. Retry after the number of seconds in the `Retry-After` header.
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceError'
x-cactal-required-capability: auditLog.list
x-cactal-read-only: true
x-cactal-destructive: false
x-cactal-idempotent: true
servers:
- url: https://api.cactal.ai/v1
components:
schemas:
ServiceError:
type: object
required:
- kind
- message
description: Canonical error body returned by every non-2xx response. Extra fields carry error-specific details.
properties:
kind:
type: string
enum:
- validation
- unauthorized
- forbidden
- not_found
- conflict
- rate_limited
- internal
description: Stable, machine-readable error category.
message:
type: string
description: Human-readable explanation of the failure.
suggestion:
type: string
description: What to do next when the failure has a known fix; may name the exact operation to call.
validValues:
type: array
items:
type: string
description: The acceptable values for the failing field, when the set is closed.
additionalProperties: true
securitySchemes:
apiKey:
type: http
scheme: bearer
description: Cactal API key. Create one in the dashboard or via `POST /apiKeys`. The plaintext key is shown once at creation.
x-refined-from:
- openapi.json
- cactal-ai-openapi.json