Audit Logs
Audit logs record security-relevant and administrative actions performed in your OneCal Team, such as sign-ins, membership changes, sync updates, and API key changes. On this page, we'll look at how to list audit log events and filter them programmatically.
Only API keys belonging to users with the OWNER, ADMIN, or BILLING_ONLY role can access audit logs. Audit events are only recorded for teams with at least two members.
The Audit Log Event model
Properties
- Name
id- Type
- string
- Description
Unique identifier for the audit log event.
- Name
createdAt- Type
- timestamp
- Description
Timestamp of when the action happened.
- Name
category- Type
- enum
- Description
Category of the action. Possible values:
SECURITY,SYNC_CONFIG,BOOKING_LINKS,BOOKING_PAGES,CALENDARS,ACCESS_CONTROL,BILLING,WORKFLOWS,API_KEYS,MCP.
- Name
action- Type
- string
- Description
The action that was performed, for example
LOG_IN,MEMBERSHIP_REMOVED, orSYNC_CONFIG_UPDATED. See Actions for the full list.
- Name
details- Type
- object | null
- Description
Event-specific details. When present,
details.subjectdescribes the entity the action concerns, with atype, an optionalid, and an optional human-readablelabel. The subject is a snapshot taken when the action happened, so it stays meaningful even if the entity is later renamed or deleted.
- Name
actor- Type
- object
- Description
Who performed the action.
actor.kindis one of:user(a team member, withid,name, andemail),system(an automated action such as a webhook or background job), ordeleted(a user who has since been deleted).Some automated events are attributed to the team member they concern rather than to
system, so you can find them by filtering on that member:CALENDAR_CONNECTION_EXPIREDis attributed to the owner of the calendar connection, andSYNC_CONFIG_FAILEDandSYNC_CONFIG_REPAIREDto the owner of the sync.impersonatedByis alwaysnullfor these events.
- Name
impersonatedBy- Type
- object | null
- Description
Set when the action was performed by an administrator impersonating the actor. When
impersonatedBy.maskedisfalse, the impersonator'snameandemailare included. Whenmaskedistrue, the impersonator was a OneCal system administrator or is no longer a member of your team, and no identifying details are returned.
List all audit log events
This endpoint retrieves a paginated list of audit log events for your team, ordered from newest to oldest. All query parameters are optional and can be combined.
Optional query parameters
- Name
page- Type
- integer
- Description
The page number to return. Defaults to
1.
- Name
pageSize- Type
- integer
- Description
The number of events to return per page, between
1and100. Defaults to100.
- Name
category- Type
- enum
- Description
Only return events in this category. Possible values:
SECURITY,SYNC_CONFIG,BOOKING_LINKS,BOOKING_PAGES,CALENDARS,ACCESS_CONTROL,BILLING,WORKFLOWS,API_KEYS,MCP.
- Name
actorUserId- Type
- string
- Description
Only return events performed by this user. You can get user IDs from the memberships endpoint.
- Name
dateFrom- Type
- string
- Description
Only return events that happened on or after this point in time. Accepts an ISO 8601 date (
2026-10-01) or date-time with a timezone offset (2026-10-01T09:00:00Z). A date is interpreted as the start of that day in UTC.
- Name
dateTo- Type
- string
- Description
Only return events that happened on or before this point in time. Accepts the same formats as
dateFrom. A date includes the whole day, up to its end in UTC. Must not be earlier thandateFrom.
Request
curl -G https://app.onecal.io/api/v1/audit-logs \
-H "x-api-key: {apiKey}" \
-d category=ACCESS_CONTROL \
-d dateFrom=2026-10-01 \
-d dateTo=2026-10-31 \
-d pageSize=50 \
-d page=1
Response
{
"pageNumber": 1,
"pageSize": 50,
"total": 2,
"data": [
{
"id": "cm9x2k1q40001l70846gq7a1b",
"createdAt": "2026-10-14T09:12:44.512Z",
"category": "ACCESS_CONTROL",
"action": "MEMBERSHIP_REMOVED",
"details": {
"subject": {
"type": "user",
"id": "cm7f3cfb000000clbc8pk5qtr",
"label": "Jane Smith"
}
},
"actor": {
"kind": "user",
"id": "cm6a1b2c300000clb1x2y3z4w",
"name": "John Doe",
"email": "john@example.com"
},
"impersonatedBy": null
},
{
"id": "cm9x2j8r20000l708ab12cd34",
"createdAt": "2026-10-02T15:03:10.004Z",
"category": "ACCESS_CONTROL",
"action": "INVITATION_CREATED",
"details": {
"subject": {
"type": "invite",
"id": "cm9x2j8qz0000l708zz99yy88",
"label": "jane@example.com"
}
},
"actor": {
"kind": "user",
"id": "cm6a1b2c300000clb1x2y3z4w",
"name": "John Doe",
"email": "john@example.com"
},
"impersonatedBy": { "masked": true }
}
]
}
Actions
The action of an event is one of the following values, grouped by category. New actions may be added over time, so your integration should handle unknown values gracefully.
- Name
SECURITY- Description
LOG_IN,SSO_LOGIN,LOG_OUT,OAUTH_ACCOUNT_LINKED,OAUTH_ACCOUNT_UNLINKED,EMAIL_UPDATED,IMPERSONATION_STARTED,IMPERSONATION_ENDED,ADMIN_MANAGED_ACCOUNT_ENABLED,ADMIN_MANAGED_ACCOUNT_DISABLED,USER_IMPERSONATION_ENABLED,USER_IMPERSONATION_DISABLED
- Name
SYNC_CONFIG- Description
SYNC_CONFIG_CREATED,SYNC_CONFIG_UPDATED,SYNC_CONFIG_DELETED,SYNC_CONFIG_RE_RAN,SYNC_CONFIG_PAUSED,SYNC_CONFIG_UNPAUSED,SYNC_CONFIG_FAILED,SYNC_CONFIG_REPAIRED
- Name
BOOKING_LINKS- Description
BOOKING_LINK_CREATED,BOOKING_LINK_UPDATED,BOOKING_LINK_DELETED
- Name
BOOKING_PAGES- Description
BOOKING_PAGE_CREATED,BOOKING_PAGE_UPDATED
- Name
CALENDARS- Description
CALENDAR_CONNECTED,CALENDAR_DELETED,CALENDAR_DISCONNECTED,CALENDAR_CONNECTION_EXPIRED,CALENDAR_CONNECTION_RECONNECTED,CALENDAR_UPDATED,CALENDAR_EVENT_CREATED,CALENDAR_EVENT_UPDATED,CALENDAR_EVENT_DELETED,PUBLIC_CALENDAR_FEED_CREATED,PUBLIC_CALENDAR_FEED_UPDATED,PUBLIC_CALENDAR_FEED_DELETED
- Name
ACCESS_CONTROL- Description
INVITATION_CREATED,INVITATION_ACCEPTED,INVITATION_DECLINED,INVITATION_REVOKED,MEMBERSHIP_CREATED,MEMBERSHIP_REMOVED,ROLE_UPDATED
- Name
BILLING- Description
PLAN_UPDATED,SUBSCRIPTION_CHANGED,SEAT_ADDED,SEAT_REMOVED
- Name
WORKFLOWS- Description
WORKFLOW_CREATED,WORKFLOW_UPDATED,WORKFLOW_DELETED
- Name
API_KEYS- Description
API_KEY_CREATED,API_KEY_REVOKED
- Name
MCP- Description
MCP_CLIENT_CREATED,MCP_CLIENT_DELETED,MCP_CLIENT_SECRET_CREATED,MCP_CLIENT_SECRET_REVOKED,MCP_REDIRECT_URI_CREATED,MCP_REDIRECT_URI_DELETED