Material (type TEXT) or Weight (type NUMBER) — that can be attached to products and variants. You group related attributes into attribute groups to keep your data model organized (for example, putting Material, Care Instructions, and Country of Origin into a Fabric Details group). Finally, you bundle attribute groups into product templates (also called product types), which act as reusable schemas: apply the “Apparel” template to all clothing products to ensure they always carry the same set of defined attributes. Media — product and variant images — is also managed through the PIM API and is covered at the end of this guide.
All requests require the standard headers:
Authorization: Bearer <token>, X-Tenant-ID, and X-Org-ID.Attributes
List attributes
Retrieve all active attributes for your tenant, ordered alphabetically by name.200 OK
Create an attribute
string
required
Human-readable label for the attribute (e.g.,
"Material").string
required
URL-safe unique identifier used to reference this attribute programmatically (e.g.,
"material").string
The data type of attribute values. Defaults to
TEXT if omitted. Common values: TEXT, NUMBER, BOOLEAN, DATE.200 OK
string
UUID for the new attribute. Use this when linking the attribute to an attribute group or product template.
Attribute groups
Attribute groups let you organize related attributes under a shared label. For example, a"Dimensions" group might contain Height, Width, Depth, and Weight.
List attribute groups
200 OK
Create an attribute group
string
required
Display name for the group (e.g.,
"Fabric Details").string
An optional description of what this group covers.
200 OK
Product templates
A product template (called a product type in the API) is a named, reusable schema that bundles a set of attributes. When you assign a template to a product viaproduct_type_id, your team knows exactly which attribute fields are expected to be filled in for that product type.
List templates
200 OK
Create a template
string
required
Display name for the template (e.g.,
"Apparel").string
An optional description of the product category this template covers.
200 OK
string
UUID for the template. Pass this as
product_type_id when creating or updating a product to apply this template.Media
Product and variant images are managed through the media endpoints. Each media record links a URL to either a product or a specific variant, with optional alt text and a sort order for controlling display sequence.List media
Retrieve media records for your tenant. Passproduct_id or variant_id as query parameters to filter results to a specific product or variant.
200 OK
Create media
string
UUID of the product this image belongs to. Provide either
product_id or variant_id.string
UUID of the variant this image belongs to. Provide either
product_id or variant_id.string
required
A fully qualified URL to the image file.
string
Descriptive alt text for the image, used for accessibility and SEO.
integer
Integer position controlling the display order of images. Lower numbers appear first.
200 OK
Putting it together
Here is the recommended sequence for setting up a fully attributed product type:1
Create your attributes
Define each attribute your product type needs. For an “Apparel” template you might create
Material (TEXT), Care Instructions (TEXT), and Weight (NUMBER).2
Create an attribute group
Group related attributes under a meaningful label, such as
"Fabric Details".3
Create the product template
Create a
POST /api/v1/pim/templates record named "Apparel".4
Link attributes to the template
Associate each attribute with the template by providing the template’s UUID as
product_type_id when creating products. When you create a product and set product_type_id to this template’s UUID, it signals which attributes should be populated for that product.5
Apply the template to products
When creating or updating products, set
product_type_id to the template’s UUID. This connects the product to the expected attribute schema.