Skip to main content
POST
Create or upsert a product

Authorizations

Authorization
string
header
required

API-Token aus dem Big-Panda-Admin-UI unter Einstellungen → API-Keys. Header: Authorization: Bearer <token>.

Query Parameters

site_id
string
required

Site to push the product to (UUID or slug)

Body

application/json

Payload for creating/upserting a product.

If external_id is provided and already exists for this site, the product is updated (upsert). Otherwise a new product is created.

Embedding texts are optional — if provided, they are used directly for embedding generation. If omitted, the system generates them from title + description/properties/attributes.

title
string
required
Minimum string length: 1
language
string
required
Required string length: 2 - 5
external_id
string | null
Maximum string length: 200
description
string | null
short_description
string | null
sku
string | null
Maximum string length: 100
gtin
string | null

GTIN/EAN barcode

Maximum string length: 50
brand
string | null
Maximum string length: 200
category
string | null
attributes
Attributes · object
properties
Properties · object
price_current
price_msrp
price_special
price_on_request
boolean
default:false
currency
string
default:EUR
Maximum string length: 3
image_url
string | null
additional_images
string[]
product_url
string | null
availability
string | null
Maximum string length: 50
rating_average
Required range: 0 <= x <= 5
rating_count
integer
default:0
Required range: x >= 0
parent_external_id
string | null

external_id of the parent product (for variants)

is_variant
boolean
default:false

True for concrete variants (children of a parent).

is_parent
boolean
default:false

True for abstract parent/master products that have variant children. Excluded from search when the tenant runs with variant_strategy=children_only.

similarity_text
string | null

Anchor text for the centroid_similar.py 'find related' path. Connector typically composes this from a small, stable set of attributes (e.g. perfume: 'Duft + Saison').

search_keywords
string[]

Alternative spellings / synonyms / JTL-Suchbegriffe. Boosts BM25-matches without affecting semantic search.

embedding_text_description
string | null

Pre-assembled text for description embedding. If omitted, generated from title + description.

embedding_text_properties
string | null

Pre-assembled text for properties embedding. If omitted, generated from title + properties.

embedding_text_attributes
string | null

Pre-assembled text for attributes embedding. If omitted, generated from title + attributes.

sync_hash
string | null

Hash of the source data. If unchanged from last sync, skip re-embedding.

Maximum string length: 64

Response

Successful Response

Product data returned in API responses.

id
string
required
tenant_id
string
required
site_id
string
required
external_id
string | null
required
title
string
required
description
string | null
required
short_description
string | null
required
sku
string | null
required
gtin
string | null
required
brand
string | null
required
category
string | null
required
attributes
Attributes · object
required
properties
Properties · object
required
price_current
string | null
required
Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
price_msrp
string | null
required
Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
price_special
string | null
required
Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
price_on_request
boolean
required
currency
string
required
image_url
string | null
required
additional_images
any[]
required
product_url
string | null
required
availability
string | null
required
rating_average
string | null
required
Pattern: ^(?!^[-+.]*$)[+-]?0*\d*\.?\d*$
rating_count
integer
required
language
string
required
translation_group_id
string | null
required
parent_product_id
string | null
required
is_variant
boolean
required
is_parent
boolean
required
source
string
required
sync_hash
string | null
required
last_synced_at
string<date-time> | null
required
created_at
string<date-time>
required
updated_at
string<date-time>
required
search_keywords
string[]
has_similarity_anchor
boolean
default:false