DevelopersAPI reference
Activity log API
REST endpoints for activity log in SKUFlow: 1 operations with parameters, request and response fields, permissions and curl examples.
Base URL: https://app.skuflow.ai/api. Every call needs Authorization: Bearer skf_… (Authentication); {organizationId} ($ORGANIZATION_ID in the examples) is your business's id.
| Operation | Endpoint | Risk |
|---|---|---|
| The organization's activity log | GET /organizations/{organizationId}/audit-events | read |
The organization's activity log
GET /organizations/{organizationId}/audit-events
Who did what, newest first: every write and sensitive call (succeeded or failed), every refused call, and public calls (request form, quote answers, portal) for this organization. Reads are not recorded. Filter by actor, action (exact, or a prefix ending in . such as payments.), resource, outcome, channel and date range (UTC days); paged with a total. Read-only.
| Permission | audit.read (Owner, Admin) |
| Risk | read, OAuth scope skuflow.read. Read: reads only. |
| MCP tool | auditEvents_list (toolset reports) |
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
actorUserId | query | string | No | Only this person's actions. Up to 200 characters. |
action | query | string | No | A procedure (payments.refund) or a prefix ending in . (invoices.). Up to 200 characters. |
resourceType | query | string | No | e.g. quote, invoice, payment. Up to 100 characters. |
resourceId | query | string | No | Up to 200 characters. |
outcome | query | enum | No | One of SUCCESS, DENIED, ERROR. |
via | query | enum | No | One of WEB, API, MCP, PUBLIC, COPILOT. |
from | query | string | No | On or after this day (UTC), YYYY-MM-DD. |
to | query | string | No | On or before this day (UTC), YYYY-MM-DD. |
limit | query | integer | No | Page size, 1–200. Default 50. |
offset | query | integer | No | Rows to skip; the answer's total counts every match. Default 0. |
Example
curl "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/audit-events" \
-H "Authorization: Bearer $SKUFLOW_API_KEY"Response
200: the answer's fields
| Field | Type | Description |
|---|---|---|
items | array of object | |
items[].id | string | |
items[].organizationId | string or null | |
items[].occurredAt | string (date-time) | |
items[].actorType | enum | One of USER, AGENT, SYSTEM, PUBLIC. |
items[].actorUserId | string or null | |
items[].actor | object or null | The signed-in person who acted, from the local user mirror. |
items[].actor.id | string | |
items[].actor.name | string or null | |
items[].actor.email | string or null | |
items[].actorClientId | string or null | The OAuth / MCP client, for agent calls. |
items[].actingForUserId | string or null | The user an agent acted for. |
items[].via | enum | Web: the SKUFlow app; API: a Bearer-token client; MCP: an AI agent; PUBLIC: no sign-in; COPILOT: SKUFlow AI, the in-app AI assistant acting for the user. One of WEB, API, MCP, PUBLIC, COPILOT. |
items[].action | string | The procedure, e.g. payments.refund. |
items[].permission | string or null | |
items[].risk | enum | One of READ, WRITE, SENSITIVE. |
items[].resourceType | string or null | |
items[].resourceId | string or null | |
items[].outcome | enum | One of SUCCESS, DENIED, ERROR. |
items[].errorCode | string or null | |
items[].ip | string or null | |
items[].userAgent | string or null | |
items[].metadata | any | Redacted summary of the input: ids it named, the fields it sent and a few enum or amount values. Never free text, secrets or tokens. |
total | integer |