Audit log
Who changed what in the workspace: operators, API keys and MCP clients, filtered by actor, action, target and date. Business plan.
Set up the SDK client used in the examples
API key or Dashboard session:
import { UpVoiced } from '@upvoiced/sdk';
const apiKey = process.env['UPVOICED_API_KEY']; // uv_live_… (Settings → API keys)
const workspace = process.env['UPVOICED_WORKSPACE_ID']; // sent as X-Workspace
if (!apiKey || !workspace) throw new Error('Set UPVOICED_API_KEY and UPVOICED_WORKSPACE_ID.');
const upvoiced = new UpVoiced({ apiKey, workspace });curl examples read $UPVOICED_API_KEY and $UPVOICED_WORKSPACE_IDfrom your shell. MCP examples are the tools/call request an MCP client sends to the MCP server with the same API key.
GET/v1/audit
Audit log, newest first: filter by actor, action (or namespace.*), target kind/id and date range (owner/admin; Business)
| Name | Type | Required |
|---|---|---|
actor_kind | "operator" | "api_key" | "mcp" | "end_user" | "system" | No |
actor_id | stringlength 1–128 | No |
action | stringlength ≤ 100pattern ^[a-z_]{1,32}(?:\.[a-z_]{1,32}){0,3}(?:\.\*)?$ | No |
target_kind | stringpattern ^[a-z][a-z_]{0,31}$ | No |
target_id | stringlength 1–128 | No |
since | string (date-time) | No |
until | string (date-time) | No |
cursor | stringlength 1–256 | No |
limit | integervalue 1–100default 50 | No |
| Name | Type | Required |
|---|---|---|
x-workspace | string (uuid) | Yes |
Response 200: 13 fields
| Name | Type | Required |
|---|---|---|
items | array of objectitems ≤ 100 | Yes |
items[].id | string (uuid) | Yes |
items[].at | string | Yes |
items[].action | string | Yes |
items[].actor | object | Yes |
items[].actor.kind | string | Yes |
items[].actor.id | string | null | No |
items[].actor.name | string | null | No |
items[].actor.operator_id | string | null | No |
items[].target | object | Yes |
items[].diff | object | Yes |
items[].ip_hash | string | null | Yes |
next_cursor | string | null | Yes |
Errors: 400, 401, 403, 404, 409, 413, 422, 429, 500, 503, all in the standard error shape.
curl 'https://api.upvoiced.com/v1/audit' \
-H "Authorization: Bearer $UPVOICED_API_KEY" \
-H "X-Workspace: $UPVOICED_WORKSPACE_ID"const data = await upvoiced.get('/v1/audit');No MCP tool for this operation. The MCP server covers the everyday reads and writes.