For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Developer Tools
CommunityContact UsConsole
DocsAPI Reference
DocsAPI Reference
  • Getting Started
    • Welcome to Frame.io V2 API
    • Key Concepts
    • Authentication
  • Migration
    • V2 to V4 Migration Guide
  • OAuth 2 Applications
    • OAuth 2 Code Authorization Flow
    • Building an OAuth2 App
    • Refreshing OAuth 2 Tokens
  • Workflows - Assets
    • Reading the File Tree
    • Uploading Assets
    • Manage Version Stacks
    • Working with Annotations
    • Search for Assets
  • Workflows - Projects
    • Working with Review Links
    • Gather All Comments from a Project
  • Workflows - Admin
    • User Management
    • Working with Audit Logs
  • Automations - Webhooks
    • Webhooks Overview
    • Comment Workflows with Zapier
  • Automations - Zapier
    • Zapier Basics
    • Frame.io Resources in Zapier
    • Upload Assets to Frame.io using Zapier
    • Webhooks in Zapier
  • Custom Actions
    • Custom Actions Overview
    • Three Ways to Deploy Custom Actions
    • Deploy Custom Actions to Zapier
  • Other Tools
    • Using ngrok
    • Using Glitch
  • Troubleshooting
    • API Error Codes
    • Rate Limits
    • Browser Support
  • Deprecated
    • How to - Authorize (Hardware)
    • How to - Authorize (Application)
    • How to - Manage Auth (Hardware)
    • How to - Manage Auth (Application)

© 2026 Adobe Inc. All rights reserved.

TermsPrivacyDo not sell or share my personal information
Developer-friendly docs for your API
Logo
Developer Tools
CommunityContact UsConsole
On this page
  • Overview
  • Scope and permissions
  • Responses
  • Filters
  • GET + query string
  • Key filter types
  • Item Types and Actions
  • Filter examples
  • Date ranges
  • Date range examples
Workflows - Admin

Working with Audit Logs

Was this page helpful?
Previous

Webhooks Overview

Next

Overview

Frame.io supports and maintains Audit Logs for the vast majority of activities taken in its applications. This includes both basic CRUD on core resources, and some special abstractions (e.g. AssetVersioned).

Audit Logs truncate after 30 days

Frame.io Audit Logs are available via API for a rolling window of 30 days, after which they are moved into cold storage. Therefore, if you want to maintain a long history of Frame.io events, please ensure you’re storing historical log data independently.

Scope and permissions

Only Account Admins may access the Audit Logs for an Account, and all calls to the Audit Logs endpoint must be scoped to an account_id as follows:

GET https://api.frame.io/v2/accounts/:id/audit_logs

Responses

Audit Log responses all have a similar format:

1{
2 "_type": "audit",
3 "account_id": "<account-id>",
4 "action": "<ActionTaken>",
5 "actor": {
6 "_type": "user",
7 "id": "<user-id>",
8 },
9 "actor_id": "<user-id>",
10 "id": "<audit-id>",
11 "inserted_at": "<ISO-8601-datetime>",
12 "item_id": "<resource-id>",
13 "item_type": "<ResourceType>",
14 "resource": {...},
15 "team_id": "<team-id>",
16 "updated_at": "<ISO-8601-datetime>"
17}
Don't forget to paginate!

Audit Log response data can be fairly verbose, so make sure you’re familiar with pagination!

Filters

Audit Logs support a variety of filters, including date ranges. Unlike Frame.io’s Search endpoints, filters can be sent only as GET query string params.

Filters all follow the same formatting:

GET + query string

1GET
2https://api.frame.io/accounts/:id/audit_logs?filter[filter_type1]=value1&filter[filter_type2]=value2
One value per filter type

Currently, Audit Logs support one value per filter type. If you supply two filters of the same type (e.g. filter[action]=ActionOne&filter[action]=ActionTwo), the second filter will take precedence.

Key filter types

The key filter types for culling and navigating Audit Logs are:

Filter typeDescriptionExample values
item_typeFilters for all resources of a single type.Presentation, Comment, ReviewLink, Asset
item_idFilters for a single, specific resource, e.g. an Asset or Presentation.<asset-id>, <presentation-id>
actionFilters for a single Action, usually associated with an item_typeProjectCreated, AssetVersioned, CommentDeleted
actor_idFilters for the ID of a specific User (actor).<user-id>
team_idFilters for activities associated with a single Team. This filter is useful only on teams that have multiple Teams.<team-id>
inserted_atFilters for Audit events occurring before or after a specific datetime. Must be ISO-8601 format, UTC.2022-08-25T00:00:00Z

Item Types and Actions

ResourceActions
AccountAccountCreated, AccountUpdate, AccountLocked
AssetAssetCopied, AssetCreated, AssetDeleted, AssetUpdated, AssetVersioned, AssetUnversioned, AssetLabelUpdated, AssetMoved, AssetPreserved, AssetPrivatized, AssetPublicized, AssetRestored
CollaboratorCollaboratorCreated, CollaboratorDeleted
CommentCommentCreated, CommentCompleted, CommentDeleted, CommentLiked, CommentUncompleted, CommentUnliked, CommentUpdated, ReplyCreated
PresentationPresentationCreated, PresentationDeleted, PresentationUpdated
ProjectProjectCreated, ProjectDeleted, ProjectMoved, ProjectRestored, ProjectUpdated
ReviewLinkReviewLinkCreated, ReviewLinkDeleted, ReviewLinkUpdated
TeamTeamCreated, TeamUpdated, TeamDeleted
TeamMemberTeamMemberCreated, TeamMemberAccepted, TeamMemberDeclined, TeamMemberRemoved, TeamMemberUpdated

Filter examples

Filters all follow a similar format, as outlined above. Below are a handful of examples target at specific use cases that can help you get started.

ScenarioQuery string
Actions taken by a single User.?filter[actor_id]=<user-id>
All activity on a specific Presentation.?filter[item_id]=<presentation-id>
Comments left by a User.?filter[action]=CommentCreated&filter[actor_id]=<user-id>
All Review Link activity on a Team.?filter[item_type]=ReviewLink&filter[team_id]=<team-id>

Date ranges

Date ranges are a slightly special case, in that it’s necessary to specify both the inserted_at datetime value, and the operation to apply to that datetime.

Accordingly, date range queries will always have two filter elements, each of which will itself be nested beside an [inserted_at] parameter.

Supported operations include:

  • gt: greater than
  • gte: greater than or equal to
  • lt: less than
  • lte: less than or equal to

Date range examples

ScenarioQuery string
All Audit Log records from a date.?filter[inserted_at][op]=gt&filter[inserted_at][value]=2019-03-25T00:00:00Z
All Assets uploaded by a specific User up to a date.?filter[inserted_at][op]=lt&filter[inserted_at][value]=2019-03-25T00:00:00Z&filter[actor_id]=<user-id>&filter[action]=AssetCreated