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

# 通过 ID 获取 Webhook

GET https://api.frame.io/v2/hooks/{hook_id}

获取指定 Webhook 的信息

Reference: https://next.developer.frame.io/platform/v2/api-reference/webhooks/get-webhook

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Request

### Path parameters

- `hook_id` (string, required) — Webhook ID

## Response

### 200

Webhook success response

- `account_id` (string, optional)
- `active` (boolean, optional)
- `app_id` (string, optional)
- `deleted_at` (string, optional)
- `events` (list of enum, optional)
  - Allowed values: `project.created`, `project.updated`, `project.deleted`, `asset.created`, `asset.copied`, `asset.updated`, `asset.deleted`, `asset.ready`, `asset.versioned`, `action.executed`, `interaction.executed`, `asset.label.updated`, `comment.created`, `comment.updated`, `comment.deleted`, `comment.completed`, `comment.uncompleted`, `reviewlink.created`, `collaborator.created`, `collaborator.deleted`, `teammember.created`, `teammember.deleted`
- `id` (string, optional)
- `inserted_at` (string, optional)
- `name` (string, optional)
- `project_id` (string, optional)
- `secret` (string, optional)
- `team` (Team, optional)
- `team_id` (string, optional)
- `updated_at` (string, optional)
- `url` (string, optional)

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

### Team

- `account_id` (string, optional)
- `disable_sbwm_internally` (boolean, optional, default: false)
- `creator_id` (string, optional)
- `storage` (integer, optional, default: 0)
- `default_font_color` (string, optional)
- `access` (enum, optional)
  - Allowed values: `private`, `public`, `restricted`
- `font_color` (string, optional)
- `user_role` (TeamUserRole, optional)
- `file_count` (integer, optional, default: 0)
- `default_session_watermark_template` (SessionWatermarkTemplate, optional)
- `link` (string, optional)
- `asset_lifecycle_policy` (integer, optional)
- `upload_url` (string, optional)
- `admin_only_actions` (AdminOnlyAction, optional)
- `deleted_at` (string, optional)
- `default_background_color` (string, optional)
- `storage_limit` (integer, optional)
- `location` (string, optional)
- `name` (string, optional)
- `default_color` (string, optional)
- `slack_webhook` (TeamSlackWebhook, optional)
- `image_64` (string, optional)
- `archived_storage` (integer, optional, default: 0)
- `image_128` (string, optional)
- `solo` (boolean, optional, default: false)
- `account` (Account, optional)
- `image_32` (string, optional)
- `inserted_at` (string, optional)
- `updated_at` (string, optional)
- `project_count` (integer, optional, default: 0)
- `duration` (integer, optional, default: 0)
- `team_image` (string, optional)
- `collaborator_count` (integer, optional, default: 0)
- `bio` (string, optional)
- `color` (string, optional)
- `email_branding` (EmailBranding, optional)
- `folder_count` (integer, optional, default: 0)
- `dark_theme` (boolean, optional, default: false)
- `default_session_watermark_template_id` (string, optional)
- `session_watermark_templates` (list of SessionWatermarkTemplate, optional)
- `id` (string, optional)
- `member_limit` (integer, optional)
- `frames` (integer, optional, default: 0)
- `member_count` (integer, optional, default: 0)
- `image_256` (string, optional)
- `background_color` (string, optional)

### HttpErrorErrorsItems

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

### TeamUserRole

### SessionWatermarkTemplate

- `account_id` (string, optional)
- `app_default` (boolean, optional, default: false)
- `creator_id` (string, optional)
- `id` (string, optional)
- `name` (string, optional)
- `watermark_blocks` (list of SessionWatermarkBlock, optional)

### AdminOnlyAction

- `lifecycle` (boolean, optional, default: false)

### TeamSlackWebhook

### Account

