REST API for custom integrations with external systems. Allows bulk import of products and categories.
To authenticate requests, include an Authorization header with the value "Bearer {YOUR_AUTH_KEY}".
All authenticated endpoints are marked with a requires authentication badge in the documentation below.
You can retrieve your token by visiting your dashboard and clicking Generate API token.
Get paginated list of products with content in all active languages. Only returns products with is_delete=false (includes both visible and hidden products). Language variants are returned only if is_active=true.
By default, only content.html is returned. Use the include parameter to request
additional content: marketplace (marketplace HTML), nested (raw widget JSON),
site_link (anchor navigation on H2 headings), rich_snippet (JSON-LD structured data).
When site_link is included, response contains site_link.html (rendered nav HTML per language)
and site_link.list (structured array of heading + slug per language).
Requires enable_site_link to be enabled on the eshop.
When rich_snippet is included, response contains rich_snippet.html (JSON-LD script tags per language)
and rich_snippet.json (parsed JSON-LD object per language).
Requires enable_rich_snippet to be enabled on the eshop.
The page number. Default: 1.
Items per page. Maximum: 100, Default: 100.
Filter by edited status (is_loaded). Default: true.
Filter products updated after this datetime. Format: Y-m-d H:i:s.
Comma-separated list of additional content to include: nested, marketplace, site_link, rich_snippet.
Comma-separated list of languages to include: default, cs, sk, en, de, pl, hu, all. Without this parameter only "default" is returned.
curl --request GET \
--get "https://api.pobo.space/api/v2/rest/products?page=1&per_page=50&is_edited=1&last_update_time_from=2024-01-01+14%3A30%3A00&include=marketplace%2Cnested%2Csite_link%2Crich_snippet&lang=default%2Ccs%2Csk" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"data": [
{
"id": "PROD-001",
"guid": "550e8400-e29b-41d4-a716-446655440000",
"is_visible": true,
"is_loaded": false,
"image_preview": "https://example.com/preview.jpg",
"name": {
"default": "Product Name",
"sk": "Názov produktu"
},
"short_description": {
"default": "Short description",
"sk": "Krátky popis"
},
"description": {
"default": "<p>Full description</p>",
"sk": "<p>Plný popis</p>"
},
"url": {
"default": "https://example.com/product",
"sk": "https://example.com/sk/produkt"
},
"seo_title": {
"default": "SEO Title",
"sk": "SEO Názov"
},
"seo_description": {
"default": "SEO Description",
"sk": "SEO Popis"
},
"content": {
"html": {
"default": "<div class=\"pobo-content\">...</div>",
"cs": "..."
},
"marketplace": {
"default": "<div class=\"pobo-content\">...</div>",
"cs": "..."
},
"nested": [
[
{
"id": 2,
"class": "empty",
"tag": "div",
"children": []
}
]
]
},
"site_link": {
"html": {
"default": "<div id=\"pobo-site-link\" class=\"pobo-site-link__container\"><nav class=\"pobo-site-link__nav\"><a href=\"#nadpis\" class=\"pobo-site-link__anchor\">Nadpis</a></nav></div>"
},
"list": {
"default": [
{
"heading": "Nadpis",
"slug": "nadpis"
}
]
}
},
"rich_snippet": {
"html": {
"default": "<script type=\"application/ld+json\">{...}</script>"
},
"json": {
"default": {
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": []
}
}
},
"created_at": "2024-01-15T10:30:00.000000Z",
"updated_at": "2024-01-16T14:20:00.000000Z"
}
],
"meta": {
"current_page": 1,
"per_page": 100,
"total": 150
}
}
Import or update multiple products at once with multilingual content. Maximum 100 products per request. Invalid products will be skipped and reported in the errors array.
Supported languages: default, cs, sk, en, de, pl, hu
Validation rules:
curl --request POST \
"https://api.pobo.space/api/v2/rest/products" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"*\": {
\"id\": \"PROD-123-ABC\",
\"is_visible\": true,
\"images\": [
\"https:\\/\\/example.com\\/img1.jpg\",
\"https:\\/\\/example.com\\/img2.jpg\"
],
\"categories_ids\": [
\"CAT-001\",
\"CAT-002\"
],
\"brand_id\": \"BRAND-001\",
\"parameters_ids\": [
1,
2,
3
],
\"name\": {
\"default\": \"Product Name\",
\"sk\": \"Názov produktu\",
\"*\": \"Názov produktu\"
},
\"url\": {
\"default\": \"https:\\/\\/example.com\\/product\",
\"sk\": \"https:\\/\\/example.com\\/sk\\/produkt\",
\"*\": \"https:\\/\\/example.com\\/sk\\/produkt\"
},
\"short_description\": {
\"default\": \"Short desc\",
\"sk\": \"Krátky popis\",
\"*\": \"voluptas\"
},
\"description\": {
\"default\": \"<p>Full description<\\/p>\",
\"sk\": \"<p>Plný popis<\\/p>\",
\"*\": \"est\"
},
\"seo_title\": {
\"default\": \"SEO Title\",
\"sk\": \"SEO Názov\",
\"*\": \"tempora\"
},
\"seo_description\": {
\"default\": \"SEO Description\",
\"sk\": \"SEO Popis\",
\"*\": \"distinctio\"
}
}
}"
{
"success": true,
"imported": 2,
"updated": 1,
"skipped": 1,
"errors": [
{
"index": 3,
"id": "PROD-004",
"errors": [
"The name.sk field is required when using language sk."
]
}
]
}
Soft-delete multiple products at once by setting is_delete = true. Maximum 100 products per request. Products that don't exist or are already deleted will be skipped.
curl --request DELETE \
"https://api.pobo.space/api/v2/rest/products" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
{
"success": true,
"deleted": 2,
"skipped": 1,
"errors": [
{
"index": 2,
"id": "PROD-999",
"errors": [
"Product not found"
]
}
]
}
Get paginated list of categories with content in all active languages. Only returns categories with is_delete=false (includes both visible and hidden categories). Language variants are returned only if is_active=true.
By default, only content.html is returned. Use the include parameter to request
additional content: marketplace (marketplace HTML), nested (raw widget JSON),
rich_snippet (JSON-LD structured data).
When rich_snippet is included, response contains rich_snippet.html (JSON-LD script tags per language)
and rich_snippet.json (parsed JSON-LD object per language).
Requires enable_rich_snippet to be enabled on the eshop.
Note: site_link is not available for categories.
The page number. Default: 1.
Items per page. Maximum: 100, Default: 100.
Filter by edited status (is_loaded). Default: true.
Filter categories updated after this datetime. Format: Y-m-d H:i:s.
Comma-separated list of additional content to include: nested, marketplace, rich_snippet.
Comma-separated list of languages to include: default, cs, sk, en, de, pl, hu, all. Without this parameter only "default" is returned.
curl --request GET \
--get "https://api.pobo.space/api/v2/rest/categories?page=1&per_page=50&is_edited=1&last_update_time_from=2024-01-01+14%3A30%3A00&include=marketplace%2Cnested%2Crich_snippet&lang=default%2Ccs%2Csk" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"data": [
{
"id": "CAT-001",
"guid": "550e8400-e29b-41d4-a716-446655440000",
"is_visible": true,
"is_loaded": false,
"name": {
"default": "Electronics",
"sk": "Elektronika"
},
"description": {
"default": "<p>Electronics category</p>",
"sk": "<p>Kategoria elektroniky</p>"
},
"url": {
"default": "https://example.com/electronics",
"sk": "https://example.com/sk/elektronika"
},
"seo_title": {
"default": "Electronics | Shop",
"sk": "Elektronika | Obchod"
},
"seo_description": {
"default": "Best electronics",
"sk": "Najlepsia elektronika"
},
"content": {
"html": {
"default": "<div class=\"pobo-content\">...</div>",
"cs": "..."
},
"marketplace": {
"default": "<div class=\"pobo-content\">...</div>",
"cs": "..."
},
"nested": [
[
{
"id": 2,
"class": "empty",
"tag": "div",
"children": []
}
]
]
},
"rich_snippet": {
"html": {
"default": "<script type=\"application/ld+json\">{...}</script>"
},
"json": {
"default": {
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": []
}
}
},
"created_at": "2024-01-15T10:30:00.000000Z",
"updated_at": "2024-01-16T14:20:00.000000Z"
}
],
"meta": {
"current_page": 1,
"per_page": 100,
"total": 50
}
}
Import or update multiple categories at once with multilingual content. Maximum 100 categories per request. Invalid categories will be skipped and reported in the errors array.
Supported languages: default, cs, sk, en, de, pl, hu
Validation rules:
curl --request POST \
"https://api.pobo.space/api/v2/rest/categories" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"*\": {
\"id\": \"A01.01.07\",
\"is_visible\": true,
\"images\": [
\"https:\\/\\/example.com\\/img1.jpg\"
],
\"name\": {
\"default\": \"Electronics\",
\"sk\": \"Elektronika\",
\"*\": \"Elektronika\"
},
\"url\": {
\"default\": \"https:\\/\\/example.com\\/electronics\",
\"sk\": \"https:\\/\\/example.com\\/sk\\/elektronika\",
\"*\": \"https:\\/\\/example.com\\/sk\\/elektronika\"
},
\"description\": {
\"default\": \"<p>Description<\\/p>\",
\"sk\": \"<p>Popis<\\/p>\",
\"*\": \"vel\"
},
\"seo_title\": {
\"default\": \"SEO Title\",
\"sk\": \"SEO Názov\",
\"*\": \"qui\"
},
\"seo_description\": {
\"default\": \"SEO Description\",
\"sk\": \"SEO Popis\",
\"*\": \"sed\"
}
}
}"
{
"success": true,
"imported": 2,
"updated": 1,
"skipped": 1,
"errors": [
{
"index": 3,
"id": "CAT-004",
"errors": [
"The name.sk field is required when using language sk."
]
}
]
}
Soft-delete multiple categories at once by setting is_delete = true. Maximum 100 categories per request. Categories that don't exist or are already deleted will be skipped.
curl --request DELETE \
"https://api.pobo.space/api/v2/rest/categories" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
{
"success": true,
"deleted": 2,
"skipped": 1,
"errors": [
{
"index": 2,
"id": "CAT-999",
"errors": [
"Category not found"
]
}
]
}
Import or update multiple parameters with their values at once. Maximum 100 parameters per request. Invalid parameters will be skipped and reported in the errors array.
Note: Parameters do not have multilang support - same structure as V1.
curl --request POST \
"https://api.pobo.space/api/v2/rest/parameters" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"*\": {
\"id\": 1,
\"name\": \"Color\",
\"values\": [
{
\"id\": 1,
\"value\": \"Red\"
},
{
\"id\": 2,
\"value\": \"Blue\"
}
]
}
}"
{
"success": true,
"imported": 2,
"updated": 1,
"skipped": 0,
"values_imported": 5,
"values_updated": 2,
"errors": []
}
Get paginated list of brands with content in selected languages.
Only returns brands with is_delete=false (includes both visible and hidden brands).
The id field in response is the external identifier (mapped to brand.remote_id).
By default only content.html is returned. Use the include parameter to request
additional content: marketplace, nested, site_link, rich_snippet.
The page number. Default: 1.
Items per page. Maximum: 100, Default: 100.
Filter by edited status (is_loaded). Default: true.
Filter brands updated after this datetime. Format: Y-m-d H:i:s.
Comma-separated list of additional content to include: nested, marketplace, site_link, rich_snippet.
Comma-separated list of languages to include: default, cs, sk, en, de, pl, hu, all. Without this parameter only "default" is returned.
curl --request GET \
--get "https://api.pobo.space/api/v2/rest/brands?page=1&per_page=50&is_edited=1&last_update_time_from=2024-01-01+14%3A30%3A00&include=marketplace%2Cnested%2Csite_link%2Crich_snippet&lang=default%2Ccs%2Csk" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"data": [
{
"id": "BRAND-001",
"guid": "550e8400-e29b-41d4-a716-446655440099",
"is_visible": true,
"is_loaded": false,
"image_preview": "https://example.com/brands/apple-logo.png",
"name": {
"default": "Apple",
"cs": "Apple",
"sk": "Apple SK",
"en": "Apple EN",
"de": "Apple DE",
"pl": "Apple PL",
"hu": "Apple HU"
},
"description": {
"default": "<p>Brand description</p>",
"cs": "<p>Popis značky</p>",
"sk": "<p>Popis značky SK</p>",
"en": "<p>Brand description EN</p>",
"de": "<p>Markenbeschreibung</p>",
"pl": "<p>Opis marki</p>",
"hu": "<p>Márkaleírás</p>"
},
"url": {
"default": "https://example.com/znacky/apple",
"cs": "https://example.com/cs/znacky/apple",
"sk": "https://example.com/sk/znacky/apple",
"en": "https://example.com/en/brands/apple",
"de": "https://example.com/de/marken/apple",
"pl": "https://example.com/pl/marki/apple",
"hu": "https://example.com/hu/markak/apple"
},
"seo_title": {
"default": "Apple | Eshop",
"cs": "Apple | E-shop",
"sk": "Apple | Obchod",
"en": "Apple | Shop",
"de": "Apple | Shop",
"pl": "Apple | Sklep",
"hu": "Apple | Bolt"
},
"seo_description": {
"default": "SEO description",
"cs": "SEO popis",
"sk": "SEO popis SK",
"en": "SEO description EN",
"de": "SEO Beschreibung",
"pl": "Opis SEO",
"hu": "SEO leírás"
},
"content": {
"html": {
"default": "<div class=\"pobo-content\">...</div>",
"cs": "<div class=\"pobo-content\">...</div>",
"sk": "<div class=\"pobo-content\">...</div>",
"en": "<div class=\"pobo-content\">...</div>",
"de": "<div class=\"pobo-content\">...</div>",
"pl": "<div class=\"pobo-content\">...</div>",
"hu": "<div class=\"pobo-content\">...</div>"
},
"marketplace": {
"default": "<div class=\"pobo-content\">...</div>",
"cs": "<div class=\"pobo-content\">...</div>"
},
"nested": [
[
{
"id": 2,
"class": "empty",
"tag": "div",
"children": []
}
]
]
},
"site_link": {
"html": {
"default": "<div id=\"pobo-site-link\" class=\"pobo-site-link__container\"><nav class=\"pobo-site-link__nav\"><a href=\"#nadpis\" class=\"pobo-site-link__anchor\">Nadpis</a></nav></div>"
},
"list": {
"default": [
{
"heading": "Nadpis",
"slug": "nadpis"
}
]
}
},
"rich_snippet": {
"html": {
"default": "<script type=\"application/ld+json\">{...}</script>"
},
"json": {
"default": {
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": []
}
}
},
"created_at": "2024-01-15T10:30:00.000000Z",
"updated_at": "2024-01-16T14:20:00.000000Z"
}
],
"meta": {
"current_page": 1,
"per_page": 100,
"total": 12
}
}
Import or update multiple brands at once with multilingual content.
The string id field is mapped to brand.remote_id in the database.
Maximum 100 brands per request. Invalid brands are skipped and reported in errors.
Supported languages: default, cs, sk, en, de, pl, hu
Validation rules:
curl --request POST \
"https://api.pobo.space/api/v2/rest/brands" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"*\": {
\"id\": \"BRAND-001\",
\"is_visible\": true,
\"image_preview\": \"https:\\/\\/example.com\\/brands\\/apple-logo.png\",
\"name\": {
\"default\": \"Apple\",
\"cs\": \"Apple\",
\"sk\": \"Apple SK\",
\"en\": \"Apple EN\",
\"de\": \"Apple DE\",
\"pl\": \"Apple PL\",
\"hu\": \"Apple HU\",
\"*\": \"Apple SK\"
},
\"url\": {
\"default\": \"https:\\/\\/example.com\\/znacky\\/apple\",
\"cs\": \"https:\\/\\/example.com\\/cs\\/znacky\\/apple\",
\"sk\": \"https:\\/\\/example.com\\/sk\\/znacky\\/apple\",
\"en\": \"https:\\/\\/example.com\\/en\\/brands\\/apple\",
\"de\": \"https:\\/\\/example.com\\/de\\/marken\\/apple\",
\"pl\": \"https:\\/\\/example.com\\/pl\\/marki\\/apple\",
\"hu\": \"https:\\/\\/example.com\\/hu\\/markak\\/apple\",
\"*\": \"https:\\/\\/example.com\\/sk\\/znacky\\/apple\"
},
\"description\": {
\"default\": \"<p>Brand description<\\/p>\",
\"cs\": \"<p>Popis značky<\\/p>\",
\"sk\": \"<p>Popis značky SK<\\/p>\",
\"en\": \"<p>Brand description EN<\\/p>\",
\"de\": \"<p>Markenbeschreibung<\\/p>\",
\"pl\": \"<p>Opis marki<\\/p>\",
\"hu\": \"<p>Márkaleírás<\\/p>\",
\"*\": \"<p>Brand description<\\/p>\"
},
\"seo_title\": {
\"default\": \"Apple | Eshop\",
\"cs\": \"Apple | E-shop\",
\"sk\": \"Apple | Obchod\",
\"en\": \"Apple | Shop\",
\"de\": \"Apple | Shop\",
\"pl\": \"Apple | Sklep\",
\"hu\": \"Apple | Bolt\",
\"*\": \"Apple | Eshop\"
},
\"seo_description\": {
\"default\": \"SEO description\",
\"cs\": \"SEO popis\",
\"sk\": \"SEO popis SK\",
\"en\": \"SEO description EN\",
\"de\": \"SEO Beschreibung\",
\"pl\": \"Opis SEO\",
\"hu\": \"SEO leírás\",
\"*\": \"SEO description\"
}
}
}"
{
"success": true,
"imported": 2,
"updated": 1,
"skipped": 1,
"errors": [
{
"index": 3,
"id": "BRAND-004",
"errors": [
"The name.sk field is required when using language sk."
]
}
]
}
Soft-delete multiple brands at once by setting is_delete = true.
Brands are identified by external id (mapped to brand.remote_id).
Maximum 100 brands per request. Brands that don't exist or are already deleted are skipped.
Note: deleting a brand does NOT clear product.brand_id on associated products —
products continue pointing to the soft-deleted brand. The /brands list endpoint
filters out soft-deleted brands.
curl --request DELETE \
"https://api.pobo.space/api/v2/rest/brands" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
{
"success": true,
"deleted": 2,
"skipped": 1,
"errors": [
{
"index": 2,
"id": "BRAND-999",
"errors": [
"Brand not found"
]
}
]
}
Get paginated list of blogs with content in all active languages. Only returns blogs with is_delete=false (includes both visible and hidden blogs). Language variants are returned only if is_active=true.
By default, only content.html is returned. Use the include parameter to request
additional content: marketplace (marketplace HTML), nested (raw widget JSON),
site_link (anchor navigation on H2 headings), rich_snippet (JSON-LD structured data).
When site_link is included, response contains site_link.html (rendered nav HTML per language)
and site_link.list (structured array of heading + slug per language).
Requires enable_site_link to be enabled on the eshop.
When rich_snippet is included, response contains rich_snippet.html (JSON-LD script tags per language)
and rich_snippet.json (parsed JSON-LD object per language).
Requires enable_rich_snippet to be enabled on the eshop.
The page number. Default: 1.
Items per page. Maximum: 100, Default: 100.
Filter by edited status (is_loaded). Default: true.
Filter blogs updated after this datetime. Format: Y-m-d H:i:s.
Comma-separated list of additional content to include: nested, marketplace, site_link, rich_snippet.
Comma-separated list of languages to include: default, cs, sk, en, de, pl, hu, all. Without this parameter only "default" is returned.
curl --request GET \
--get "https://api.pobo.space/api/v2/rest/blogs?page=1&per_page=50&is_edited=1&last_update_time_from=2024-01-01+14%3A30%3A00&include=marketplace%2Cnested%2Csite_link%2Crich_snippet&lang=default%2Ccs%2Csk" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"data": [
{
"id": "BLOG-001",
"guid": "550e8400-e29b-41d4-a716-446655440000",
"category": "news",
"is_visible": true,
"is_loaded": false,
"name": {
"default": "Blog Title",
"sk": "Nazov blogu"
},
"description": {
"default": "<p>Blog content</p>",
"sk": "<p>Obsah blogu</p>"
},
"url": {
"default": "https://example.com/blog-title",
"sk": "https://example.com/sk/nazov-blogu"
},
"seo_title": {
"default": "Blog Title | SEO",
"sk": "Nazov blogu | SEO"
},
"seo_description": {
"default": "SEO description",
"sk": "SEO popis"
},
"content": {
"html": {
"default": "<div class=\"pobo-content\">...</div>",
"cs": "..."
},
"marketplace": {
"default": "<div class=\"pobo-content\">...</div>",
"cs": "..."
},
"nested": [
[
{
"id": 2,
"class": "empty",
"tag": "div",
"children": []
}
]
]
},
"site_link": {
"html": {
"default": "<div id=\"pobo-site-link\" class=\"pobo-site-link__container\"><nav class=\"pobo-site-link__nav\"><a href=\"#nadpis\" class=\"pobo-site-link__anchor\">Nadpis</a></nav></div>"
},
"list": {
"default": [
{
"heading": "Nadpis",
"slug": "nadpis"
}
]
}
},
"rich_snippet": {
"html": {
"default": "<script type=\"application/ld+json\">{...}</script>"
},
"json": {
"default": {
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": []
}
}
},
"created_at": "2024-01-15T10:30:00.000000Z",
"updated_at": "2024-01-16T14:20:00.000000Z"
}
],
"meta": {
"current_page": 1,
"per_page": 100,
"total": 25
}
}
Import or update multiple blogs at once with multilingual content. Maximum 100 blogs per request. Invalid blogs will be skipped and reported in the errors array.
Supported languages: default, cs, sk, en, de, pl, hu
Validation rules:
curl --request POST \
"https://api.pobo.space/api/v2/rest/blogs" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"*\": {
\"id\": \"BLOG-001\",
\"category\": \"news\",
\"is_visible\": true,
\"images\": [
\"https:\\/\\/example.com\\/img1.jpg\"
],
\"name\": {
\"default\": \"Blog Title\",
\"sk\": \"Názov blogu\",
\"*\": \"Názov blogu\"
},
\"url\": {
\"default\": \"https:\\/\\/example.com\\/blog\",
\"sk\": \"https:\\/\\/example.com\\/sk\\/blog\",
\"*\": \"https:\\/\\/example.com\\/sk\\/blog\"
},
\"description\": {
\"default\": \"<p>Content<\\/p>\",
\"sk\": \"<p>Obsah<\\/p>\",
\"*\": \"veritatis\"
},
\"seo_title\": {
\"default\": \"SEO Title\",
\"sk\": \"SEO Názov\",
\"*\": \"qui\"
},
\"seo_description\": {
\"default\": \"SEO Description\",
\"sk\": \"SEO Popis\",
\"*\": \"reiciendis\"
}
}
}"
{
"success": true,
"imported": 2,
"updated": 1,
"skipped": 1,
"errors": [
{
"index": 3,
"id": "BLOG-004",
"errors": [
"The name.sk field is required when using language sk."
]
}
]
}
Soft-delete multiple blogs at once by setting is_delete = true. Maximum 100 blogs per request. Blogs that don't exist or are already deleted will be skipped.
curl --request DELETE \
"https://api.pobo.space/api/v2/rest/blogs" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
{
"success": true,
"deleted": 2,
"skipped": 1,
"errors": [
{
"index": 2,
"id": "BLOG-999",
"errors": [
"Blog not found"
]
}
]
}
Single endpoint for clients that need to import multiple entity types in one call with all-or-nothing semantics. Useful when entities have cross-section dependencies (e.g. products referencing brands or categories created in the same request) — those references are resolved within one DB transaction.
Sections accepted (each optional): parameters, categories, brands, products, blogs.
Item structure inside each section is 1:1 with the single-entity endpoints
(see api-rest-v2.md).
Behavior:
parameters → categories → brands → products → blogs. Any DB-layer
exception triggers a full rollback.existing IDs ∪ in-request IDs as the valid set.curl --request POST \
"https://api.pobo.space/api/v2/rest/multi-import" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"parameters\": [
{
\"id\": 1,
\"name\": \"Color\",
\"values\": [
{
\"id\": 11,
\"value\": \"Red\"
},
{
\"id\": 12,
\"value\": \"Blue\"
}
]
}
],
\"categories\": [
{
\"id\": \"CAT-1\",
\"is_visible\": true,
\"name\": {
\"default\": \"Electronics\",
\"sk\": \"Elektronika\"
},
\"url\": {
\"default\": \"https:\\/\\/example.com\\/electronics\",
\"sk\": \"https:\\/\\/example.com\\/sk\\/elektronika\"
},
\"description\": {
\"default\": \"<p>Electronics category<\\/p>\",
\"sk\": null
},
\"seo_title\": {
\"default\": \"Electronics | Shop\",
\"sk\": null
},
\"seo_description\": {
\"default\": \"Best electronics\",
\"sk\": null
}
}
],
\"brands\": [
{
\"id\": \"BRAND-001\",
\"is_visible\": true,
\"image_preview\": \"https:\\/\\/example.com\\/brands\\/apple-logo.png\",
\"name\": {
\"default\": \"Apple\",
\"sk\": \"Apple SK\"
},
\"url\": {
\"default\": \"https:\\/\\/example.com\\/znacky\\/apple\",
\"sk\": \"https:\\/\\/example.com\\/sk\\/znacky\\/apple\"
},
\"description\": {
\"default\": \"<p>Brand description<\\/p>\",
\"sk\": null
},
\"seo_title\": {
\"default\": \"Apple | Eshop\",
\"sk\": null
},
\"seo_description\": {
\"default\": \"SEO description\",
\"sk\": null
}
}
],
\"products\": [
{
\"id\": \"PROD-1\",
\"is_visible\": true,
\"brand_id\": \"BRAND-001\",
\"categories_ids\": [
\"CAT-1\"
],
\"parameters_ids\": [
11
],
\"name\": {
\"default\": \"iPhone 15\",
\"sk\": \"iPhone 15 SK\"
},
\"short_description\": {
\"default\": \"Short desc\",
\"sk\": \"Krátky popis\"
},
\"description\": {
\"default\": \"<p>Full description<\\/p>\",
\"sk\": null
},
\"url\": {
\"default\": \"https:\\/\\/example.com\\/iphone-15\",
\"sk\": \"https:\\/\\/example.com\\/sk\\/iphone-15-sk\"
},
\"seo_title\": {
\"default\": \"iPhone 15 | Eshop\",
\"sk\": null
},
\"seo_description\": {
\"default\": \"SEO description\",
\"sk\": null
},
\"images\": [
\"https:\\/\\/example.com\\/iphone.jpg\"
]
}
],
\"blogs\": [
{
\"id\": \"BLOG-1\",
\"category\": \"news\",
\"is_visible\": true,
\"name\": {
\"default\": \"New article\",
\"sk\": \"Nový článok\"
},
\"url\": {
\"default\": \"https:\\/\\/example.com\\/news\\/article\",
\"sk\": \"https:\\/\\/example.com\\/sk\\/spravy\\/clanok\"
},
\"description\": {
\"default\": \"<p>Article body<\\/p>\",
\"sk\": null
},
\"seo_title\": {
\"default\": \"Article | Blog\",
\"sk\": null
},
\"seo_description\": {
\"default\": \"Article SEO description\",
\"sk\": null
}
}
]
}"
{
"success": true,
"results": {
"parameters": {
"imported": 2,
"updated": 0,
"skipped": 0,
"errors": []
},
"categories": {
"imported": 5,
"updated": 0,
"skipped": 0,
"errors": []
},
"brands": {
"imported": 1,
"updated": 0,
"skipped": 0,
"errors": []
},
"products": {
"imported": 0,
"updated": 10,
"skipped": 0,
"errors": []
},
"blogs": {
"imported": 3,
"updated": 0,
"skipped": 0,
"errors": []
}
}
}
Import or update multiple products at once. Maximum 100 products per request. Invalid products will be skipped and reported in the errors array.
curl --request POST \
"https://api.pobo.space/api/v1/products/bulk-import" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
{
"success": true,
"imported": 2,
"updated": 0,
"skipped": 1,
"errors": [
{
"index": 0,
"id": "PROD-123",
"errors": [
"The name field is required."
]
}
]
}
Get paginated list of products with content in all supported languages.
The page number. Default: 1.
Items per page (max 100). Default: 100.
Filter by edited status. If true, returns only edited products. If false, returns only unedited products. If omitted, returns all products.
Filter products updated after this datetime. Format: Y-m-d H:i:s (e.g., 2024-01-01 14:30:00).
curl --request GET \
--get "https://api.pobo.space/api/v1/products/list?page=1&per_page=10&is_edited=1&last_update_time_from=2024-01-01+14%3A30%3A00" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"products": [
{
"id": "PROD-123",
"name": "Sample Product",
"short_description": "This is a sample product.",
"url": "https://example.com/product/123",
"content": {
"html": {
"default": "<h1>Sample Product Description</h1><p>This product is used for demonstration purposes.</p>",
"cs": "<h1>Popis vzorového produktu</h1><p>Tento produkt slouží pro demonstrační účely.</p>",
"en": "<h1>Sample Product Description</h1><p>This product is used for demonstration purposes.</p>",
"de": "<h1>Beispiel Produktbeschreibung</h1><p>Dieses Produkt wird zu Demonstrationszwecken verwendet.</p>",
"sk": "<h1>Popis vzorového produktu</h1><p>Tento produkt slúži na demonštračné účely.</p>"
},
"marketplace": {
"default": "<h1>Sample Product Description</h1><p>This product is used for demonstration purposes.</p>",
"cs": "<h1>Popis vzorového produktu</h1><p>Tento produkt slouží pro demonstrační účely.</p>",
"en": "<h1>Sample Product Description</h1><p>This product is used for demonstration purposes.</p>",
"de": "<h1>Beispiel Produktbeschreibung</h1><p>Dieses Produkt wird zu Demonstrationszwecken verwendet.</p>",
"sk": "<h1>Popis vzorového produktu</h1><p>Tento produkt slúži na demonštračné účely.</p>"
}
}
}
],
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"per_page": 10,
"to": 2,
"total": 2
}
}
Import or update multiple categories at once. Maximum 100 categories per request. Invalid categories will be skipped and reported in the errors array.
curl --request POST \
"https://api.pobo.space/api/v1/categories/bulk-import" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
{
"success": true,
"imported": 2,
"updated": 0,
"skipped": 1,
"errors": [
{
"index": 0,
"id": "A01.01.07",
"errors": [
"The name field is required."
]
}
]
}
Get paginated list of categories with content in all supported languages.
The page number. Default: 1.
Items per page (max 100). Default: 100.
Filter by edited status. If true, returns only edited categories. If false, returns only unedited categories. If omitted, returns all categories.
Filter categories updated after this datetime. Format: Y-m-d H:i:s (e.g., 2024-01-01 14:30:00).
curl --request GET \
--get "https://api.pobo.space/api/v1/categories/list?page=1&per_page=10&is_edited=1&last_update_time_from=2024-01-01+14%3A30%3A00" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" {
"categories": [
{
"id": "A01.01.07",
"name": "Sample Category",
"url": "https://example.com/category/123",
"content": {
"html": {
"default": "<h1>Sample Category Description</h1><p>This category is used for demonstration purposes.</p>",
"cs": "<h1>Popis vzorové kategorie</h1><p>Tato kategorie slouží pro demonstrační účely.</p>",
"en": "<h1>Sample Category Description</h1><p>This category is used for demonstration purposes.</p>",
"de": "<h1>Beispiel Kategoriebeschreibung</h1><p>Diese Kategorie wird zu Demonstrationszwecken verwendet.</p>",
"sk": "<h1>Popis vzorovej kategórie</h1><p>Táto kategória slúži na demonštračné účely.</p>"
},
"marketplace": {
"default": "<h1>Sample Category Description</h1><p>This category is used for demonstration purposes.</p>",
"cs": "<h1>Popis vzorové kategorie</h1><p>Tato kategorie slouží pro demonstrační účely.</p>",
"en": "<h1>Sample Category Description</h1><p>This category is used for demonstration purposes.</p>",
"de": "<h1>Beispiel Kategoriebeschreibung</h1><p>Diese Kategorie wird zu Demonstrationszwecken verwendet.</p>",
"sk": "<h1>Popis vzorovej kategórie</h1><p>Táto kategória slúži na demonštračné účely.</p>"
}
}
}
],
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"per_page": 10,
"to": 2,
"total": 2
}
}
Import or update multiple parameters with their values at once. Maximum 100 parameters per request. Invalid parameters will be skipped and reported in the errors array.
curl --request POST \
"https://api.pobo.space/api/v1/parameters/bulk-import" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
{
"success": true,
"imported": 2,
"updated": 0,
"skipped": 1,
"values_imported": 4,
"values_updated": 0,
"errors": [
{
"index": 0,
"id": 1,
"errors": [
"The name field is required."
]
}
]
}