CommunityHire an ExpertSign Up
Audit Logs APIOverview
Audit Logs API

Audit Logs API

Read the activity of your workspace from your own tools, for compliance reviews, security monitoring or alerts.

The Audit Logs API returns the same activity as Audit logs in your workspace settings: who did what, and when, across apps, databases, workflows, agents and integrations. Use it to send the activity to a security tool (SIEM), keep your own archive, or get alerted when something changes, such as an app being published.

Base URL

https://studio-api.softr.io/v1/api

The Audit Logs API has its own base URL. It is not the Database API’s tables-api.softr.io.

Authentication

Pass a Personal Access Token in the Softr-Api-Key header, as with the Database API:

Terminal
curl -X POST 'https://studio-api.softr.io/v1/api/workspaces/{workspaceId}/audit-logs/search' \
  -H 'Softr-Api-Key: <your-token>' \
  -H 'Content-Type: application/json' \
  -d '{}'

To create a token, open your Softr Dashboard, click your workspace name in the top-left corner, and go to API tokens. See API Setup and Endpoints for the steps.

The audit log covers the whole workspace, so the token needs read access to every product on the whole workspace:

  • Choose Everything, or the workspace itself, not individual apps, databases or workflows.
  • Set Applications & Forms and Workflows to at least Read only, and Databases to at least View only.

In scope terms, the token needs applications:read, databases.records:read and workflows:read on the whole workspace.

A token limited to individual resources is refused, because it would show only part of the activity. Legacy API keys are refused too.

The token acts as the user who created it. That user must be an owner or admin of the workspace.

Read the activity

Search Audit Logs returns the activity newest first, one page at a time. Every filter is optional:

Terminal
curl -X POST 'https://studio-api.softr.io/v1/api/workspaces/{workspaceId}/audit-logs/search' \
  -H 'Softr-Api-Key: <your-token>' \
  -H 'Content-Type: application/json' \
  -d '{
    "entityTypes": ["APP"],
    "startDate": "2026-11-01T00:00:00Z",
    "size": 50
  }'

To find your workspace ID, call Get Databases. Each database in the response has a workspaceId.

Page through the results

Each response has entries, a cursor and hasMore:

  1. Send your first request without a cursor.
  2. While hasMore is true, send the same request again with the cursor from the last response.
  3. When hasMore is false, you have read everything that matches. The cursor is then null.

Keep the filters the same while you page. A page holds at most 50 entries.

Poll for new activity

To collect new activity on a schedule, remember the createdAt of the newest entry you have stored. On the next run, send it as startDate and page until hasMore is false. startDate is inclusive, so skip the entries you already have by their id.

Entity types and actions

Each entry has an entityType and an action. The action names what happened. Some typical values:

entityTypeWhat it coversExample actions
APPApps, their pages, blocks, settings, users and collaboratorsCREATE_APP, APP_PUBLISHED, PAGE_ADDED, BLOCK_UPDATED, COLLABORATOR_ADDED, APPLICATION_USER_REMOVED
DATABASESoftr Databases, their tables, views and fieldsTABLESPACE_CREATED, TABLE_DELETED, FIELD_UPDATED, RECORD_DELETED
WORKFLOWWorkflows, their triggers and actionsWORKFLOW_CREATED, WORKFLOW_ENABLED, WORKFLOW_AUTO_DISABLED, ACTION_UPDATED
AGENTAgents, their knowledge sources, actions and triggersAGENT_CREATED, AGENT_DISABLED, KNOWLEDGE_SOURCE_ADDED
INTEGRATIONData source connections of the workspaceINTEGRATION_CREATED, INTEGRATION_UPDATED, INTEGRATION_DELETED
WORKSPACEThe workspace itselfWORKSPACE_OWNER_ADDED, WORKSPACE_OWNER_REMOVED

Softr adds actions as products change. Do not fail on an action or entityType you do not know: store it, or skip it.

details holds extra information about the activity, such as what changed. Its shape depends on the action.

Errors

An error response has a code and a message that says what went wrong:

JSON
{
  "code": "Forbidden",
  "message": "Only workspace owners and admins can read the audit log."
}
StatusMeaningWhat to do
400The request body is invalid, for example an unknown entity typeFix the request
401The Softr-Api-Key header is missing, or the token is unknown, revoked or expiredCheck the token
403The token or its user cannot read this audit log. The message says whyUse a token with the access above, created by an owner or admin, on an Enterprise workspace
429Too many requestsWait a moment, then retry
503Part of the activity is temporarily unavailableRetry the same request with the same cursor

Use these docs with your AI tools

An AI agent can read this documentation directly. You do not need an account or an API key. Everything here is public and read-only.

Query these docs via MCP

Recommended

Add this server to Claude, Claude Code, Cursor, Mistral, or any tool that supports MCP. Your agent can then search Softr Documentation documentation and read it in full, instead of answering from memory.

https://docs.softr.io/mcp
  • searchFind the passages that answer a question.
  • fetchRead one page in full, as Markdown.
  • list_pagesSee every page in this documentation.

Query these docs over HTTP

The same tools also work as plain web requests. Use this for scripts, or for any tool that does not support MCP. There is one endpoint per tool. Arguments go in the query string, and the answer comes back as JSON.

https://docs.softr.io/api/docs/search?query=custom+domain

Read the OpenAPI description. It is built from the same definitions as the tools, so it always matches what the endpoints do.

Read these docs as Markdown

Add .md to any page URL to get its Markdown source. You can also send the headerAccept: text/markdown to the page URL itself.

To read the whole documentation in one file, open llms-full.txt. For a short index of every page, open llms.txt.