> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://next.developer.frame.io/platform/v2/api-reference/audit-logs/get-audit-logs/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://next.developer.frame.io/_mcp/server. # (Legacy) Get Audit Logs for an Account GET https://api.frame.io/v2/accounts/{account_id}/audit_logs Fetch audit logs with some filtering capabilities via query params Reference: https://next.developer.frame.io/platform/v2/api-reference/audit-logs/get-audit-logs ## Authentication - `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer `, where token is your auth token. ## Request ### Path parameters - `account_id` (string, required) — Account ID ### Query parameters - `filter[item_id]` (string, optional) — Filter by Item ID (Asset ID, Project ID, User ID) - `filter[inserted_at][op]` (enum, optional) — Filter by log datetime using logical operators - Allowed values: `eq`, `gt`, `lt`, `gte`, `lte` - `filter[inserted_at][value]` (string, optional) — ISO Datetime - `filter[item_type]` (enum, optional) — Filter by Item Type - Allowed values: `asset`, `review_link`, `presentation`, `collaborator`, `pending_collaborator`, `comment`, `review_link_item`, `account`, `account_member`, `pending_account_member`, `subscription`, `subscription_line_item`, `team`, `team_member`, `pending_team_member`, `user`, `action`, `oauth_app`, `user_token`, `webhook`, `file`, `folder`, `version_stack`, `like`, `read` - `filter[action]` (enum, optional) — Filter by Action - Allowed values: `AssetDeleted`, `PresentationUpdated`, `AssetMoved`, `AssetVersioned`, `AccountDelinquent`, `CollaboratorDeleted`, `PushTokensAdded`, `AccountPendingUserRemoved`, `JoinRequestAccepted`, `SubscriptionRestored`, `EmailChanged`, `AccountMemberDeleted`, `AccountMemberUpdated`, `RoleAdded`, `ApplicationCreated`, `CommentCreated`, `AssetUpdated`, `CommentUpdated`, `CommentDeleted`, `AssetArchived`, `ProjectUpdated`, `TeamUpdated`, `ReviewLinkEmailed`, `SBWMTemplateDeleted`, `PendingTeamMemberCreated`, `PasswordResetRequested`, `ProjectInviteLinkCreated`, `AccountPendingCollaboratorsRemoved`, `GoogleAuthDisabled`, `TeamDeleted`, `ActionDeleted`, `ProjectCreated`, `PresentationCreated`, `AssetCopied`, `PreferenceUpdated`, `AccountCollaboratorsRemoved`, `PendingCollaboratorDeleted`, `ProjectMoved`, `ReviewerDeleted`, `PendingTeamMemberDeleted`, `ActionUpdated`, `AssetCreated`, `ReviewLinkUpdated`, `CollaboratorCreated`, `AssetsUnversioned`, `EmailConfirmed`, `TeamCreated`, `AccountUpdated`, `AccountRestored`, `JoinRequestCreated`, `SubscriptionCardUpdated`, `AccountLocked`, `TeamMemberUpdated`, `JoinRequestReset`, `WebhookDeleted`, `ProjectInviteLinksRevoked`, `WebhookCreated`, `SubscriptionLineItemDeleted`, `ApplicationUpdated`, `MetadataCreated`, `UserLoginAttempt`, `ReviewLinkAssetsAdded`, `ProjectDeleted`, `ProjectArchiveCompleted`, `AccountMemberCreated`, `OauthAppCreated`, `SessionRevoked`, `SubscriptionLineItemCreated`, `UserTokenDeleted`, `PendingReviewerDeleted`, `ActionCreated`, `TeamMemberReset`, `LoginFactorCreated`, `JoinRequestDeleted`, `UserTokenDisabled`, `AssetUnarchived`, `AssetLabelUpdated`, `SubscriptionCreated`, `PendingReviewerCreated`, `TeamMemberRemoved`, `PushTokensDeleted`, `ProjectUnarchived`, `SubscriptionCancelled`, `ProjectUnarchiveCompleted`, `ProjectRestored`, `WebhookUpdated`, `ApplicationDeleted`, `AssetHardDeleted`, `OauthAppDeleted`, `AccountMFAEnforced`, `AccountOwnershipTransferred`, `CommentCompleted`, `ReviewerCreated`, `UserLogin`, `SubscriptionUpdated`, `AssetRestored`, `CommentUncompleted`, `ProjectArchived`, `JoinRequestDeclined`, `PendingAccountMemberCreated`, `SBWMTemplateCreated`, `TeamCreatorUpdated`, `TeamLifecyclePolicyUpdated`, `SBWMTemplateUpdated`, `LoginFactorValidated`, `ReviewLinkCreated`, `TeamMemberCreated`, `ReplyCreated`, `UserUpdated`, `PendingCollaboratorCreated`, `AnonymousUserCreated`, `PasswordChange`, `ReviewLinkDeleted`, `AccountUserRemoved`, `UserTokenCreated`, `PresentationDeleted`, `UserTokenUpdated`, `OauthAppUpdated`, `UserTokenEnabled` - `filter[actor_id]` (string, optional) — Filter by Actor ID - `filter[team_id]` (string, optional) — Filter by Team ID - `filter[ip_address]` (string, optional) — Filter by IP Address This supports both IPv4 (`1.1.1.1`) and IPv6 (`2001:db8:3333:4444:5555:6666:7777:8888`) - `page` (integer, optional) — Page number - `page_size` (integer, optional, default: 50) — Records per page ## Response ### 200 Audit logs list response - `list of Audit` ## Errors ### 401 Unauthorized Error Unauthorized response - `code` (integer, optional) - `errors` (list of HttpErrorErrorsItems, optional) - `message` (string, optional) ### 404 Not Found Error Not Found response - `code` (integer, optional) - `errors` (list of HttpErrorErrorsItems, optional) - `message` (string, optional) ## Types ### Audit - `account_id` (string, optional) - `action` (string, optional) - `actor` (AuditActor, optional) - `actor_id` (string, optional) - `application_id` (string, optional) - `inserted_at` (string, optional) - `ip_address` (string, optional) - `item_id` (string, optional) - `item_type` (string, optional) - `request_id` (string, optional) - `resource` (AuditResource, optional) - `team_id` (string, optional) - `updated_at` (string, optional) ### HttpErrorErrorsItems - `code` (integer, optional) - `detail` (string, optional) - `status` (integer, optional) - `title` (string, optional) ### AuditActor ### AuditResource ### User User model - `digest_frequency` (string, optional) - `features_seen` (any, optional) - `profile_image_original` (any, optional) - `image_32` (string, optional) - `image_128` (string, optional) - `from_google` (boolean, optional) - `mfa_enforced_at` (string, optional) - `email` (string, optional) - `bio` (any, optional) - `name` (string, optional) - `image_64` (string, optional) - `timezone_value` (string, optional) - `account_id` (string, optional) - `updated_at` (string, optional) - `image_256` (string, optional) - `_type` (string, optional) - `user_hash` (string, optional) - `context` (any, optional) - `upload_url` (string, optional) - `location` (any, optional) - `phone` (any, optional) - `deleted_at` (any, optional) - `profile_image` (string, optional) - `first_login_at` (string, optional) - `joined_via` (string, optional) - `email_confirm_by` (any, optional) - `id` (string, optional) - `next_digest_date` (string, optional) - `email_preferences` (any, optional) - `last_seen` (string, optional) - `inserted_at` (string, optional) - `from_adobe` (boolean, optional) - `avatar_color` (string, optional) - `highest_account_role` (string, optional) - `integrations` (list of string, optional) - `roles` (UserRoles, optional) - `user_default_color` (string, optional) ### AnonymousUser - `deleted_at` (string, optional) - `email` (string, optional) - `id` (string, optional) - `inserted_at` (string, optional) - `name` (string, optional) - `notification_preferences` (ProjectPreferences, optional) - `updated_at` (string, optional) - `user_default_color` (string, optional) ### UserRoles - `admin` (boolean, optional) - `id` (string, optional) - `sales` (boolean, optional) - `support` (boolean, optional) - `service_desk` (boolean, optional) ### ProjectPreferences - `collaborator_can_download` (boolean, optional) - `collaborator_can_invite` (boolean, optional) - `collaborator_can_share` (boolean, optional) - `notify_on_new_asset` (boolean, optional) - `notify_on_new_collaborator` (boolean, optional) - `notify_on_new_comment` (boolean, optional) - `notify_on_updated_label` (boolean, optional) - `notify_slack` (boolean, optional) ## Examples **Request** ```json {} ``` **Response** ```json [ { "account_id": "erfb57e0-79f2-4bc7-9b70-99fbc175175c", "action": "AssetUpdated", "actor": { "_type": "User", "account_id": "erfb57e0-79f2-4bc7-9b70-99fbc175175c", "avatar_color": "#4A90E2", "digest_frequency": "weekly", "email": "jane.doe@example.com", "first_login_at": "2022-05-15T09:00:00Z", "from_adobe": false, "from_google": true, "highest_account_role": "admin", "id": "d4e5f6a7-b8c9-4d0e-9f1a-2b3c4d5e6f7g", "image_128": "https://cdn.frame.io/images/users/1234/image_128.png", "image_256": "https://cdn.frame.io/images/users/1234/image_256.png", "image_32": "https://cdn.frame.io/images/users/1234/image_32.png", "image_64": "https://cdn.frame.io/images/users/1234/image_64.png", "inserted_at": "2022-05-15T09:00:00Z", "integrations": [ "slack", "dropbox" ], "joined_via": "google_oauth", "last_seen": "2024-01-14T18:45:00Z", "mfa_enforced_at": "2023-11-01T08:00:00Z", "name": "Jane Doe", "next_digest_date": "2024-01-22T00:00:00Z", "profile_image": "https://cdn.frame.io/images/users/1234/profile_image.png", "roles": { "admin": true, "id": "role-1234", "sales": false, "service_desk": false, "support": true }, "timezone_value": "America/New_York", "updated_at": "2024-01-10T12:00:00Z", "upload_url": "https://upload.frame.io/users/1234", "user_default_color": "#FF5733", "user_hash": "a1b2c3d4e5f6g7h8i9j0" }, "actor_id": "d4e5f6a7-b8c9-4d0e-9f1a-2b3c4d5e6f7g", "application_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "inserted_at": "2024-01-15T09:30:00Z", "ip_address": "192.168.1.100", "item_id": "f1e2d3c4-b5a6-7890-1234-56789abcdef0", "item_type": "asset", "request_id": "123e4567-e89b-12d3-a456-426614174000", "resource": { "name": "Project Launch Video", "status": "updated", "version": 3 }, "team_id": "9f8e7d6c-5b4a-3210-9876-54321fedcba0", "updated_at": "2024-01-15T09:30:00Z" } ] ``` **SDK Code** ```python import requests url = "https://api.frame.io/v2/accounts/erfb57e0-79f2-4bc7-9b70-99fbc175175c/audit_logs" payload = {} headers = { "Authorization": "Bearer ", "Content-Type": "application/json" } response = requests.get(url, json=payload, headers=headers) print(response.json()) ``` ```javascript const url = 'https://api.frame.io/v2/accounts/erfb57e0-79f2-4bc7-9b70-99fbc175175c/audit_logs'; const options = { method: 'GET', headers: {Authorization: 'Bearer ', 'Content-Type': 'application/json'}, body: '{}' }; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api.frame.io/v2/accounts/erfb57e0-79f2-4bc7-9b70-99fbc175175c/audit_logs" payload := strings.NewReader("{}") req, _ := http.NewRequest("GET", url, payload) req.Header.Add("Authorization", "Bearer ") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://api.frame.io/v2/accounts/erfb57e0-79f2-4bc7-9b70-99fbc175175c/audit_logs") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["Authorization"] = 'Bearer ' request["Content-Type"] = 'application/json' request.body = "{}" response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://api.frame.io/v2/accounts/erfb57e0-79f2-4bc7-9b70-99fbc175175c/audit_logs") .header("Authorization", "Bearer ") .header("Content-Type", "application/json") .body("{}") .asString(); ``` ```php request('GET', 'https://api.frame.io/v2/accounts/erfb57e0-79f2-4bc7-9b70-99fbc175175c/audit_logs', [ 'body' => '{}', 'headers' => [ 'Authorization' => 'Bearer ', 'Content-Type' => 'application/json', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://api.frame.io/v2/accounts/erfb57e0-79f2-4bc7-9b70-99fbc175175c/audit_logs"); var request = new RestRequest(Method.GET); request.AddHeader("Authorization", "Bearer "); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = [ "Authorization": "Bearer ", "Content-Type": "application/json" ] let parameters = [] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://api.frame.io/v2/accounts/erfb57e0-79f2-4bc7-9b70-99fbc175175c/audit_logs")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```