Audit log
Every significant action in a workspace is logged. The audit log is append-only and cannot be modified.
GET /workspaces/:wsId/audit-log
Paginated audit log with optional filters.
Role: admin+
curl "https://nobsredir.com/api/workspaces/ws_abc123/audit-log?page=1&limit=50&action=link.create" \ -H "X-API-Key: nobs_your_key"Query parameters:
| Param | Type | Default | Description |
|---|---|---|---|
page | int | 1 | Page number |
limit | int | 20 | Items per page |
action | string | - | Filter by action type |
user_id | string | - | Filter by user who performed the action |
from | string | - | ISO 8601 start date |
to | string | - | ISO 8601 end date |
Response 200:
{ "entries": [ { "id": 1042, "workspace_id": "ws_abc123", "user_id": "usr_abc123", "action": "link.create", "details": "{\"linkId\":\"lnk_xyz789\",\"domain\":\"fnl.sh\",\"slug\":\"demo\",\"target\":\"https://example.com\"}", "created_at": "2025-01-20T14:30:00.000Z" } ], "total": 1042, "page": 1, "limit": 50}The details field is a JSON string with action-specific data.
Tracked actions
| Action | Description |
|---|---|
link.create | Link created |
link.update | Link fields updated |
link.delete | Link deleted |
link.bulk_delete | Multiple links deleted |
member.update_role | Member role changed |
member.remove | Member removed from workspace |
invite.create | Invite sent |
invite.accept | Invite accepted |
domain.add | Custom domain added |
domain.verify | Domain verification attempted |
domain.remove | Custom domain removed |
api_key.create | API key created |
api_key.delete | API key deleted |
workspace.update | Workspace settings changed |
workspace.delete | Workspace deleted |
client.create | Client workspace created |