Skip to main content
POST
You can create or update products in bulk by their SKU. If a product with the specified SKU already exists, it is updated; otherwise, it is created. Products can be assigned to a branch, have multiple variations, and modifier groups.
string
required
Your store ID in Jelou Shop.
object[]
required
List of products to create or update (max. 500 per request).

Product fields

Each object within resources accepts the following fields:
string
required
Unique product identifier (max. 255 characters).
string
required
Product name (max. 255 characters).
number
required
Product price (min. 0).
string
Product description.
boolean
default:"true"
Indicates whether the price includes taxes.
number
Individual product tax rate (between 0 and 100). Example: 15 for 15%, 12 for 12%. Only applies when enable_per_product_tax is active in the store settings. If not sent or is 0, the store’s global rate is used.
boolean
default:"true"
Product status (active/inactive).
string
default:"unlimited"
Inventory type: limited or unlimited.
number
Available quantity. Applies only when stock_type is limited.
string
URL of the product in your store (max. 2048 characters).
string
Discount type: value (fixed amount) or percentage.
number
Discount value (min. 0).
string[]
List of category names. They are created automatically if they do not exist.
string[]
List of public image URLs for the product.
boolean
default:"false"
Enables a note field on the product detail page, allowing the customer to add a comment when adding the product to the cart (e.g., “No onions”, “Gift wrap”).
string
Placeholder text displayed in the note field (max. 255 characters). If not specified, a generic default text is used.
string
Code of the branch to which the product is assigned. The branch must already exist.
The branch must be created before assigning it to a product. Use the Create branch endpoint to register it first.
object[]
List of product features (spec sheet).
boolean
default:"false"
Controls how variations are synced. With false (default), variations are updated or created by SKU and existing ones not present in the payload are kept. With true, variations not present in the payload are removed.
object[]
List of product variations.
object[]
Product modifier groups (add-ons). Common in food delivery (e.g., “Choose your Drinks”, “Pick your Sauces”). If the field is absent, existing modifiers are preserved. If it is an empty array [], all modifiers are deleted. If it has data, modifiers are completely replaced.
Modifiers are stored on the product and returned automatically in all endpoints that return products.

Full example

This example creates three products: a t-shirt with size variations, a simple pair of pants, and a pizza with modifier groups.
Replace {app_id} with your store ID and YOUR_API_KEY with your API key.

Behavior

The endpoint returns 202 Accepted immediately. Products are processed in the background.
Send the X-Sync: true header to process synchronously and receive the per-product result in the same response (200 OK). In this mode the maximum is 50 products per request.
200 OK
If the branch code does not match any branch in the store, the product is created without a branch assignment. No error is produced.
If a category does not exist, it is created automatically within the store and the corresponding branch.
Images are downloaded and processed in the background after the product is created.
Variations are identified by their SKU. If a variation with that SKU already exists, it is updated instead of creating a new one. By default, existing variations not present in the payload are kept; send replace_variations: true to remove them.
If modifier_groups is absent in the payload, existing modifiers are preserved. If it is an empty array [], all modifiers are deleted. If it has data, modifiers are completely replaced.

Validation errors

If the data does not meet the validation rules, the API responds with 422 and details the fields with errors.

Limits

  • Maximum 500 products per request in asynchronous mode (default), or 50 in synchronous mode (X-Sync: true).
  • Maximum 10,000 products per 60-second window per store (rate limit). If exceeded, the API responds with 429 Too Many Requests.
  • All products are validated before being processed.