---
title: "Create a collection"
method: POST
path: "/v1/commerce/collections"
tags: ["Commerce"]
---

# Create a collection

`POST /v1/commerce/collections`

Creates a collection, optionally with hand-picked products. On Shopify
the collection starts unpublished from the online store; publish it
from the Shopify admin.

## Request body

- object
  - `accountId` string, required
  - `title` string, required
  - `descriptionHtml` string
  - `handle` string
  - `sortOrder` 'manual' | 'best_selling' | 'alpha_asc' | 'alpha_desc' | 'price_asc' | 'price_desc' | 'created' | 'created_desc' | 'most_relevant'
  - `seo` object
    - `title` string
    - `description` string
  - `image` object
    - `url` string, uri, required
    - `altText` string
  - `productIds` string[]

## Response `201`

Collection created

- object
  - `collection` CommerceCollection — A product collection on a connected store.
    - `id` string — Platform-native collection id.
    - `accountId` string
    - `platform` 'shopify' | 'woocommerce'
    - `title` string
    - `handle` string, nullable
    - `descriptionHtml` string, nullable
    - `image` CommerceImage
      - `id` string, nullable — Media id, used to reorder or remove images. Null for collection images.
      - `url` string
      - `altText` string, nullable
    - `sortOrder` 'manual' | 'best_selling' | 'alpha_asc' | 'alpha_desc' | 'price_asc' | 'price_desc' | 'created' | 'created_desc' | 'most_relevant'
    - `productCount` integer, nullable — Updates a few seconds after a membership change.
    - `seo` object
      - `title` string, nullable
      - `description` string, nullable
    - `updatedAt` string, date-time, nullable
    - `platformData` object, nullable

## Other responses

- `400` — Invalid request
- `401` — Unauthorized
- `403` — The platform rejected the request (code insufficient_permissions). Reconnect the store.
- `404` — Account not found (code account_not_found) or collection not found (code resource_not_found).
- `429` — Rate limited, either by Zernio or by the platform. Retry later.

## Changes

- **2026-09-30** `16a7b9d5373e` — 1 info
  - removed the `platform` enum value from the `details/budgetScope` response property for the response status `400`
- **2026-09-29** `69bbe3da3a18` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/commerce/collections/post.md)

---

[API](https://skmtc.dev/zernio/apis/zernio-api.md) · [All operations](https://skmtc.dev/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zernio/apis/zernio-api/revisions/16a7b9d5373e?raw)
