---
title: "Create a new asset group."
method: POST
path: "/businesses/{business_id}/asset_groups"
tags: ["business_access_assets"]
---

# Create a new asset group.

`POST /businesses/{business_id}/asset_groups`

## Request

- Base URL: `https://api.pinterest.com/v5`
- URL: `https://api.pinterest.com/v5/businesses/{business_id}/asset_groups`
- Auth: OAuth 2
  - Authorization code: `https://www.pinterest.com/oauth/`
  - Token URL: `https://api.pinterest.com/v5/oauth/token` scopes: `biz_access:read`, `biz_access:write`
- TypeScript: <https://skmtc.dev/pinterest/apis/pinterest-rest-api/docs/businesses/:business_id/asset_groups/post.ts> (a function with typed inputs; its response is checked against the schema)

Create a new asset group with the specified parameters.
- An [asset group](https://help.pinterest.com/en/business/article/asset-groups) is a custom group of assets based on how you would like to manage your accounts.

## Path parameters

- `business_id` string, required

## Request body

- AssetGroupInputCreate
  - `asset_group` AssetGroupBinding
    - `ad_accounts_ids` AssetGroupBindingAdAccountsIdsItems[], required: A list of ad account IDs under the asset group
    - `asset_group_description` string, nullable, required: Asset group description
    - `asset_group_name` string, nullable, required: Asset Group name
    - `asset_group_types` string[], required: Asset group types
    - `catalogs_ids` AssetGroupBindingCatalogsIdsItems[], required: A list of catalog IDs under asset group
    - `created_by` BusinessAccessUserSummary, required: Metadata of the member/partner that has access to the asset.
      - `email` string, nullable: Email of the business member/partner.
      - `id` string, nullable: Unique identifier of the business member/partner.
      - `username` string, nullable: Username of the business member/partner.
    - `created_time` integer, nullable, required: The creation time of the asset group
    - `id` string, required: Asset Group ID.
    - `owner` BusinessAccessUserSummary, required: Metadata of the member/partner that has access to the asset.
      - `email` string, nullable: Email of the business member/partner.
      - `id` string, nullable: Unique identifier of the business member/partner.
      - `username` string, nullable: Username of the business member/partner.
    - `profiles_ids` AssetGroupBindingProfilesIdsItems[], required: A list of profile IDs under asset group
    - `updated_time` integer, nullable, required: The last update time of the asset group
  - `asset_group_description` string, required: Asset group description.
  - `asset_group_name` string, required: Asset Group name.
  - `asset_group_types` AssetGroupType[], required: Asset Group Types. Note: The asset group types are used for user reference and categorization purposes only and do not impact the functionality of the asset group.

## Response `200`

The request has succeeded.

- AssetGroupInput
  - `asset_group` AssetGroupBinding
    - `ad_accounts_ids` AssetGroupBindingAdAccountsIdsItems[], required: A list of ad account IDs under the asset group
    - `asset_group_description` string, nullable, required: Asset group description
    - `asset_group_name` string, nullable, required: Asset Group name
    - `asset_group_types` string[], required: Asset group types
    - `catalogs_ids` AssetGroupBindingCatalogsIdsItems[], required: A list of catalog IDs under asset group
    - `created_by` BusinessAccessUserSummary, required: Metadata of the member/partner that has access to the asset.
      - `email` string, nullable: Email of the business member/partner.
      - `id` string, nullable: Unique identifier of the business member/partner.
      - `username` string, nullable: Username of the business member/partner.
    - `created_time` integer, nullable, required: The creation time of the asset group
    - `id` string, required: Asset Group ID.
    - `owner` BusinessAccessUserSummary, required: Metadata of the member/partner that has access to the asset.
      - `email` string, nullable: Email of the business member/partner.
      - `id` string, nullable: Unique identifier of the business member/partner.
      - `username` string, nullable: Username of the business member/partner.
    - `profiles_ids` AssetGroupBindingProfilesIdsItems[], required: A list of profile IDs under asset group
    - `updated_time` integer, nullable, required: The last update time of the asset group

## Other responses

- `201`: Resource create operation completed successfully.
- `400`: The request could not be understood by the server due to unexpected data.
- `401`: Authentication is required and has either failed or not been provided.
- `403`: The request was valid, but the server is refusing action. The user might not have the necessary permissions for a resource.
- `404`: The requested resource could not be found on this server.
- `429`: The user has sent too many requests in a given amount of time and is being rate limited.
- `default`: An unexpected error response.

## Changes

- **2026-06-04** (v5) `b698c180678a`: 2 breaking, 17 info
  - the `asset_group/created_by` response's property type changed from `object` to no type for status `200`
  - the `asset_group/owner` response's property type changed from `object` to no type for status `200`
  - added the new optional request property `asset_group`
  - added the non-success response with the status `401`
  - …15 more
- **2025-04-04** (v5) `10f9eba4ad97`: 1 info
  - added the optional property `asset_group/catalogs_ids` to the response with the `200` status
- **2024-08-14** (v5) `89c27ed39cfd`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/pinterest/apis/pinterest-rest-api/changes/businesses/:business_id/asset_groups/post.md)

---

[API](https://skmtc.dev/pinterest/apis/pinterest-rest-api.md) - [All operations](https://skmtc.dev/pinterest/apis/pinterest-rest-api/llms.txt) - [OpenAPI document](https://skmtc.dev/pinterest/apis/pinterest-rest-api/revisions/b698c180678a?raw)
