> This page is for Plattform, version Vorgängerversion.
> 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
> - Vorgängerversion: 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.

# Auditprotokolleinträge für ein Konto abrufen

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

Auditprotokolle mit einigen Möglichkeiten zur Filterung über Abfrageparameter abrufen

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-Datum
- `filters[end_date]` (string, optional) — Ende-ISO-Datum
- `filters[resource_type]` (enum, optional) — Nach Ressourcentyp filtern
  - 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) — Nach Aktivitätstyp filtern
  - 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) — Nach Team-ID filtern
- `filters[project_id]` (string, optional) — Nach Projekt-ID filtern
- `filters[resource_id]` (string, optional) — Nach Ressourcen-ID filtern (Asset-ID, Projekt-ID, Anwender-ID)
- `filters[user_id]` (string, optional) — Nach Anwender-ID filtern
- `filters[ip_address]` (string, optional) — Nach IP-Adresse filtern Dies unterstützt sowohl IPv4 ('1.1.1.1') als auch IPv6 ('2001:db8:3333:4444:5555:6666:7777:8888')
- `page` (integer, optional, default: 1) — Seitenzahl
- `page_size` (integer, optional, default: 50) — Datensätze pro Seite

## 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) — Der API-Client, durch den das Auditereignis ausgelöst wurde. Dieses Feld ist nicht immer befüllt. Wenn der API-Aufruf, der ein Ereignis erzeugt hat, über eine OAuth-App erfolgt ist, sieht er so aus: 'oauth_app/:uuid'. Wenn er über ein Entwickler-Token erfolgt ist, sieht er so aus: 'user_token/:uuid'. Dabei ist die UUID die User-ID, zu der das Token gehört. Hier sind einige Beispiele: - '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) — Die Details zum Ereignis. Das variiert je nach Ereignistyp stark. Es gibt einige Beispiele in den Beispielantworten.
- `id` (double, optional) — Eindeutige Kennung
- `inserted_at` (string, optional)
- `ip_address` (string, optional, nullable) — Die IP-Adresse, die diesem Ereignis zugeordnet ist
- `project_id` (string, optional, nullable) — Die Projekt-ID, in der diese Aktion stattgefunden hat
- `resource_id` (string, optional) — Die ID der referenzierten Ressource
- `resource_type` (enum, optional) — Der Typ der referenzierten Ressource
  - 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) — Die Quelle der Aktion, die einen bestimmten Eintrag im Auditprotokoll erzeugt hat
  - Allowed values: `device`, `internal`, `external`, `unknown`
- `user_id` (string, optional, nullable) — Benutzenden-ID
- `updated_at` (string, optional)

### HttpErrorErrorsItems

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

### AuditEventEventDetails

Die Details zum Ereignis. Das variiert je nach Ereignistyp stark. Es gibt einige Beispiele in den Beispielantworten.

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