- `invoice_emails` (list of string, optional)
- `city` (string, optional)
- `account_default_color` (string, optional)
- `company_name` (string, optional)
- `storage` (integer, optional)
- `file_count` (integer, optional)
- `owner` (User, optional) — 用户模型
- `upload_url` (string, optional)
- `deleted_at` (string, optional)
- `line1` (string, optional)
- `postal_code` (string, optional)
- `vat` (string, optional)
- `company_address` (string, optional)
- `lifetime_file_count` (integer, optional)
- `state` (string, optional)
- `teams` (list of Team, optional)
- `image_64` (string, optional)
- `archived_storage` (integer, optional)
- `image_128` (string, optional)
- `owner_id` (string, optional)
- `user_count` (integer, optional)
- `locked_at` (string, optional)
- `image` (string, optional)
- `team_count` (integer, optional)
- `collaborator_role_count` (integer, optional)
- `billing_emails` (string, optional)
- `image_32` (string, optional)
- `unpaid_at` (string, optional)
- `inserted_at` (string, optional)
- `updated_at` (string, optional)
- `project_count` (integer, optional)
- `duration` (integer, optional)
- `delinquent_at` (string, optional)
- `collaborator_count` (integer, optional)
- `plan` (Plan, optional)
- `watermark` (Watermark, optional)
- `folder_count` (integer, optional)
- `id` (string, optional)
- `display_name` (string, optional)
- `country` (string, optional)
- `subscription` (Subscription, optional)
- `account_members` (list of AccountMember, optional)
- `frames` (integer, optional)
- `member_count` (integer, optional)
- `image_256` (string, optional)

### EmailBranding

- `accent_color` (string, optional)
- `background_color` (string, optional)
- `image` (Image, optional)

### SessionWatermarkBlock

- `alpha` (double, optional, default: 0.5)
- `data_points` (list of SessionWatermarkDataPoint, optional)
- `font_size` (enum, optional, default: medium)
  - Allowed values: `small`, `medium`, `large`, `huge`
- `name` (string, optional)
- `position` (enum, optional, default: top_left)
  - Allowed values: `top_left`, `top_center`, `top_right`, `middle_left`, `middle_center`, `middle_right`, `bottom_left`, `bottom_center`, `bottom_right`
- `position_reference_point` (enum, optional)
  - Allowed values: `top_left`, `top_center`, `top_right`, `middle_left`, `middle_center`, `middle_right`, `bottom_left`, `bottom_center`, `bottom_right`
- `position_x` (integer, optional)
- `position_y` (integer, optional)
- `scroll_text` (enum, optional, default: none)
  - Allowed values: `none`, `ltr`, `rtl`
- `text_alignment` (enum, optional, default: left)
  - Allowed values: `left`, `right`, `center`
