Skip to main content
Attributes are the building blocks of structured product metadata in Synq. An attribute defines a named, typed property — such as 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.
Response 200 OK

Create an attribute

Request body
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.
Response 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

Response 200 OK

Create an attribute group

Request body
string
required
Display name for the group (e.g., "Fabric Details").
string
An optional description of what this group covers.
Response 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 via product_type_id, your team knows exactly which attribute fields are expected to be filled in for that product type.

List templates

Response 200 OK

Create a template

Request body
string
required
Display name for the template (e.g., "Apparel").
string
An optional description of the product category this template covers.
Response 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. Pass product_id or variant_id as query parameters to filter results to a specific product or variant.
Response 200 OK

Create media

Request body
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.
Response 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.