Skip to content

Get a collection model and its collections

GET
/collection-models/{handle}
curl --request GET \
--url 'https://acme.mykreezalid.com/api/v1/collection-models/example?by=handle' \
--header 'Authorization: Basic <credentials>'

The model, and its collections in its order (sort_by), as they show: each field a collection leaves unset filled from the model’s pattern. replaced lists the fields a collection sets itself, an empty one included; count how many items it presents.

handle
required
string

The model’s handle, or its id with by=id

by
string
default: handle
Allowed values: handle id

How the path names the collection: handle (the default, which also finds an integrator’s source handle) or id. A handle may be made of digits only, so an id is never guessed.

The model, with collections

Media typeapplication/json

A collection model makes one storefront collection per value of a criterion and keeps them in step. Its text fields are patterns: {value} stands for each value’s label. A collection leaving a field unset (null) shows the pattern; one setting it keeps its own.

object
id
integer
handle
required

Internal handle, unique among models: a model has no page, so it holds no address of the site

string
title
required

The model’s own name

string
type

What its collections present

string
default: listing
Allowed values: listing user
rules

The conditions every collection shares, all of them met: inclusion {type: AND, rules: […]} and exclusion […]

object
pivot
required

The criterion that varies: type (attribute, category, seller_group, order_type, city, country, department or tag; for users: seller_group, city, country, department), field (an attribute’s alias) and values, in order, each a value and its label. Sent, it replaces the previous criterion whole.

object
criterion

The criterion as a person reads it

object
sort_by

The order of its collections: by label, by how many items each presents (the fullest first), or the order of the values

string
default: alphabetical
Allowed values: alphabetical count manual
hide_empty

Whether the theme’s link block (Liquid collection_models.<handle>.collections) leaves out the collections presenting no item, counted every quarter of an hour; their pages stay online

boolean
handle_pattern
required

Its collections’ handle, with {value}

string
title_pattern

Its collections’ name, with {value}; empty, the value’s label

string
nullable
page_title
string
nullable
subtitle
string
nullable
description

HTML

string
nullable
image_alt

The image itself is uploaded in the back office

string
nullable
template

Suffix of the theme’s collection template

string
nullable
thumbnail

Snippet drawing each item

string
nullable
meta_title
string
nullable
meta_description
string
nullable
meta_keywords
string
nullable
no_index

Its collections’ default

boolean
no_follow

Its collections’ default

boolean
sitemap_changefreq

Always, hourly, daily, weekly, monthly, yearly or never

string
nullable
sitemap_priority

From 0 to 1

number
nullable
collections

Its collections, in its order: in short in a list of models; as they show (each unset field filled from the pattern, with replaced and count) for one model

Array<object>
Collection

Represents a logical group of listings, such as construction projects or promotions, or a storefront page presenting listings or users. A collection made by a collection model follows its model’s conditions; its fields left null show the model’s patterns.

object
id

Collection’s unique identifier

integer
handle
required

URL-friendly identifier for the collection (slug)

string
title
required

Human-readable title of the collection

string
metadata

Flexible metadata container for the collection

object
parent_handle

Handle of the parent collection, if this is a sub-collection. It is not returned in responses: list a parent’s sub-collections with GET /collections/{parent_handle}.

string
nullable
storefront_enabled

Whether the collection is a storefront page, at /{handle}

boolean
is_online

Whether its page is online

boolean
type

What it presents: listing or user

string
page_title

The title its page shows. On a collection made by a model: null for the model’s pattern, empty for nothing, or its own

string
nullable
subtitle

Same three states as page_title

string
nullable
description

HTML; same three states as page_title

string
nullable
image_alt

Alternative text of the image (the image itself is uploaded in the back office)

string
nullable
rules

Its conditions: inclusion {type: AND or OR, rules: […]} and exclusion […]. Read-only on a collection made by a model

object
template

Suffix of the theme’s collection template; empty, the default one

string
nullable
thumbnail

Snippet drawing each item; empty, the default card of its type

string
nullable
canonical_url

Full URL; never inherited

string
nullable
meta_title

SEO title

string
nullable
meta_description

SEO description

string
nullable
meta_keywords

SEO keywords

string
nullable
no_index

Kept out of search engines; null on a collection made by a model: as the model

boolean
nullable
no_follow

Links not followed; null on a collection made by a model: as the model

boolean
nullable
sitemap_changefreq

Always, hourly, daily, weekly, monthly, yearly or never

string
nullable
sitemap_priority

From 0 to 1

number
nullable
model_id

The id of the collection model it is made by; read-only

integer
nullable
model_handle

The handle of that model; read-only

string
nullable
pivot_value

The model’s value it stands for; read-only

string
nullable
pivot_label

The label of that value; read-only

string
nullable
model_pivot

The criterion its model varies on: type, field (an attribute’s alias) and a readable name

object
created_at

Collection creation date

string format: date-time
updated_at

Date of last update

string format: date-time

Example

{
"id": 3,
"handle": "voitures-par-marque",
"title": "Voitures par marque",
"type": "listing",
"rules": {
"inclusion": {
"type": "AND",
"rules": [
{
"type": "order_type",
"operator": "is",
"value": [
"1"
]
}
]
}
},
"pivot": {
"type": "attribute",
"field": "marque",
"values": [
{
"value": "12",
"label": "Renault"
},
{
"value": "14",
"label": "Peugeot"
}
]
},
"criterion": {
"type": "attribute",
"field": "marque",
"name": "Marque"
},
"sort_by": "alphabetical",
"hide_empty": false,
"handle_pattern": "voitures-{value}",
"title_pattern": "Voitures {value}",
"page_title": "Voitures {value} d'occasion",
"no_index": false,
"no_follow": false,
"collections": [
{
"id": 432432,
"handle": "soldes",
"title": "Promotions de Printemps",
"metadata": {
"last_updated_at": "2025-07-01T10:00:00Z",
"theme": "blue"
},
"parent_handle": "promos",
"storefront_enabled": true,
"is_online": true,
"type": "listing",
"page_title": "Voitures électriques",
"subtitle": null,
"description": null,
"image_alt": null,
"rules": null,
"template": null,
"thumbnail": null,
"canonical_url": null,
"meta_title": null,
"meta_description": null,
"meta_keywords": null,
"no_index": false,
"no_follow": false,
"sitemap_changefreq": null,
"sitemap_priority": null,
"model_id": null,
"model_handle": null,
"pivot_value": null,
"pivot_label": null,
"model_pivot": {
"type": "attribute",
"field": "marque",
"name": "Marque"
},
"created_at": "2025-07-20T10:30:00Z",
"updated_at": "2025-07-20T14:45:00Z"
}
]
}

by is not handle or id, or with by=id the reference is not a whole number

Media typeapplication/json

Why a collection or collection model request was refused.

object
success
boolean
message
string
errors

The problems found: for a collection, field by field, the rules not met and their messages. Present only when there are some.

Example

{
"success": false,
"message": "Collection handle is required"
}

Collection model not found

Media typeapplication/json

Why a collection or collection model request was refused.

object
success
boolean
message
string
errors

The problems found: for a collection, field by field, the rules not met and their messages. Present only when there are some.

Example

{
"success": false,
"message": "Collection handle is required"
}