Skip to main content
The Products API gives you full control over your Product Information Management (PIM) catalog. Use it to build out your product hierarchy — from top-level products and their variants to the brands, categories, attributes, and media assets that describe them. Every request is scoped to your tenant and organization, so data is always isolated to your account.
All requests require three headers: Authorization: Bearer YOUR_TOKEN, X-Tenant-ID: YOUR_TENANT_ID, and X-Org-ID: YOUR_ORG_ID.

List products

Retrieve all products for your tenant. The response returns up to 100 products ordered by creation date. GET /api/v1/pim/products

Headers

Authorization
string
required
Bearer token from your authentication provider.
X-Tenant-ID
string
required
UUID of your tenant.
X-Org-ID
string
required
UUID of your organization.

Response

[]product
array
Array of product objects.
curl https://api.synq.app/api/v1/pim/products \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "X-Tenant-ID: YOUR_TENANT_ID" \
  -H "X-Org-ID: YOUR_ORG_ID"

Create a product

Create a new product in your catalog. The new product is assigned ACTIVE status by default. POST /api/v1/pim/products

Headers

Authorization
string
required
Bearer token from your authentication provider.
X-Tenant-ID
string
required
UUID of your tenant.
X-Org-ID
string
required
UUID of your organization.

Body

title
string
required
Display name of the product.
description
string
Long-form product description.
category
string
Category slug to associate with the product.

Response

Returns the newly created product object.
curl -X POST https://api.synq.app/api/v1/pim/products \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "X-Tenant-ID: YOUR_TENANT_ID" \
  -H "X-Org-ID: YOUR_ORG_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Classic Wool Sweater",
    "description": "100% merino wool, machine washable.",
    "category": "apparel"
  }'

Get a product

Retrieve a single product by its ID. GET /api/v1/pim/products/{id}

Path parameters

id
string
required
UUID of the product to retrieve.

Headers

Authorization
string
required
Bearer token.
X-Tenant-ID
string
required
UUID of your tenant.
X-Org-ID
string
required
UUID of your organization.
curl https://api.synq.app/api/v1/pim/products/b2c3d4e5-f6a7-8901-bcde-f12345678901 \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "X-Tenant-ID: YOUR_TENANT_ID" \
  -H "X-Org-ID: YOUR_ORG_ID"

Update a product

Update the title, description, or category of an existing product. PUT /api/v1/pim/products/{id}

Path parameters

id
string
required
UUID of the product to update.

Headers

Authorization
string
required
Bearer token.
X-Tenant-ID
string
required
UUID of your tenant.
X-Org-ID
string
required
UUID of your organization.

Body

title
string
New display name.
description
string
Updated product description.
category
string
Updated category slug.
curl -X PUT https://api.synq.app/api/v1/pim/products/b2c3d4e5-f6a7-8901-bcde-f12345678901 \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "X-Tenant-ID: YOUR_TENANT_ID" \
  -H "X-Org-ID: YOUR_ORG_ID" \
  -H "Content-Type: application/json" \
  -d '{"title": "Premium Wool Sweater"}'

Delete a product

Permanently delete a product from your catalog. Returns 204 No Content on success. DELETE /api/v1/pim/products/{id}

Path parameters

id
string
required
UUID of the product to delete.

Headers

Authorization
string
required
Bearer token.
X-Tenant-ID
string
required
UUID of your tenant.
X-Org-ID
string
required
UUID of your organization.
curl -X DELETE https://api.synq.app/api/v1/pim/products/b2c3d4e5-f6a7-8901-bcde-f12345678901 \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "X-Tenant-ID: YOUR_TENANT_ID" \
  -H "X-Org-ID: YOUR_ORG_ID"

Create a variant

Add a variant (e.g. size, color combination) to an existing product. POST /api/v1/pim/products/{product_id}/variants

Path parameters

product_id
string
required
UUID of the parent product.

Headers

Authorization
string
required
Bearer token.
X-Tenant-ID
string
required
UUID of your tenant.
X-Org-ID
string
required
UUID of your organization.

Body

sku
string
Stock-keeping unit identifier for this variant.
barcode
string
Barcode (e.g. UPC or EAN) for this variant.
price
number
Unit price of the variant.
currency
string
ISO 4217 currency code, e.g. USD.
curl -X POST https://api.synq.app/api/v1/pim/products/b2c3d4e5-f6a7-8901-bcde-f12345678901/variants \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "X-Tenant-ID: YOUR_TENANT_ID" \
  -H "X-Org-ID: YOUR_ORG_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "sku": "WOOL-SWTR-M-BLU",
    "price": 89.99,
    "currency": "USD"
  }'

Get dashboard stats

Return aggregate counts for your PIM catalog — total products, variants, brands, categories, and more. GET /api/v1/pim/stats

Headers

Authorization
string
required
Bearer token.
X-Tenant-ID
string
required
UUID of your tenant.
X-Org-ID
string
required
UUID of your organization.
curl https://api.synq.app/api/v1/pim/stats \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "X-Tenant-ID: YOUR_TENANT_ID" \
  -H "X-Org-ID: YOUR_ORG_ID"

Export products

Queue an asynchronous export of your full product catalog. Returns 202 Accepted immediately. You will be notified when the export file is ready for download. POST /api/v1/pim/export

