Batch import products
curl --request POST \
--url https://{tenant}.app.big-panda.ai/api/knowledge/products/batch \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"products": [
{
"title": "<string>",
"language": "<string>",
"external_id": "<string>",
"description": "<string>",
"short_description": "<string>",
"sku": "<string>",
"gtin": "<string>",
"brand": "<string>",
"category": "<string>",
"attributes": {},
"properties": {},
"price_current": 123,
"price_msrp": 123,
"price_special": 123,
"price_on_request": false,
"currency": "EUR",
"image_url": "<string>",
"additional_images": [
"<string>"
],
"product_url": "<string>",
"availability": "<string>",
"rating_average": 2.5,
"rating_count": 0,
"parent_external_id": "<string>",
"is_variant": false,
"is_parent": false,
"similarity_text": "<string>",
"search_keywords": [
"<string>"
],
"embedding_text_description": "<string>",
"embedding_text_properties": "<string>",
"embedding_text_attributes": "<string>",
"sync_hash": "<string>"
}
]
}
'import requests
url = "https://{tenant}.app.big-panda.ai/api/knowledge/products/batch"
payload = { "products": [
{
"title": "<string>",
"language": "<string>",
"external_id": "<string>",
"description": "<string>",
"short_description": "<string>",
"sku": "<string>",
"gtin": "<string>",
"brand": "<string>",
"category": "<string>",
"attributes": {},
"properties": {},
"price_current": 123,
"price_msrp": 123,
"price_special": 123,
"price_on_request": False,
"currency": "EUR",
"image_url": "<string>",
"additional_images": ["<string>"],
"product_url": "<string>",
"availability": "<string>",
"rating_average": 2.5,
"rating_count": 0,
"parent_external_id": "<string>",
"is_variant": False,
"is_parent": False,
"similarity_text": "<string>",
"search_keywords": ["<string>"],
"embedding_text_description": "<string>",
"embedding_text_properties": "<string>",
"embedding_text_attributes": "<string>",
"sync_hash": "<string>"
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
products: [
{
title: '<string>',
language: '<string>',
external_id: '<string>',
description: '<string>',
short_description: '<string>',
sku: '<string>',
gtin: '<string>',
brand: '<string>',
category: '<string>',
attributes: {},
properties: {},
price_current: 123,
price_msrp: 123,
price_special: 123,
price_on_request: false,
currency: 'EUR',
image_url: '<string>',
additional_images: ['<string>'],
product_url: '<string>',
availability: '<string>',
rating_average: 2.5,
rating_count: 0,
parent_external_id: '<string>',
is_variant: false,
is_parent: false,
similarity_text: '<string>',
search_keywords: ['<string>'],
embedding_text_description: '<string>',
embedding_text_properties: '<string>',
embedding_text_attributes: '<string>',
sync_hash: '<string>'
}
]
})
};
fetch('https://{tenant}.app.big-panda.ai/api/knowledge/products/batch', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{tenant}.app.big-panda.ai/api/knowledge/products/batch",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'products' => [
[
'title' => '<string>',
'language' => '<string>',
'external_id' => '<string>',
'description' => '<string>',
'short_description' => '<string>',
'sku' => '<string>',
'gtin' => '<string>',
'brand' => '<string>',
'category' => '<string>',
'attributes' => [
],
'properties' => [
],
'price_current' => 123,
'price_msrp' => 123,
'price_special' => 123,
'price_on_request' => false,
'currency' => 'EUR',
'image_url' => '<string>',
'additional_images' => [
'<string>'
],
'product_url' => '<string>',
'availability' => '<string>',
'rating_average' => 2.5,
'rating_count' => 0,
'parent_external_id' => '<string>',
'is_variant' => false,
'is_parent' => false,
'similarity_text' => '<string>',
'search_keywords' => [
'<string>'
],
'embedding_text_description' => '<string>',
'embedding_text_properties' => '<string>',
'embedding_text_attributes' => '<string>',
'sync_hash' => '<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{tenant}.app.big-panda.ai/api/knowledge/products/batch"
payload := strings.NewReader("{\n \"products\": [\n {\n \"title\": \"<string>\",\n \"language\": \"<string>\",\n \"external_id\": \"<string>\",\n \"description\": \"<string>\",\n \"short_description\": \"<string>\",\n \"sku\": \"<string>\",\n \"gtin\": \"<string>\",\n \"brand\": \"<string>\",\n \"category\": \"<string>\",\n \"attributes\": {},\n \"properties\": {},\n \"price_current\": 123,\n \"price_msrp\": 123,\n \"price_special\": 123,\n \"price_on_request\": false,\n \"currency\": \"EUR\",\n \"image_url\": \"<string>\",\n \"additional_images\": [\n \"<string>\"\n ],\n \"product_url\": \"<string>\",\n \"availability\": \"<string>\",\n \"rating_average\": 2.5,\n \"rating_count\": 0,\n \"parent_external_id\": \"<string>\",\n \"is_variant\": false,\n \"is_parent\": false,\n \"similarity_text\": \"<string>\",\n \"search_keywords\": [\n \"<string>\"\n ],\n \"embedding_text_description\": \"<string>\",\n \"embedding_text_properties\": \"<string>\",\n \"embedding_text_attributes\": \"<string>\",\n \"sync_hash\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{tenant}.app.big-panda.ai/api/knowledge/products/batch")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"products\": [\n {\n \"title\": \"<string>\",\n \"language\": \"<string>\",\n \"external_id\": \"<string>\",\n \"description\": \"<string>\",\n \"short_description\": \"<string>\",\n \"sku\": \"<string>\",\n \"gtin\": \"<string>\",\n \"brand\": \"<string>\",\n \"category\": \"<string>\",\n \"attributes\": {},\n \"properties\": {},\n \"price_current\": 123,\n \"price_msrp\": 123,\n \"price_special\": 123,\n \"price_on_request\": false,\n \"currency\": \"EUR\",\n \"image_url\": \"<string>\",\n \"additional_images\": [\n \"<string>\"\n ],\n \"product_url\": \"<string>\",\n \"availability\": \"<string>\",\n \"rating_average\": 2.5,\n \"rating_count\": 0,\n \"parent_external_id\": \"<string>\",\n \"is_variant\": false,\n \"is_parent\": false,\n \"similarity_text\": \"<string>\",\n \"search_keywords\": [\n \"<string>\"\n ],\n \"embedding_text_description\": \"<string>\",\n \"embedding_text_properties\": \"<string>\",\n \"embedding_text_attributes\": \"<string>\",\n \"sync_hash\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{tenant}.app.big-panda.ai/api/knowledge/products/batch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"products\": [\n {\n \"title\": \"<string>\",\n \"language\": \"<string>\",\n \"external_id\": \"<string>\",\n \"description\": \"<string>\",\n \"short_description\": \"<string>\",\n \"sku\": \"<string>\",\n \"gtin\": \"<string>\",\n \"brand\": \"<string>\",\n \"category\": \"<string>\",\n \"attributes\": {},\n \"properties\": {},\n \"price_current\": 123,\n \"price_msrp\": 123,\n \"price_special\": 123,\n \"price_on_request\": false,\n \"currency\": \"EUR\",\n \"image_url\": \"<string>\",\n \"additional_images\": [\n \"<string>\"\n ],\n \"product_url\": \"<string>\",\n \"availability\": \"<string>\",\n \"rating_average\": 2.5,\n \"rating_count\": 0,\n \"parent_external_id\": \"<string>\",\n \"is_variant\": false,\n \"is_parent\": false,\n \"similarity_text\": \"<string>\",\n \"search_keywords\": [\n \"<string>\"\n ],\n \"embedding_text_description\": \"<string>\",\n \"embedding_text_properties\": \"<string>\",\n \"embedding_text_attributes\": \"<string>\",\n \"sync_hash\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"created": 123,
"updated": 123,
"errors": [
{}
],
"products": [
{
"external_id": "<string>",
"id": "<string>"
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Products
Batch import products
Import up to 100 products in a single request.
Each product is upserted individually — existing products (matched by external_id) are updated, new ones are created.
POST
/
api
/
knowledge
/
products
/
batch
Batch import products
curl --request POST \
--url https://{tenant}.app.big-panda.ai/api/knowledge/products/batch \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"products": [
{
"title": "<string>",
"language": "<string>",
"external_id": "<string>",
"description": "<string>",
"short_description": "<string>",
"sku": "<string>",
"gtin": "<string>",
"brand": "<string>",
"category": "<string>",
"attributes": {},
"properties": {},
"price_current": 123,
"price_msrp": 123,
"price_special": 123,
"price_on_request": false,
"currency": "EUR",
"image_url": "<string>",
"additional_images": [
"<string>"
],
"product_url": "<string>",
"availability": "<string>",
"rating_average": 2.5,
"rating_count": 0,
"parent_external_id": "<string>",
"is_variant": false,
"is_parent": false,
"similarity_text": "<string>",
"search_keywords": [
"<string>"
],
"embedding_text_description": "<string>",
"embedding_text_properties": "<string>",
"embedding_text_attributes": "<string>",
"sync_hash": "<string>"
}
]
}
'import requests
url = "https://{tenant}.app.big-panda.ai/api/knowledge/products/batch"
payload = { "products": [
{
"title": "<string>",
"language": "<string>",
"external_id": "<string>",
"description": "<string>",
"short_description": "<string>",
"sku": "<string>",
"gtin": "<string>",
"brand": "<string>",
"category": "<string>",
"attributes": {},
"properties": {},
"price_current": 123,
"price_msrp": 123,
"price_special": 123,
"price_on_request": False,
"currency": "EUR",
"image_url": "<string>",
"additional_images": ["<string>"],
"product_url": "<string>",
"availability": "<string>",
"rating_average": 2.5,
"rating_count": 0,
"parent_external_id": "<string>",
"is_variant": False,
"is_parent": False,
"similarity_text": "<string>",
"search_keywords": ["<string>"],
"embedding_text_description": "<string>",
"embedding_text_properties": "<string>",
"embedding_text_attributes": "<string>",
"sync_hash": "<string>"
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
products: [
{
title: '<string>',
language: '<string>',
external_id: '<string>',
description: '<string>',
short_description: '<string>',
sku: '<string>',
gtin: '<string>',
brand: '<string>',
category: '<string>',
attributes: {},
properties: {},
price_current: 123,
price_msrp: 123,
price_special: 123,
price_on_request: false,
currency: 'EUR',
image_url: '<string>',
additional_images: ['<string>'],
product_url: '<string>',
availability: '<string>',
rating_average: 2.5,
rating_count: 0,
parent_external_id: '<string>',
is_variant: false,
is_parent: false,
similarity_text: '<string>',
search_keywords: ['<string>'],
embedding_text_description: '<string>',
embedding_text_properties: '<string>',
embedding_text_attributes: '<string>',
sync_hash: '<string>'
}
]
})
};
fetch('https://{tenant}.app.big-panda.ai/api/knowledge/products/batch', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{tenant}.app.big-panda.ai/api/knowledge/products/batch",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'products' => [
[
'title' => '<string>',
'language' => '<string>',
'external_id' => '<string>',
'description' => '<string>',
'short_description' => '<string>',
'sku' => '<string>',
'gtin' => '<string>',
'brand' => '<string>',
'category' => '<string>',
'attributes' => [
],
'properties' => [
],
'price_current' => 123,
'price_msrp' => 123,
'price_special' => 123,
'price_on_request' => false,
'currency' => 'EUR',
'image_url' => '<string>',
'additional_images' => [
'<string>'
],
'product_url' => '<string>',
'availability' => '<string>',
'rating_average' => 2.5,
'rating_count' => 0,
'parent_external_id' => '<string>',
'is_variant' => false,
'is_parent' => false,
'similarity_text' => '<string>',
'search_keywords' => [
'<string>'
],
'embedding_text_description' => '<string>',
'embedding_text_properties' => '<string>',
'embedding_text_attributes' => '<string>',
'sync_hash' => '<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://{tenant}.app.big-panda.ai/api/knowledge/products/batch"
payload := strings.NewReader("{\n \"products\": [\n {\n \"title\": \"<string>\",\n \"language\": \"<string>\",\n \"external_id\": \"<string>\",\n \"description\": \"<string>\",\n \"short_description\": \"<string>\",\n \"sku\": \"<string>\",\n \"gtin\": \"<string>\",\n \"brand\": \"<string>\",\n \"category\": \"<string>\",\n \"attributes\": {},\n \"properties\": {},\n \"price_current\": 123,\n \"price_msrp\": 123,\n \"price_special\": 123,\n \"price_on_request\": false,\n \"currency\": \"EUR\",\n \"image_url\": \"<string>\",\n \"additional_images\": [\n \"<string>\"\n ],\n \"product_url\": \"<string>\",\n \"availability\": \"<string>\",\n \"rating_average\": 2.5,\n \"rating_count\": 0,\n \"parent_external_id\": \"<string>\",\n \"is_variant\": false,\n \"is_parent\": false,\n \"similarity_text\": \"<string>\",\n \"search_keywords\": [\n \"<string>\"\n ],\n \"embedding_text_description\": \"<string>\",\n \"embedding_text_properties\": \"<string>\",\n \"embedding_text_attributes\": \"<string>\",\n \"sync_hash\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://{tenant}.app.big-panda.ai/api/knowledge/products/batch")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"products\": [\n {\n \"title\": \"<string>\",\n \"language\": \"<string>\",\n \"external_id\": \"<string>\",\n \"description\": \"<string>\",\n \"short_description\": \"<string>\",\n \"sku\": \"<string>\",\n \"gtin\": \"<string>\",\n \"brand\": \"<string>\",\n \"category\": \"<string>\",\n \"attributes\": {},\n \"properties\": {},\n \"price_current\": 123,\n \"price_msrp\": 123,\n \"price_special\": 123,\n \"price_on_request\": false,\n \"currency\": \"EUR\",\n \"image_url\": \"<string>\",\n \"additional_images\": [\n \"<string>\"\n ],\n \"product_url\": \"<string>\",\n \"availability\": \"<string>\",\n \"rating_average\": 2.5,\n \"rating_count\": 0,\n \"parent_external_id\": \"<string>\",\n \"is_variant\": false,\n \"is_parent\": false,\n \"similarity_text\": \"<string>\",\n \"search_keywords\": [\n \"<string>\"\n ],\n \"embedding_text_description\": \"<string>\",\n \"embedding_text_properties\": \"<string>\",\n \"embedding_text_attributes\": \"<string>\",\n \"sync_hash\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{tenant}.app.big-panda.ai/api/knowledge/products/batch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"products\": [\n {\n \"title\": \"<string>\",\n \"language\": \"<string>\",\n \"external_id\": \"<string>\",\n \"description\": \"<string>\",\n \"short_description\": \"<string>\",\n \"sku\": \"<string>\",\n \"gtin\": \"<string>\",\n \"brand\": \"<string>\",\n \"category\": \"<string>\",\n \"attributes\": {},\n \"properties\": {},\n \"price_current\": 123,\n \"price_msrp\": 123,\n \"price_special\": 123,\n \"price_on_request\": false,\n \"currency\": \"EUR\",\n \"image_url\": \"<string>\",\n \"additional_images\": [\n \"<string>\"\n ],\n \"product_url\": \"<string>\",\n \"availability\": \"<string>\",\n \"rating_average\": 2.5,\n \"rating_count\": 0,\n \"parent_external_id\": \"<string>\",\n \"is_variant\": false,\n \"is_parent\": false,\n \"similarity_text\": \"<string>\",\n \"search_keywords\": [\n \"<string>\"\n ],\n \"embedding_text_description\": \"<string>\",\n \"embedding_text_properties\": \"<string>\",\n \"embedding_text_attributes\": \"<string>\",\n \"sync_hash\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"created": 123,
"updated": 123,
"errors": [
{}
],
"products": [
{
"external_id": "<string>",
"id": "<string>"
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
API-Token aus dem Big-Panda-Admin-UI unter Einstellungen → API-Keys. Header: Authorization: Bearer <token>.
Query Parameters
Site to push products to (UUID or slug)
Body
application/json
Batch import: multiple products in one request.
Up to 100 products per batch request
Required array length:
1 - 100 elementsShow child attributes
Show child attributes