> This page is for Platform, version Legacy.
> For other versions, use one of these documentation indexes:
> - V4 (default): https://next.developer.frame.io/platform/v4/llms.txt
> - V4 Experimental: https://next.developer.frame.io/platform/v4-experimental/llms.txt
> - Legacy: 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 audit log entries for an Account

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

Fetch audit logs with some filtering capabilities via query params

Reference: https://next.developer.frame.io/platform/v2/api-reference/audit-logs/get-account-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

- `filters[start_date]` (string, optional) — Start ISO Date
- `filters[end_date]` (string, optional) — End ISO Date
- `filters[resource_type]` (enum, optional) — Filter by Resource 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`
- `filters[event_type]` (enum, optional) — Filter by Type of Activity
  - Allowed values: `account_locked`, `account_member_created`, `account_member_deleted`, `account_member_updated`, `account_mfa_enforced`, `account_fio_version_migrated`, `account_fio_version_migrated`, `account_ownership_transferred`, `account_restored`, `account_updated`, `label_updated`, `collaborator_added`, `comment_created`, `join_presentation_request_approved`, `join_project_request_approved`, `join_review_link_request_approved`, `join_team_request_approved`, `account_permissions_granted_to_user`, `comment_liked`, `file_uploaded`, `project_permissions_granted_to_account_user_group`, `project_permissions_granted_to_user`, `resource_invite_sent`, `share_viewed`, `transfer_batch_completed`, `user_mfa_enforced`, `workspace_permissions_granted_to_account_user_group`, `workspace_permissions_granted_to_user`, `new_device_login`, `password_changed`, `password_reset_requested`, `pending_account_member_created`, `pending_account_member_deleted`, `pending_team_member_created`, `pending_team_member_deleted`, `project_unarchived`, `push_tokens_added`, `push_tokens_deleted`, `role_added`, `role_removed`, `session_revoked`, `team_created`, `team_creator_updated`, `team_deleted`, `team_lifecycle_policy_updated`, `team_member_created`, `team_member_deleted`, `team_member_reset`, `team_member_updated`, `team_updated`, `anonymous_user_created`, `comment_completed`, `comment_deleted`, `comment_uncompleted`, `comment_updated`, `join_request_accepted`, `join_request_created`, `join_request_declined`, `join_request_deleted`, `join_request_reset`, `pending_reviewer_created`, `pending_reviewer_deleted`, `presentation_created`, `presentation_deleted`, `presentation_updated`, `project_archived`, `project_created`, `project_deleted`, `project_invite_link_created`, `project_invite_link_revoked`, `project_moved`, `project_restored`, `project_updated`, `reviewer_created`, `reviewer_deleted`, `review_link_assets_added`, `review_link_assets_deleted`, `review_link_created`, `review_link_deleted`, `review_link_emailed`, `review_link_updated`, `subscription_cancelled`, `subscription_card_updated`, `subscription_created`, `subscription_line_item_created`, `subscription_line_item_deleted`, `subscription_restored`, `subscription_updated`, `action_created`, `action_deleted`, `action_updated`, `webhook_created`, `webhook_deleted`, `webhook_updated`, `asset_copied`, `asset_created`, `asset_deleted`, `asset_moved`, `asset_restored`, `assets_unversioned`, `asset_updated`, `asset_versioned`, `high_risk_sign_up`, `sbwm_template_created`, `sbwm_template_deleted`, `sbwm_template_updated`, `allowed_domain_created`, `allowed_domain_deleted`, `collaborator_deleted`, `media_deleted`, `asset_metadata_created`, `media_created`, `pending_collaborator_created`, `pending_collaborator_deleted`, `plan_created`, `plan_deleted`, `plan_updated`, `preference_updated`, `asset_archived`, `asset_unarchived`, `project_archive_completed`, `project_unarchive_completed`, `reply_created`
- `filters[team_id]` (string, optional) — Filter by Team ID
- `filters[project_id]` (string, optional) — Filter by Project ID
- `filters[resource_id]` (string, optional) — Filter by resource ID (Asset ID, Project ID, User ID)
- `filters[user_id]` (string, optional) — Filter by User ID
- `filters[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, default: 1) — Page number
- `page_size` (integer, optional, default: 50) — Records per page

