Read the audit log
What the team's API keys and AI agents did, newest first: each call's surface (REST or MCP), tool, decision (allowed, dry run, replay or denied), refusal…
https://app.usenotix.dev/api/v1/audit-logFull access and read only keys can call this. Sending access keys cannot. Key permissions lists the extra rules some calls have.
What the team's API keys and AI agents did, newest first: each call's surface (REST or MCP), tool, decision (allowed, dry run, replay or denied), refusal code, status, units and the id of what it created. Never a request body, address or query string. Page with cursor and limit (default 50, max 100) and filter by tool, decision, apiKeyId, from and to.
A full access key that is not pinned to a domain reads the whole team's log (scope: team). Any other key reads only its own rows (scope: key). A sending-only key cannot read it.
Query parameters
nextCursor from the previous page.
Rows per page, 1 to 100. Default 50.
Minimum 1. Maximum 100.
Only calls made by this MCP tool.
One of ALLOWED, DRY_RUN, REPLAY, DENIED.
Only this key's rows. Ignored for a key that may read only its own.
Minimum 0.
ISO 8601, inclusive.
ISO 8601, inclusive.
Headers
Bearer followed by your API key.
Errors
A filter or cursor is not valid
Every error has the same shape. See all error codes.
curl -X GET "https://app.usenotix.dev/api/v1/audit-log" \
-H "Authorization: Bearer $NOTIX_API_KEY"
{
"data": [
{
"id": "cm1x8f3k20001qz7v5b9d2e4a",
"createdAt": "string",
"apiKeyId": 1,
"keyLabel": "string",
"surface": "string",
"tool": "string",
"toolClaimed": true,
"toolCallId": "cm1x8f3k20001qz7v5b9d2e4a",
"method": "string",
"path": "string",
"decision": "ALLOWED",
"reasonCode": "string",
"status": 1,
"resultRef": "string",
"units": 1,
"channel": "string",
"durationMs": 1
}
],
"nextCursor": "string",
"scope": "team"
}