config.collection_id on search, browse, image search, find-products-in-image, and conversations.
Collections endpoints are free.
Clause semantics
A collection is a list of clauses. Clauses are ORed. Inside a clause, each list (brand_ids, website_ids, category_ids) is ORed, and those lists are ANDed with each other. product_ids in the same clause also AND — they pin the clause to those products.
Request
filters on search/browse/conversation narrow the collection. They cannot widen it.
Caps: 100 clauses, 100 ids per list per clause, 500 product_ids across the whole collection.
Create a collection
Resolve brand, website, and category ids first (those lookups are free), then create the collection.website_ids accept merchant ids or domains (nike.com); domains are stored as merchant ids. You can create an empty collection (clauses: []) and add clauses later with PATCH.
Optional user_id scopes the collection to one end user. If you omit x-user-id on a later collection-scoped search, Channel3 uses that user_id for click attribution.
Search, browse, and image search
Pass the id onconfig.collection_id. Browse does not need filters.brand_ids / category_ids / website_ids when a collection is set.
config.collection_id field works on POST /v1/image-search and POST /experimental/find-products-in-image. A 404 means the id is missing or not owned by this API key. /v1/similar and /v1/lookup do not take a collection.
List collections
List is paginated. Passuser_id to see one user’s collections.
Get a collection
Fetch one collection by id. The response includes name, description,user_id, and the full clause list.
Update a collection
PATCH replaces clauses in place byclause_id, removes by id, and/or appends new clauses.