Headers

Authorization
string
required
Bearer token.
X-Tenant-ID
string
required
UUID of your tenant.
X-Org-ID
string
required
UUID of your organization.
curl -X POST https://api.synq.app/api/v1/pim/export \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "X-Tenant-ID: YOUR_TENANT_ID" \
  -H "X-Org-ID: YOUR_ORG_ID"

Bulk jobs

Run or monitor large-scale catalog operations such as bulk price updates or mass status changes. GET /api/v1/pim/bulk-jobs — list bulk jobs POST /api/v1/pim/bulk-jobs — create a bulk job

Query parameters (GET)

type
string
Filter by job type. Defaults to BULK_UPDATE.

Body (POST)

job_type
string
required
Type of bulk operation, e.g. BULK_UPDATE or BULK_DELETE.
payload
object
JSON payload passed to the job processor.
curl -X POST https://api.synq.app/api/v1/pim/bulk-jobs \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "X-Tenant-ID: YOUR_TENANT_ID" \
  -H "X-Org-ID: YOUR_ORG_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "job_type": "BULK_UPDATE",
    "payload": { "status": "ACTIVE" }
  }'

Validation issues

Retrieve a list of catalog validation problems, such as products missing required attributes or invalid SKUs. GET /api/v1/pim/validation

Headers

Authorization
string
required
Bearer token.
X-Tenant-ID
string
required
UUID of your tenant.
X-Org-ID
string
required
UUID of your organization.
curl https://api.synq.app/api/v1/pim/validation \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "X-Tenant-ID: YOUR_TENANT_ID" \
  -H "X-Org-ID: YOUR_ORG_ID"

PIM audit events

Retrieve all PIM-specific audit events for your tenant, such as product creation, updates, and deletions. GET /api/v1/pim/audit

Headers

Authorization
string
required
Bearer token.
X-Tenant-ID
string
required
UUID of your tenant.
X-Org-ID
string
required
UUID of your organization.
curl https://api.synq.app/api/v1/pim/audit \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "X-Tenant-ID: YOUR_TENANT_ID" \
  -H "X-Org-ID: YOUR_ORG_ID"

Categories

Organize products into a hierarchy of categories. GET /api/v1/pim/categories — list categories POST /api/v1/pim/categories — create a category

Body (POST)

name
string
required
Display name of the category.
slug
string
required
URL-safe identifier, e.g. mens-outerwear.
description
string
Optional description.
parentId
string
UUID of a parent category for nested hierarchies.
curl -X POST https://api.synq.app/api/v1/pim/categories \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "X-Tenant-ID: YOUR_TENANT_ID" \
  -H "X-Org-ID: YOUR_ORG_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Outerwear",
    "slug": "outerwear",
    "description": "Jackets, coats, and sweaters."
  }'

Brands

Associate products with brand identities. GET /api/v1/pim/brands — list brands POST /api/v1/pim/brands — create a brand

Body (POST)

name
string
required
Brand display name.
description
string
Brand description.
logoUrl
string
URL to the brand logo image.
curl -X POST https://api.synq.app/api/v1/pim/brands \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "X-Tenant-ID: YOUR_TENANT_ID" \
  -H "X-Org-ID: YOUR_ORG_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Nordvik",
    "description": "Scandinavian outdoor apparel.",
    "logoUrl": "https://cdn.example.com/nordvik-logo.png"
  }'

Attributes, attribute groups, and templates

Define reusable product attributes and organize them into groups or product type templates.
MethodEndpointDescription
GET/api/v1/pim/attributesList attributes
POST/api/v1/pim/attributesCreate attribute
GET/api/v1/pim/attribute-groupsList attribute groups
POST/api/v1/pim/attribute-groupsCreate attribute group
GET/api/v1/pim/templatesList product templates
POST/api/v1/pim/templatesCreate product template

Body for POST /api/v1/pim/attributes

name
string
required
Attribute display name, e.g. Color.
slug
string
required
URL-safe key, e.g. color.
type
string
Data type: TEXT, NUMBER, BOOLEAN, or SELECT. Defaults to TEXT.
curl -X POST https://api.synq.app/api/v1/pim/attributes \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "X-Tenant-ID: YOUR_TENANT_ID" \
  -H "X-Org-ID: YOUR_ORG_ID" \
  -H "Content-Type: application/json" \
  -d '{"name": "Color", "slug": "color", "type": "TEXT"}'

Media

Attach images and other media assets to products or their variants. GET /api/v1/pim/media — list media (supports ?product_id= and ?variant_id= query filters) POST /api/v1/pim/media — attach a media asset

Body (POST)

url
string
required
Publicly accessible URL of the media asset.
product_id
string
UUID of the product to attach media to.
variant_id
string
UUID of the variant to attach media to.
alt_text
string
Accessible description of the image.
sort_order
integer
Display order (lower numbers appear first).
curl -X POST https://api.synq.app/api/v1/pim/media \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "X-Tenant-ID: YOUR_TENANT_ID" \
  -H "X-Org-ID: YOUR_ORG_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "product_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
    "url": "https://cdn.example.com/wool-sweater-front.jpg",
    "alt_text": "Classic Wool Sweater — front view",
    "sort_order": 1
  }'