> This page is for 平台, version 旧版.
> For other versions, use one of these documentation indexes:
> - V4 (default): https://next.developer.frame.io/platform/v4/llms.txt
> - V4 实验版: https://next.developer.frame.io/platform/v4-experimental/llms.txt
> - 旧版: https://next.developer.frame.io/platform/v2/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://next.developer.frame.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://next.developer.frame.io/_mcp/server.

# （旧版）获取帐户的审核日志

GET https://api.frame.io/v2/accounts/{account_id}/audit_logs

通过查询参数提供部分筛选功能，获取审核日志

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 <token>`, where token is your auth token.

## Request

### Path parameters

- `account_id` (string, required) — Account ID

### Query parameters

- `filter[item_id]` (string, optional) — 按项目 ID 筛选（资产 ID、项目 ID、用户 ID）
- `filter[inserted_at][op]` (enum, optional) — 使用逻辑运算符按日志日期时间筛选
  - Allowed values: `eq`, `gt`, `lt`, `gte`, `lte`
- `filter[inserted_at][value]` (string, optional) — ISO 日期时间
- `filter[item_type]` (enum, optional) — 按项目类型筛选
  - 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) — 按操作筛选
  - 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) — 按操作者 ID 筛选
- `filter[team_id]` (string, optional) — 按团队 ID 筛选
- `filter[ip_address]` (string, optional) — 按 IP 地址筛选 同时支持 IPv4 (`1.1.1.1`) 和 IPv6 (`2001:db8:3333:4444:5555:6666:7777:8888`)
- `page` (integer, optional) — 页码
- `page_size` (integer, optional, default: 50) — 每页记录数

## 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

用户模型

- `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

**Response**

```json
[
  {
    "account_id": "string",
    "action": "string",
    "actor": {
      "_type": "string",
      "account_id": "string",
      "avatar_color": "string",
      "digest_frequency": "string",
      "email": "string",
      "first_login_at": "string",
      "from_adobe": true,
      "from_google": true,
      "highest_account_role": "string",
      "id": "string",
      "image_128": "string",
      "image_256": "string",
      "image_32": "string",
      "image_64": "string",
      "inserted_at": "string",
      "integrations": [
        "string"
      ],
      "joined_via": "string",
      "last_seen": "string",
      "mfa_enforced_at": "string",
      "name": "string",
      "next_digest_date": "string",
      "profile_image": "string",
      "roles": {
        "admin": true,
        "id": "string",
        "sales": true,
        "service_desk": true,
        "support": true
      },
      "timezone_value": "string",
      "updated_at": "string",
      "upload_url": "string",
      "user_default_color": "string",
      "user_hash": "string"
    },
    "actor_id": "string",
    "application_id": "string",
    "inserted_at": "2024-01-15T09:30:00Z",
    "ip_address": "string",
    "item_id": "string",
    "item_type": "string",
    "request_id": "string",
    "resource": {},
    "team_id": "string",
    "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"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, 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 <token>'}};

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"
	"net/http"
	"io"
)

func main() {

	url := "https://api.frame.io/v2/accounts/erfb57e0-79f2-4bc7-9b70-99fbc175175c/audit_logs"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	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 <token>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.frame.io/v2/accounts/erfb57e0-79f2-4bc7-9b70-99fbc175175c/audit_logs")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.frame.io/v2/accounts/erfb57e0-79f2-4bc7-9b70-99fbc175175c/audit_logs', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

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 <token>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "Bearer <token>"]

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

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()
```