Skip to main content

Overview

The audit log records every mutation and authentication event in your organization — who did what, when, and what changed. This is essential for compliance, debugging, and security reviews.
The audit log is available on Team plans and above.

Viewing the Audit Log

Via Dashboard

Navigate to Settings > Audit Log to see a filterable timeline of all activity. You can filter by:
  • Resource type: Incidents, services, status pages, monitors, access tokens, SSO providers, and more
  • Actor type: Users, API keys, or system actions
  • Date range: Filter to a specific time period
Click any row with a chevron indicator to expand and see the field-level diff or event metadata. Authentication events (SSO logins, password attempts, token operations) include metadata such as the provider type, email, IP address, and failure reason.

Via API

curl "https://kodostatus.com/api/v1/audit-log?resource_type=incident&limit=20" \
  -H "X-API-Key: your_api_key"
Requires the audit_log:read scope.

Query Parameters

ParameterTypeDescription
resource_typestringFilter by resource type (e.g., incident, status_page, access_token)
resource_idstringFilter by specific resource ID
actor_typestringFilter by user, api_key, or system
actionstringFilter by action (e.g., sso.login_success, incident.created)
fromISO dateStart of date range
toISO dateEnd of date range
limitintegerResults per page (max 200, default 50)
offsetintegerPagination offset

Response

{
  "entries": [
    {
      "id": "uuid",
      "actor_type": "user",
      "actor_id": "[email protected]",
      "actor_label": null,
      "action": "sso.login_success",
      "resource_type": "status_page",
      "resource_id": "uuid",
      "changes": null,
      "metadata": {
        "provider": "okta",
        "email": "[email protected]",
        "role": "full"
      },
      "created_at": "2026-02-22T10:30:00Z"
    }
  ],
  "total": 142,
  "limit": 50,
  "offset": 0
}

Tracked Actions

Resource Management

ActionDescription
incident.createdIncident created
incident.updatedIncident fields modified
incident.deletedIncident deleted
incident.publishedIncident published to status page
service.createdService created
service.updatedService fields modified
service.deletedService deleted
status_page.createdStatus page created
status_page.updatedStatus page modified
status_page.deletedStatus page deleted
status_page.design_publishedDesign published
monitor.createdMonitor created
monitor.updatedMonitor modified
monitor.deletedMonitor deleted
maintenance.createdMaintenance window created
maintenance.updatedMaintenance window modified
maintenance.deletedMaintenance window deleted
notification_channel.createdNotification channel created
notification_channel.updatedNotification channel modified
notification_channel.deletedNotification channel deleted
webhook.createdWebhook created
webhook.updatedWebhook modified
webhook.deletedWebhook deleted
config.updatedOrganization config modified
api_key.createdAPI key created
api_key.updatedAPI key modified
api_key.deletedAPI key deleted
workflow.triggeredWorkflow manually triggered

Authentication Events

These events are logged when users interact with protected status pages.
ActionDescriptionMetadata
sso.login_successUser authenticated via SSOprovider, email, role
sso.login_failedSSO authentication failedreason, provider, email (if available)
status_page.password_auth_successCorrect password enteredip
status_page.password_auth_failedWrong password enteredip
access_token.createdAccess token createdname, access_role, status_page_id
access_token.revokedAccess token revokedstatus_page_id
To monitor for suspicious activity, filter the audit log by sso.login_failed or status_page.password_auth_failed actions. Repeated failures from the same IP may indicate a brute-force attempt.

SSO Failure Reasons

When an SSO login fails, the reason field in the metadata explains why:
ReasonDescription
jwks_verification_failedThe ID token’s signature could not be verified against the provider’s JWKS endpoint. The token may have been tampered with.
no_emailThe ID token and userinfo endpoint did not contain an email address.
domain_not_allowedThe user’s email domain is not in the allowed domains list for this status page.

Change Tracking

For update operations, the audit log captures field-level diffs:
{
  "changes": {
    "status": { "old": "investigating", "new": "resolved" },
    "severity": { "old": "major", "new": "minor" }
  }
}
This makes it easy to see exactly what changed and who changed it. For authentication events, the metadata field contains contextual information instead of a diff:
{
  "metadata": {
    "provider": "okta",
    "email": "[email protected]",
    "role": "full"
  }
}

Retention

Audit log entries are retained for:
PlanRetention
Team90 days
Enterprise1 year