---
title: "Create Collection"
method: POST
path: "/collections"
tags: ["Collections"]
---

# Create Collection

`POST /collections`

Create a new collection.

## Request body

- CreateCollectionRequest
  - `external_id` string, nullable — The provided `external_id` must be unique. If a non-unique `external_id` is provided, the API will respond with an error.
  - `sales_channel` string, required — If a channel with this name is not already associated with the shop, it will be used to create a new channel.
  - `name` string, required — The name of the collection.
  - `products` ProductRequestData[], nullable — An array of products to add to the collection.
    - union — A product to add to the collection, provided either as a plain integer global identifier or as an object with a `global_id`.
      - integer — The product's global identifier, provided as a plain integer.
      - object
        - `global_id` integer, required — The product's global identifier.

## Response `201`

Success

- CollectionWrappedResponse
  - `collection` CollectionResponseData, required
    - `id` integer, required — The unique identifier for the collection, created by Loop.
    - `external_id` string, nullable — The identifier used by an external source to identify the collection.
    - `sales_channel` string, nullable — The name of the channel.
    - `name` string, nullable — The name of the collection.
    - `products` ProductResponse[], nullable — An array of products associated with the collection.
      - `id` integer — The unique integer identifier for the product, created by Loop.
      - `external_id` string, nullable — The identifier used by an external source to identify the product.
      - `sales_channel` string — The name of the channel.
      - `sku` string, nullable — The SKU of the product.
      - `name` string — The name of the product.
      - `weight_grams` integer, nullable — The weight of the product in grams.
      - `barcode` string, nullable — The barcode of the product.
      - `description` string, nullable — The description of the product.
      - `type` string, nullable — The "type" of the product. This is a single value used to classify and group similar products.
      - `vendor` string, nullable — The manufacturer or seller of the product.
      - `price` MoneySet
        - `amount` integer, required
        - `currency_code` string, required
      - `created_at` string, date-time, nullable — The date and time at which the product was created.
      - `updated_at` string, date-time, nullable — The date and time at which the product was updated. The value must be equal to or greater than `created_at`.
      - `collections` Collection[], nullable — A grouping of products which can be used to organize a merchant's shop.
        - `id` integer
        - `external_id` string, nullable
        - `name` string
      - `options` ProductOption[], nullable — An array of optional features or characteristics of the product that can be selected by the customer.
        - `position` integer, required
        - `values` string[], required
        - `name` string, required
      - `images` string[], nullable — An array of links to images of the product.
      - `tags` string[], nullable — An array of tags used to classify and group products.
      - `source` string, nullable — The ecommerce platform from which the product is available.
      - `default_variant_id` integer, nullable — The global identifier (created by Loop) of the product's default variant. Present only when the product has no explicit variants; null otherwise.

## Other responses

- `401` — Unauthorized
- `422` — Unprocessable Entity

---

[API](https://skmtc.dev/loopreturns/apis/listings-api.md) · [All operations](https://skmtc.dev/loopreturns/apis/listings-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/loopreturns/listings-api/revisions/750e6012dbb8/schema)
