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…

GEThttps://app.usenotix.dev/api/v1/audit-log

Full 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

cursorstring

nextCursor from the previous page.

limitinteger

Rows per page, 1 to 100. Default 50.

Minimum 1. Maximum 100.

toolstring

Only calls made by this MCP tool.

decisionstring

One of ALLOWED, DRY_RUN, REPLAY, DENIED.

apiKeyIdinteger

Only this key's rows. Ignored for a key that may read only its own.

Minimum 0.

fromstring (date-time)

ISO 8601, inclusive.

tostring (date-time)

ISO 8601, inclusive.

Headers

Authorizationstringrequired

Bearer followed by your API key.

Errors

400

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"
Response200
{
  "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"
}
Open in ClaudeOpen in ChatGPT