## Response

### 200

Succesful Event logs response

- `list of AuditEvent`

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

### AuditEvent

- `account_id` (string, optional, nullable)
- `anonymous_user_id` (string, optional, nullable)
- `client` (string, optional, nullable) — The API client the audit event was triggered by. This will not always be populated. When the API call that produced an event was made via an OAuth app it will look like: `oauth_app/:uuid`, and if it was made via a developer token it will look like: `user_token/:uuid`, with the UUID being the User ID the token belongs to Here are some examples: - `user_token/57823879-e541-49b0-b902-c43794c4400c` - `oauth_app/80ccf0bb-ae91-49c4-8aec-8f6238c14947` - `web/2024-06-10-18-15` - `pipeline-media-warden/cbd0061f6f190489e8af3137b8707b33f498f53f` - `null`
- `event_type` (enum, optional)
  - Allowed values: `account_locked`, `account_member_created`, `account_member_deleted`, `account_member_updated`, `account_mfa_enforced`, `account_fio_version_migrated`, `account_fio_version_migrated`, `account_ownership_transferred`, `account_restored`, `account_updated`, `label_updated`, `collaborator_added`, `comment_created`, `email_address_changed`, `email_confirmed`, `google_auth_disabled`, `join_presentation_request_approved`, `join_project_request_approved`, `join_review_link_request_approved`, `join_team_request_approved`, `login_factor_created`, `login_factor_validated`, `account_permissions_granted_to_user`, `comment_liked`, `email_change_confirmation_requested`, `file_uploaded`, `google_auth_enabled`, `new_user_email_confirmation_requested`, `project_permissions_granted_to_account_user_group`, `project_permissions_granted_to_user`, `resource_invite_sent`, `share_viewed`, `transfer_batch_completed`, `user_mfa_enforced`, `workspace_permissions_granted_to_account_user_group`, `workspace_permissions_granted_to_user`, `new_device_login`, `password_changed`, `password_reset_requested`, `pending_account_member_created`, `pending_account_member_deleted`, `pending_team_member_created`, `pending_team_member_deleted`, `project_unarchived`, `push_tokens_added`, `push_tokens_deleted`, `role_added`, `role_removed`, `session_revoked`, `team_created`, `team_creator_updated`, `team_deleted`, `team_lifecycle_policy_updated`, `team_member_created`, `team_member_deleted`, `team_member_reset`, `team_member_updated`, `team_updated`, `user_deactivated`, `user_login`, `user_login_attempt`, `user_reactivated`, `user_updated`, `anonymous_user_created`, `comment_completed`, `comment_deleted`, `comment_uncompleted`, `comment_updated`, `join_request_accepted`, `join_request_created`, `join_request_declined`, `join_request_deleted`, `join_request_reset`, `pending_reviewer_created`, `pending_reviewer_deleted`, `presentation_created`, `presentation_deleted`, `presentation_updated`, `project_archived`, `project_created`, `project_deleted`, `project_invite_link_created`, `project_invite_link_revoked`, `project_moved`, `project_restored`, `project_updated`, `reviewer_created`, `reviewer_deleted`, `review_link_assets_added`, `review_link_assets_deleted`, `review_link_created`, `review_link_deleted`, `review_link_emailed`, `review_link_updated`, `subscription_cancelled`, `subscription_card_updated`, `subscription_created`, `subscription_line_item_created`, `subscription_line_item_deleted`, `subscription_restored`, `subscription_updated`, `user_signup`, `action_created`, `action_deleted`, `action_updated`, `oauth_app_created`, `oauth_app_deleted`, `oauth_app_updated`, `oauth_app_enabled`, `oauth_app_disabled`, `user_token_created`, `user_token_deleted`, `user_token_disabled`, `user_token_enabled`, `user_token_updated`, `webhook_created`, `webhook_deleted`, `webhook_updated`, `asset_copied`, `asset_created`, `asset_deleted`, `asset_moved`, `asset_restored`, `assets_unversioned`, `asset_updated`, `asset_versioned`, `high_risk_sign_up`, `sbwm_template_created`, `sbwm_template_deleted`, `sbwm_template_updated`, `allowed_domain_created`, `allowed_domain_deleted`, `collaborator_deleted`, `media_deleted`, `asset_metadata_created`, `media_created`, `pending_collaborator_created`, `pending_collaborator_deleted`, `plan_created`, `plan_deleted`, `plan_updated`, `preference_updated`, `asset_archived`, `asset_unarchived`, `project_archive_completed`, `project_unarchive_completed`, `reply_created`
