---
title: "Set collection products"
method: PUT
path: "/open-api/v1.0/collections/{collectionId}/products"
tags: ["Collections"]
---

# Set collection products

`PUT /open-api/v1.0/collections/{collectionId}/products`

## Request

- Base URL: `https://api.fourthwall.com`
- URL: `https://api.fourthwall.com/open-api/v1.0/collections/{collectionId}/products`
- Auth: one of:
  - OAuth 2
    - Implicit: `https://auth.staging.fourthwall.com/auth/realms/Fourthwall/protocol/openid-connect/auth`
    - Scopes: `offer_write`
  - HTTP basic

*Rate limit: 100 requests / 10 seconds per shop. See [Rate limiting](/guides/rate-limiting).*

Sets the full list of product IDs in the collection

## Path parameters

- `collectionId` string, required

## Request body

- ComFourthwallOpenapiModelUpdateCollectionProductsV1Request: Request to set the products in a collection
  - `offerIds` string[], required: Full list of product IDs to set in the collection

## Response `200`

OK

- ComFourthwallOpenapiModelCollectionV1
  - `id` string, required
  - `shopId` string, required
  - `name` string, required
  - `slug` string, required
  - `description` string, required
  - `available` boolean, required
  - `state` union, required
    - ComFourthwallOpenapiModelCollectionStateV1Archived: Archived collection state
      - `type` 'ARCHIVED', required
    - ComFourthwallOpenapiModelCollectionStateV1Hidden: Hidden collection state
      - `type` 'HIDDEN', required
      - `available` boolean, required
    - ComFourthwallOpenapiModelCollectionStateV1Private: Private collection state
      - `type` 'PRIVATE', required
      - `available` boolean, required
    - ComFourthwallOpenapiModelCollectionStateV1Public: Public collection state
      - `type` 'PUBLIC', required
      - `available` boolean, required
  - `offerIds` string[], required

## Other responses

- `400`: Possible errors: `COLLECTION_OFFERS_ALREADY_MODIFIED_ERROR`, `COLLECTION_UNSUPPORTED_UPDATE_DETAILS_OPERATION_ERROR`
- `404`: Possible errors: `COLLECTION_NOT_FOUND_BY_ID_ERROR`, `COLLECTION_OFFERS_NOT_FOUND`
- `429`: Rate limited: 100 requests / 10 seconds per shop.

## Changes

- **2026-07-21** `d02dd5a76313`: 1 breaking, 6 info
  - added `#/components/schemas/com.fourthwall.openapi.model.CollectionStateV1.Private` to the `state` response property `oneOf` list for the response status `200`
  - added the non-success response with the status `400`
  - added the non-success response with the status `404`
  - added the non-success response with the status `429`
  - …3 more

[Operation history](https://skmtc.dev/fourthwall/apis/fourthwall-apis-2/changes/open-api/v1.0/collections/:collectionId/products/put.md)

---

[API](https://skmtc.dev/fourthwall/apis/fourthwall-apis-2.md) - [All operations](https://skmtc.dev/fourthwall/apis/fourthwall-apis-2/llms.txt) - [OpenAPI document](https://skmtc.dev/fourthwall/apis/fourthwall-apis-2/revisions/77de1061d5c9?raw)
