Returns audit log entries for the workspace, newest first. Entries are written for successful changes to API keys, members, invites, public keys, agents, phone numbers, exports, SSO, billing settings and more, and for sensitive reads such as revealing unscrubbed call data.
Request#
| Query parameter | Type | Required | Description |
|---|---|---|---|
action |
string | No | Only entries whose action starts with this text. api_key matches api_key.create, api_key.update and api_key.delete. |
actor_id |
string | No | Only entries by this user ID or API key ID. |
before |
integer | No | Only entries created before this Unix ms time. Pass the last created_timestamp you received to get the next page. |
limit |
integer | No | Entries to return, 1 to 500. Default 100. |
Example request#
curl "https://api.tried.com.au/audit-log?action=api_key&limit=50" \
-H "Authorization: Bearer $TRIED_API_KEY"const params = new URLSearchParams({ action: "api_key", limit: "50" });
const res = await fetch(`https://api.tried.com.au/audit-log?${params}`, {
headers: { Authorization: `Bearer ${process.env.TRIED_API_KEY}` },
});
const entries = await res.json();import os, requests
res = requests.get(
"https://api.tried.com.au/audit-log",
headers={"Authorization": f"Bearer {os.environ['TRIED_API_KEY']}"},
params={"action": "api_key", "limit": 50},
)
entries = res.json()Response#
200 OK
[
{
"audit_log_id": "audit_1c3e5a7b9d0f2e4a6c8b1d3f",
"actor_type": "user",
"actor_id": "user_5e7a9c1b3d2f4e6a8c0b2d4f",
"actor_label": "ops@example.com.au",
"action": "api_key.create",
"target_type": "api_key",
"target_id": null,
"details": { "name": "Analytics export", "scopes": ["analytics"] },
"ip": "203.0.113.10",
"created_timestamp": 1760313600000
},
{
"audit_log_id": "audit_7d9f1b3a5c2e4f6a8b0d1c3e",
"actor_type": "api_key",
"actor_id": "key_6f1c2a9e4b7d03581e2c9a47",
"actor_label": "Production backend",
"action": "api_key.delete",
"target_type": "api_key",
"target_id": "key_0d8e4b1f7a2c96e53b0f1d84",
"details": {},
"ip": "198.51.100.7",
"created_timestamp": 1760227200000
}
]| Field | Type | Description |
|---|---|---|
actor_type |
string | user (dashboard session), api_key, or system (written by the server, not a request). |
actor_id |
string or null | User ID or API key ID of the actor. |
actor_label |
string or null | The user's email or the API key's name. |
action |
string | What happened, as <resource>.<verb>, for example member.role_change, number.create or export.download. |
target_type |
string or null | Kind of resource acted on. |
target_id |
string or null | ID of that resource, when the route has one. |
details |
object | Request fields relevant to the action, for example the new role or scopes. |
ip |
string or null | Client IP of the request. |
Errors#
| Status | When |
|---|---|
400 |
A query parameter fails validation, for example limit above 500. |
401 |
Missing or invalid API key. |
403 |
The key's IP allowlist or scopes reject the request (this route needs the admin scope), or a dashboard user without the admin role calls it (Requires role: admin). |
429 |
Rate limit exceeded. See Rate limits. |
See Errors for the body format.