- `event_details` (AuditEventEventDetails, optional) — The details for the event. This varies quite a bit from one type of event to another but there are some examples in the example responses.
- `id` (double, optional) — Unique identifier
- `inserted_at` (string, optional)
- `ip_address` (string, optional, nullable) — The IP address associated with this event
- `project_id` (string, optional, nullable) — The Project ID that this action occured in
- `resource_id` (string, optional) — The ID of the referenced resource
- `resource_type` (enum, optional) — The type of the referenced resource
  - Allowed values: `account`, `account_member`, `action`, `anonymous_user`, `asset`, `comment_impression`, `comment`, `folder`, `join_request`, `login_factor`, `oauth_app`, `pending_account_member`, `pending_reviewer`, `pending_team_member`, `presentation`, `project`, `project_invite_link`, `reviewer`, `review_link`, `reset_token`, `share`, `subscription`, `subscription_line_item`, `team`, `team_member`, `user`, `user_token`, `transfer_batch`, `version_stack`, `webhook`
- `team_id` (string, optional, nullable) — Team ID
- `source` (enum, optional) — The Source of the action that produced a given audit log entry
  - Allowed values: `device`, `internal`, `external`, `unknown`
- `user_id` (string, optional, nullable) — User ID
- `updated_at` (string, optional)

### HttpErrorErrorsItems

- `code` (integer, optional)
- `detail` (string, optional)
- `status` (integer, optional)
- `title` (string, optional)

### AuditEventEventDetails

The details for the event. This varies quite a bit from one type of event to another but there are some examples in the example responses.

## Examples

### Asset Created

**Response**

```json
[
  {
    "anonymous_user_id": null,
    "client": null,
    "event_type": "asset_created",
    "event_details": {
      "account_id": "6bdcb4d9-9a2e-4548-a765-ae6b27a6c024",
      "ext": ".png",
      "filesize": 170144,
      "filetype": "image/png",
      "index": -17,
      "name": "Sample asset.png",
      "parent_id": "ba6cd478-5ca3-4c1a-2186-82cdaecb3e6c",
      "private": false,
      "project_id": "e9794c94-16a4-4e33-b4e6-cdd9757d0e24",
      "sm_refresh_at": "2024-06-28T21:42:54Z",
      "uploaded_at": "2024-06-28T21:42:54.437202Z"
    },
    "id": 1944044771,
    "inserted_at": "2024-06-28T21:42:54.516273Z",
    "ip_address": "255.255.255.255",
    "project_id": "j2794c94-16a4-4e33-b4e6-cdd9757d0e24",
    "resource_id": "92je2963-24ae-4cd1-be13-19a93c92eb6e",
    "resource_type": "asset",
    "team_id": "5j4d6420-fa8d-4e85-af05-0f26785c54f5",
    "source": "unknown",
    "user_id": "b72b57e0-79f2-4bc7-9b70-99fbc175175c",
    "updated_at": "2024-06-28T21:42:54.516273Z"
  }
]
```

**SDK Code**

```python Asset Created
import requests

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

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

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript Asset Created
const url = 'https://api.frame.io/v2/accounts/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events';
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 Asset Created
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

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

	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 Asset Created
require 'uri'
require 'net/http'

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

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 Asset Created
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/events")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php Asset Created
<?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/events', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp Asset Created
using RestSharp;

var client = new RestClient("https://api.frame.io/v2/accounts/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift Asset Created
import Foundation

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api.frame.io/v2/accounts/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events")! 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()
```

### Asset Moved

**Response**