- `text_color` (string, optional, default: #FFFFFF)
- `text_shadow` (boolean, optional, default: false)

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

### Plan

- `archived_storage_limit` (integer, optional)
- `autoscaling` (boolean, optional)
- `available_features` (AvailableFeatures, optional)
- `collaborator_limit` (integer, optional)
- `cost` (integer, optional)
- `default_plan` (boolean, optional)
- `deleted_at` (string, optional)
- `enterprise` (boolean, optional)
- `file_limit` (integer, optional)
- `id` (string, optional)
- `inserted_at` (string, optional)
- `lifetime_file_limit` (integer, optional)
- `member_limit` (integer, optional)
- `name` (string, optional)
- `payment_method` (enum, optional)
  - Allowed values: `stripe`, `check`
- `period` (enum, optional)
  - Allowed values: `monthly`, `yearly`, `semiannually`
- `project_limit` (integer, optional)
- `storage_limit` (integer, optional)
- `team_limit` (integer, optional)
- `tier` (enum, optional)
  - Allowed values: `free`, `starter`, `pro`, `team`, `business`, `enterprise`
- `title` (string, optional)
- `updated_at` (string, optional)
- `user_limit` (integer, optional)
- `user_max` (integer, optional)
- `version` (integer, optional)

### Watermark

- `image` (WatermarkImage, optional)
- `text` (WatermarkText, optional)

### Subscription

- `account_id` (string, optional)
- `archived_storage_limit` (integer, optional)
- `balance` (integer, optional)
- `cancellation_option` (string, optional)
- `cancellation_reason` (string, optional)
- `cancelled_at` (string, optional)
- `deleted_at` (string, optional)
- `id` (string, optional)
- `inserted_at` (string, optional)
- `last_payment_at` (string, optional)
- `member_limit` (integer, optional)
- `next_bill_at` (string, optional)
- `on_trial` (boolean, optional)
- `plan` (Plan, optional)
- `plan_id` (string, optional)
- `promotion_expires_at` (string, optional)
- `promotion_id` (string, optional)
- `requires_autoscaling` (boolean, optional)
- `storage_limit` (integer, optional)
- `subscription_end_at` (string, optional)
- `total_archived_storage_limit` (integer, optional)
- `total_lifetime_file_limit` (integer, optional)
- `total_member_limit` (integer, optional)
- `total_project_limit` (integer, optional)
- `total_storage_limit` (integer, optional)
- `total_user_limit` (integer, optional)
- `updated_at` (string, optional)
- `user_limit` (integer, optional)

### AccountMember

- `accepted_at` (string, optional)
- `account_id` (string, optional)
- `declined_at` (string, optional)
- `deleted_at` (string, optional)
- `inserted_at` (string, optional)
- `role` (enum, optional)
  - Allowed values: `admin`, `billing_manager`, `account_manager`, `member`
- `updated_at` (string, optional)
- `user_id` (string, optional)

### Image

- `bucket` (string, optional)
- `key` (string, optional)
- `type` (string, optional, default: image/jpeg)
- `uploaded` (boolean, optional, default: false)

### SessionWatermarkDataPoint

- `order` (integer, optional)
- `type` (enum, optional)
  - Allowed values: `email`, `username`, `ip_address`, `timestamp`, `custom_text`, `user_input`
- `value` (string, optional)

### UserRoles

- `admin` (boolean, optional)
- `id` (string, optional)
- `sales` (boolean, optional)
- `support` (boolean, optional)
- `service_desk` (boolean, optional)

### AvailableFeatures

- `archival_storage` (boolean, optional)
- `custom_branded_emails` (boolean, optional)
- `custom_branded_presentations` (boolean, optional)
- `reel_player` (boolean, optional)
- `secure_sharing` (boolean, optional)
- `session_based_watermarking` (boolean, optional)
- `team_only_comments` (boolean, optional)

### WatermarkImage

- `alpha` (double, optional, default: 0.5)
- `image` (Image, optional)
- `position` (enum, optional, default: top_left)
  - Allowed values: `top_left`, `top_right`, `bottom_left`, `bottom_right`

### WatermarkText

- `alpha` (double, optional, default: 0.5)
- `lines` (list of string, optional)
- `position` (enum, optional, default: top)
  - Allowed values: `top`, `center`, `bottom`

## Examples

**Response**

```json
{
  "account_id": "string",
  "active": true,
  "app_id": "string",
  "deleted_at": "2024-01-15T09:30:00Z",
  "events": [
    "project.created"
  ],
  "id": "string",
  "inserted_at": "2024-01-15T09:30:00Z",
  "name": "string",
  "project_id": "string",
  "secret": "string",
  "team": {
    "account_id": "string",
    "disable_sbwm_internally": false,
    "creator_id": "string",
    "storage": 0,
    "default_font_color": "string",
    "access": "private",
    "font_color": "string",
    "user_role": {},
    "file_count": 0,
    "default_session_watermark_template": {
      "account_id": "string",
      "app_default": false,
      "creator_id": "string",
      "id": "string",
      "name": "string",
      "watermark_blocks": [
        {
          "alpha": 0.5,
          "data_points": [
            {
              "order": 1,
              "type": "email",
              "value": "string"
            }
          ],
          "font_size": "medium",
          "name": "string",
          "position": "top_left",
          "position_reference_point": "top_left",
          "position_x": 1,
          "position_y": 1,
          "scroll_text": "none",
          "text_alignment": "left",
          "text_color": "#FFFFFF",
          "text_shadow": false
        }
      ]
    },
    "link": "string",
    "asset_lifecycle_policy": 1,
    "upload_url": "string",
    "admin_only_actions": {
      "lifecycle": false
    },
    "deleted_at": "2024-01-15T09:30:00Z",
    "default_background_color": "string",
    "storage_limit": 1,
    "location": "string",
    "name": "string",
    "default_color": "string",
    "slack_webhook": {},
    "image_64": "string",
    "archived_storage": 0,
    "image_128": "string",
    "solo": false,
    "account": {
      "invoice_emails": [
        "string"
      ],
      "city": "string",
      "account_default_color": "string",
      "company_name": "string",
      "storage": 1,
      "file_count": 1,
      "owner": {
        "digest_frequency": "string",
        "image_32": "string",
        "image_128": "string",
        "from_google": true,
        "mfa_enforced_at": "string",
        "email": "string",
        "name": "string",
        "image_64": "string",
        "timezone_value": "string",
        "account_id": "string",
        "updated_at": "string",
        "image_256": "string",
        "_type": "string",
        "user_hash": "string",
        "upload_url": "string",
        "profile_image": "string",
        "first_login_at": "string",
        "joined_via": "string",
        "id": "string",
        "next_digest_date": "string",
        "last_seen": "string",
        "inserted_at": "string",
        "from_adobe": true,
        "avatar_color": "string",
        "highest_account_role": "string",
        "integrations": [
          "string"
        ],
        "roles": {
          "admin": true,
          "id": "string",
          "sales": true,
          "support": true,
          "service_desk": true
        },
        "user_default_color": "string"
      },
      "upload_url": "string",
      "deleted_at": "2024-01-15T09:30:00Z",
      "line1": "string",
      "postal_code": "string",
      "vat": "string",
      "company_address": "string",
      "lifetime_file_count": 1,
      "state": "string",
      "teams": [
        null
      ],
      "image_64": "string",
      "archived_storage": 1,
      "image_128": "string",
      "owner_id": "string",
      "user_count": 1,
      "locked_at": "2024-01-15T09:30:00Z",
      "image": "string",
      "team_count": 1,
      "collaborator_role_count": 1,
      "billing_emails": "string",
      "image_32": "string",
      "unpaid_at": "2024-01-15T09:30:00Z",
      "inserted_at": "2024-01-15T09:30:00Z",
      "updated_at": "2024-01-15T09:30:00Z",
      "project_count": 1,
      "duration": 1,
      "delinquent_at": "2024-01-15T09:30:00Z",
      "collaborator_count": 1,
      "plan": {
        "archived_storage_limit": 1,
        "autoscaling": true,
        "available_features": {
          "archival_storage": true,
          "custom_branded_emails": true,
          "custom_branded_presentations": true,
          "reel_player": true,
          "secure_sharing": true,
          "session_based_watermarking": true,
          "team_only_comments": true
        },
        "collaborator_limit": 1,
        "cost": 1,
        "default_plan": true,
        "deleted_at": "2024-01-15T09:30:00Z",
        "enterprise": true,
        "file_limit": 1,
        "id": "string",
        "inserted_at": "2024-01-15T09:30:00Z",
        "lifetime_file_limit": 1,
        "member_limit": 1,
        "name": "string",
        "payment_method": "stripe",
        "period": "monthly",
        "project_limit": 1,
        "storage_limit": 1,
        "team_limit": 1,
        "tier": "free",
        "title": "string",
        "updated_at": "2024-01-15T09:30:00Z",
        "user_limit": 1,
        "user_max": 1,
        "version": 1
      },
      "watermark": {
        "image": {
          "alpha": 0.5,
          "image": {
            "bucket": "string",
            "key": "string",
            "type": "image/jpeg",
            "uploaded": false
          },
          "position": "top_left"
        },
        "text": {
          "alpha": 0.5,
          "lines": [
            "string"
          ],
          "position": "top"
        }
      },
      "folder_count": 1,
      "id": "string",
      "display_name": "string",
      "country": "string",
      "subscription": {
        "account_id": "string",
        "archived_storage_limit": 1,
        "balance": 1,
        "cancellation_option": "string",
        "cancellation_reason": "string",
        "cancelled_at": "2024-01-15T09:30:00Z",
        "deleted_at": "2024-01-15T09:30:00Z",
        "id": "string",
        "inserted_at": "2024-01-15T09:30:00Z",
        "last_payment_at": "2024-01-15T09:30:00Z",
        "member_limit": 1,
        "next_bill_at": "2024-01-15T09:30:00Z",
        "on_trial": true,
        "plan": {
          "archived_storage_limit": 1,
          "autoscaling": true,
          "available_features": {
            "archival_storage": true,
            "custom_branded_emails": true,
            "custom_branded_presentations": true,
            "reel_player": true,
            "secure_sharing": true,
            "session_based_watermarking": true,
            "team_only_comments": true
          },
          "collaborator_limit": 1,
          "cost": 1,
          "default_plan": true,
          "deleted_at": "2024-01-15T09:30:00Z",
          "enterprise": true,
          "file_limit": 1,
          "id": "string",
          "inserted_at": "2024-01-15T09:30:00Z",
          "lifetime_file_limit": 1,
          "member_limit": 1,
          "name": "string",
          "payment_method": "stripe",
          "period": "monthly",
          "project_limit": 1,
          "storage_limit": 1,
          "team_limit": 1,
          "tier": "free",
          "title": "string",
          "updated_at": "2024-01-15T09:30:00Z",
          "user_limit": 1,
          "user_max": 1,
          "version": 1
        },
        "plan_id": "string",
        "promotion_expires_at": "2024-01-15T09:30:00Z",
        "promotion_id": "string",
        "requires_autoscaling": true,
        "storage_limit": 1,
        "subscription_end_at": "2024-01-15T09:30:00Z",
        "total_archived_storage_limit": 1,
        "total_lifetime_file_limit": 1,
        "total_member_limit": 1,
        "total_project_limit": 1,
        "total_storage_limit": 1,
        "total_user_limit": 1,
        "updated_at": "2024-01-15T09:30:00Z",
        "user_limit": 1
      },
      "account_members": [
        {
          "accepted_at": "2024-01-15T09:30:00Z",
          "account_id": "string",
          "declined_at": "2024-01-15T09:30:00Z",
          "deleted_at": "2024-01-15T09:30:00Z",
          "inserted_at": "2024-01-15T09:30:00Z",
          "role": "admin",
          "updated_at": "2024-01-15T09:30:00Z",
          "user_id": "string"
        }
      ],
      "frames": 1,
      "member_count": 1,
      "image_256": "string"
    },
    "image_32": "string",
    "inserted_at": "2024-01-15T09:30:00Z",
    "updated_at": "2024-01-15T09:30:00Z",
    "project_count": 0,
    "duration": 0,
    "team_image": "string",
    "collaborator_count": 0,
    "bio": "string",
    "color": "string",
    "email_branding": {
      "accent_color": "string",
      "background_color": "string",
      "image": {
        "bucket": "string",
        "key": "string",
        "type": "image/jpeg",
        "uploaded": false
      }
    },
    "folder_count": 0,
    "dark_theme": false,
    "default_session_watermark_template_id": "string",
    "session_watermark_templates": [
      {
        "account_id": "string",
        "app_default": false,
        "creator_id": "string",
        "id": "string",
        "name": "string",
        "watermark_blocks": [
          {
            "alpha": 0.5,
            "data_points": [
              {
                "order": 1,
                "type": "email",
                "value": "string"
              }
            ],
            "font_size": "medium",
            "name": "string",
            "position": "top_left",
            "position_reference_point": "top_left",
            "position_x": 1,
            "position_y": 1,
            "scroll_text": "none",
            "text_alignment": "left",
            "text_color": "#FFFFFF",
            "text_shadow": false
          }
        ]
      }
    ],
    "id": "string",
    "member_limit": 1,
    "frames": 0,
    "member_count": 0,
    "image_256": "string",
    "background_color": "string"
  },
  "team_id": "string",
  "updated_at": "2024-01-15T09:30:00Z",
  "url": "string"
}
```

**SDK Code**

```python
import requests

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

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

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

print(response.json())
```

```javascript
const url = 'https://api.frame.io/v2/hooks/eefb57e0-79f2-4bc7-9b70-99fbc175175c';
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/hooks/eefb57e0-79f2-4bc7-9b70-99fbc175175c"

	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/hooks/eefb57e0-79f2-4bc7-9b70-99fbc175175c")

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/hooks/eefb57e0-79f2-4bc7-9b70-99fbc175175c")
  .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/hooks/eefb57e0-79f2-4bc7-9b70-99fbc175175c', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

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

```csharp
using RestSharp;

var client = new RestClient("https://api.frame.io/v2/hooks/eefb57e0-79f2-4bc7-9b70-99fbc175175c");
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/hooks/eefb57e0-79f2-4bc7-9b70-99fbc175175c")! 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()
```