```json
[
  {
    "anonymous_user_id": null,
    "client": null,
    "event_type": "asset_moved",
    "event_details": {
      "new_parent_id": "66c38214-390f-4609-9522-fd858dac8569",
      "old_parent_id": "aasfd478-5ca3-4c1a-a186-82cdaecb3e6c"
    },
    "id": 1943856518,
    "inserted_at": "2024-06-28T21:44:54.091046Z",
    "ip_address": null,
    "project_id": "e97s7c94-16a4-4e33-b4e6-cdd9757d0e24",
    "resource_id": "c99e2963-24ae-4cd1-be13-19a93c92eb6e",
    "resource_type": "asset",
    "team_id": "b44d1220-fa8d-4e85-af05-0f26785c54f5",
    "source": "unknown",
    "user_id": "eefbf97e0-79f2-4bc7-9b70-99fbc175175c",
    "updated_at": "2024-06-28T21:44:54.091046Z"
  }
]
```

**SDK Code**

```python Asset Moved
import requests

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

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

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript Asset Moved
const url = 'https://api.frame.io/v2/accounts/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events';
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 Asset Moved
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

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

	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 Asset Moved
require 'uri'
require 'net/http'

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

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 Asset Moved
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/events")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php Asset Moved
<?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/events', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp Asset Moved
using RestSharp;

var client = new RestClient("https://api.frame.io/v2/accounts/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift Asset Moved
import Foundation

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api.frame.io/v2/accounts/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events")! 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()
```

### Review Link Updated

**Response**

```json
[
  {
    "anonymous_user_id": null,
    "client": "web/2024-06-24-18-11",
    "event_type": "review_link_updated",
    "event_details": {
      "password": "pas"
    },
    "id": 1929542681,
    "inserted_at": "2024-06-27T09:43:37.358532Z",
    "ip_address": "97.120.111.2",
    "project_id": "e9791f94-16a4-4e33-b4e6-cdd9757d0e24",
    "resource_id": "a57eb65f-ff57-4099-ac61-b2f0a13365c0",
    "resource_type": "review_link",
    "team_id": "b4td6420-fa8d-4e85-af05-0f26785c54f5",
    "source": "internal",
    "user_id": "ezrb57e0-79f2-4bc7-9b70-99fbc125175c",
    "updated_at": "2024-06-27T09:43:37.358532Z"
  }
]
```

**SDK Code**

```python Review Link Updated
import requests

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

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

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript Review Link Updated
const url = 'https://api.frame.io/v2/accounts/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events';
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 Review Link Updated
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

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

	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 Review Link Updated
require 'uri'
require 'net/http'

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

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 Review Link Updated
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/events")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php Review Link Updated
<?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/events', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp Review Link Updated
using RestSharp;

var client = new RestClient("https://api.frame.io/v2/accounts/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift Review Link Updated
import Foundation

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api.frame.io/v2/accounts/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events")! 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()
```

### User Login Attempt

**Response**

```json
[
  {
    "anonymous_user_id": null,
    "client": "auth",
    "event_type": "user_login_attempt",
    "event_details": {
      "strikes": 1
    },
    "id": 1740327297,
    "inserted_at": "2024-06-04T21:29:37.320025Z",
    "ip_address": "172.250.231.232",
    "project_id": null,
    "resource_id": "zrfb57e0-9b70-79f2-4bc7-99fbc175175c",
    "resource_type": "user",
    "team_id": null,
    "source": "unknown",
    "user_id": "zrfb57e0-9b70-79f2-4bc7-99fbc175175c",
    "updated_at": "2024-06-04T21:29:37.320025Z"
  }
]
```

**SDK Code**

```python User Login Attempt
import requests

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

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

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript User Login Attempt
const url = 'https://api.frame.io/v2/accounts/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events';
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 User Login Attempt
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

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

	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 User Login Attempt
require 'uri'
require 'net/http'

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

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 User Login Attempt
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/events")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php User Login Attempt
<?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/events', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp User Login Attempt
using RestSharp;

var client = new RestClient("https://api.frame.io/v2/accounts/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift User Login Attempt
import Foundation

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api.frame.io/v2/accounts/erfb57e0-79f2-4bc7-9b70-99fbc175175c/events")! 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()
```