Icecat Brand Push API Schema

By
api-schema-image

This manual is a reference API cheatsheet schema for developers who work with Icecat Brand API,

Table of Contents

  1. Getting Started
  2. Product Assets Management
  3. Product Access Management

Color Scheme

The color scheme in this manual mirrors Insomnia default colors.

  1. 🟣 GET
  2. 🟒 POST
  3. 🟑 PATCH
  4. 🟠 PUT
  5. πŸ”΄ DELETE

Getting Started

Authentification

Important Behavior
  • SessionId is valid only for a single IP address
  • If your IP changes, the session becomes invalid
  • Sessions may expire β€” your integration should handle re-authentication
  • Session-based authentication is not recommended for production automation
🟒 Create a Session for accounts without 2FA

POST

https://bo.icecat.biz/restful/v3/Session

Body

{
  "Login": "your_username",
  "Password": "your_password",
  "SessionType": "Rest"
}

Key Output

{
  "Data": {
  "SessionId": "your_session_id",
  "UserUUID": "..."
  }
}

🟒 Create a Session for accounts with 2FA

POST

https://bo.icecat.biz/restful/v3/Session

Body

{
  "Login": "your_username",
  "Password": "your_password",
  "SessionType": "Rest",
  "2FAKey": "807668"

}

2FAKey – a temporary 6-digit code from your authenticator app

Key Output

{
  "Data": {
  "SessionId": "your_session_id",
  "UserUUID": "..."
  }
}

πŸ”§ Common Errors
ErrorMeaning / What to do
400 Login not foundCheck whether your login is correct.
400 Password is incorrectCheck whether your password is correct.
400 SessionType is invalidSessionType must be Rest.
400 2FAKey is required for youYour account has 2FA enabled. Include 2FAKey in the request.
400 2FAKey is incorrectThe provided 2FA code is invalid or expired. Generate a new code and retry.
400 2FAKey must be a 6-digit stringThe 2FA code must be exactly 6 digits (e.g., 123456).
400 2FAKey is not neededYou sent a 2FAKey, but your account does not use 2FA. Remove it from the request.
429 Too Many Requests6 unsuccessful authentication attempts were detected within 2 minutes. The next attempt will be allowed after 5 minutes.

Helpers

Methods used to access Icecat taxonomy and IDs for Categories, Languages, Countries etc.

🟣 Get Your Assigned Brands

You can only create and manage products for brands assigned to your account.

GET

https://bo.icecat.biz/restful/v2/Brand?type=brand&access_key=_KEY_&session_type=rest

Key Output

{
  "Data": [
    {
      "BrandId": "11943",
      "Name": "Your Brand"
    }
  ]
}

What to Do:

  • Save the BrandId
  • Use it when creating products (BrandId field)

🟣 Get Categories

Each product must be assigned to a valid Icecat category.

GET

https://bo.icecat.biz/restful/v2/Category?type=brand&access_key=_KEY_&session_type=rest

Key Output

{
  "Data": [
    {
      "CategoryId": "151",
      "Name": "Laptops",
      "Unspsc": "43171801",
      "Disabled": false
    }
  ]
}

What to Do:

  • Choose the most appropriate category
  • Use only categories where Disabled = false
  • Use the CategoryId when creating products

🟣 Get Your Languages

Languages define which localized content you can provide.

GET

https://bo.icecat.biz/restful/v2/Language?access_key=_KEY_&session_type=rest

Key Output

[
 {
  "langid": "1",
  "code": "english",
  "short_code": "EN",
  "published": "Y",
  "backup_langid": "9",
  "separators": ".",
  "measurement": "metric",
  "name": "English"
 },
 {
  "langid": "2",
  "code": "dutch",
  "short_code": "NL",
  "published": "Y",
  "backup_langid": "0",
  "separators": ",",
  "measurement": "metric",
  "name": "Dutch"
 },
 ...
]

What to Do:

  • Identify the Language IDs you are allowed to use
  • Use them when adding: descriptions, bullet points, and localized model names

🟣 Get Your Account Data

Retrieve your user information, including your UserId, which is required when creating products.

GET

https://bo.icecat.biz/restful/v3/Users?Type=Info&AccessKey=_KEY_&SessionType=rest

Key Output

{
 "Data": {
  "UserId": 11111,
  "Login": "your_username",
  "UserGroup": "supplier",
  "ProfileLanguageId": 1,
  "Company": "your_Company",
  "UserName": "your_name",
  "BrandIdList": [],
  "Email": "your_email@mail.com"
 }
}

What to Do:

  • Save the UserId
  • Use it when creating products

🟣 Get Virtual Categories (Optional)

Retrieve available Virtual Categories for the selected CategoryId.

GET

https://bo.icecat.biz/restful/v2/VirtualCategories?category_id=_CATEGORY_ID_&type=general&session_type=rest&access_key=_KEY_

Key Output

{
  "Data": [
    {
      "VirtualCategoryId": "195",
      "VirtualCategoryName": "Ultrabooks"
    }
  ]
}

What to Do:

  • Select relevant VirtualCategoryId
  • Use it when creating products

🟣 Get Families (Optional)

Retrieve available Families for your BrandId and CategoryId.

GET

https://bo.icecat.biz/restful/v2/ProductFamily?brand_id=_BRAND_ID_&category_id=_CATEGORY_ID_&type=general&access_key=_KEY_&session_type=rest

Key Output

{
  "Data": [
    {
      "VirtualCategoryId": "195",
      "VirtualCategoryName": "Ultrabooks"
    }
  ]
}

What to Do:

  • Select relevant VirtualCategoryId
  • Use it when creating products

🟣 Check if Family is Mandatory

Check whether FamilyId must be provided for your brand.

GET

https://bo.icecat.biz/restful/v2/Brand/_BRAND_ID_?type=info&access_key=_KEY_&session_type=rest

Key Output

{
 "Data": {
		"IsFamilyMandatory": false
	}
}

What to Do:

  • If IsFamilyMandatory = true β†’ you must include FamilyId when creating a product
  • If false β†’ Family is optional

🟣 Get Series (Optional)

Retrieve available Series for the selected BrandId and FamilyId.

GET

https://bo.icecat.biz/restful/v2/productseries?brand_id=_BRAND_ID_&family_id=_FAMILY_ID_&type=general&access_key=_KEY_&session_type=rest

Key Output

{
  "Data": [
    {
      "SeriesId": "1017",
      "SeriesName": "Gaming"
    }
  ]
}

What to Do:

  • Select SeriesId if available
  • Use it when creating products
  • If no data is returned β†’ Series is not required

🟣 Get Countries

Get the list of the Countries, supported by Icecat. You can work only with the locales you are assigned to. To adjust your locales contact us.

GET

https://bo.icecat.biz/restful/v3/Countries?AccessKey=_KEY_&SessionType=rest

Key Output

{
 "Data": [
   {
    "Code": "NL",
    "Name": "Netherlands",
    "CountryId": "2"
   },
   {
    "Code": "BE",
    "Name": "Belgium",
    "CountryId": "3"
   },
   ....
}

πŸ”§ Common Errors
ErrorMeaning / What to do
401 UnauthorizedInvalid or missing authentication (SessionId or API token). Check credentials.
403 ForbiddenYou don’t have access to this resource (e.g., brand not assigned).
404 Not FoundThe requested resource (BrandId, CategoryId, etc.) does not exist.
400 Bad RequestIncorrect parameters (e.g., missing or invalid query parameter).
429 Too Many RequestsToo many requests in a short period. Retry after a delay.

Product Assets Management

The product assets are described in details in πŸ”Product Data Sheet Overview

Product Management (Create & Update Products)

Product is the main instance in Icecat. All product assets has to be assigned to a certain product. The main product identifiers assigned on creation are Brand name and Product code.

🟒 Check if Product Exists

Before creating a product, always verify whether it already exists in Icecat.

A product is identified by:

  • GTIN (EAN)
  • or Product Code (PartCode) + BrandId

POST

https://bo.icecat.biz/restful/v3/ProductSearch?AccessKey=_KEY_&SessionType=rest

Body

{
  "Eans": ["1234567890123"],
  "Mpns": ["PRODUCT_CODE"],
  "SupplierId": 11943
}

Key Output

{
 "Data": {
   "Products": [
    {
     "Eans": [
       "4046373659526"
      ],
     "ProductId": 103143220
    }
   ]
 }
}

What to Do:

  • If product is found β†’ use returned ProductId
  • If not found β†’ proceed to create product

🟒 Create Product

Create the base product record with minimal required data.

POST

https://bo.icecat.biz/restful/v3/Product?AccessKey=_KEY_&SessionType=rest

Body

{
  "PartCode": "PRODUCT_CODE",
  "ProductName": "Model Name",
  "BrandId": 11943,
  "CategoryId": 153,
  "IsDangerous": false,
  "UserId": 117559,
  "Publish": "Y"
}

Extended Body

{
  "PartCode": "PRODUCT_CODE",
  "ProductName": "Model Name",
  "BrandId": 11943,
  "CategoryId": 153,
  "IsDangerous": false,
  "UserId": 117559,
  "Publish": "Y",
  "VirtualCategories": [195],
  "FamilyId": 63510,
  "SeriesId": 1017
}

Required Fields

  • PartCode – your product code (must be unique within the brand)
  • ProductName – short model name
  • BrandId – from Assigned Brands (identifies which brand the product belongs to)
  • CategoryId – from Categories (defines product type and available specifications)
  • UserId – from Get your account data (identifies you as the product owner)
  • IsDangerous – indicates whether the product has hazardous properties
    • true β†’ product requires a disclaimer
    • false β†’ no special handling required
  • Publish – defines product visibility
    • Y β†’ visible to all partners
    • L β†’ visible only to selected partners

Optional Classification Fields

  • VirtualCategories – from Virtual Categories (additional grouping for the product)
  • FamilyId – from Families (product line within a brand; may be required for some brands)
  • SeriesId – from Series (subgroup within a family; depends on FamilyId)

Key Output

{
 "Data": {
   "Products": [
    {
     "Eans": [
       "4046373659526"
      ],
     "ProductId": 103143220
    }
   ]
 }
}

What to Do:

  • Start with minimal fields
  • Ensure Category is correct
  • Confirm product is successfully created

🟣 Verify Product

After creation, retrieve product data.

GET

https://bo.icecat.biz/restful/v3/Product/_PRODUCT_ID_?AccessKey=_KEY_&SessionType=rest

Key Output

{
 "Data": {
   "ProductId": 134515110,
   "Quality": "SUPPLIER",
   "ApprovedByBrand": false,
   "CheckBySuperEditor": false,
   "Publish": {
     "AvailableValues": ["L","Y"],
     "Checked": "Y",
     "Readonly": false
    },
   "ShowRemoveAllSpecs": false,
   "PartCode": "PRODUCT CODE",
   "IsDangerous": false,
   "General": {
	"Score": false,
	"DateAdded": "29-08-2025",
	"LastUpdate": "29-08-2025",
	"Readonly": {
		"BrandPolicy": false
	}
  },
  "Brand": {
	"BrandId": "11943",
	"BrandName": "QA_test"
   },
  "Category": {
	"CategoryId": "153",
	"CategoryName": "PCs/Workstations"
   },
  "VirtualCategories": [],
  "Family": [],
  "Series": [],
  "Owner": {
	"UserId": "117559",
	"UserLogin": "username"
	"UserGroup": "supplier"
   },
  "Warnings": [],
  "AccessibleBy": "All",
  "ControlOwner": true
  }
}

What to Check:

  • Product exists
  • Category is correct
  • Publish status is correct

🟑 Update Product

Use this to modify product properties. Common update fields: Category, Publish, Family, Series, VirtualCategories, and IsDangerous.

Publish parameter is either:

  • Y (Yes) β†’ visible to all partners
  • L (Limited) β†’ visible only to selected partners

πŸ’‘Important Rule: only one field per request can be updated

PATCH

https://bo.icecat.biz/restful/v3/Product/__PRODUCT_ID_?AccessKey=_KEY_&SessionType=rest

Body

{
  "Category": 153
}

Response

{
  "Category": true,
  "Data": []
}

πŸ”§ Common Errors
ErrorMeaning / What to do
400 Product already existsUse ProductSearch and update existing product
403 Access deniedYou are not allowed to manage this Brand
404 Not FoundInvalid BrandId / CategoryId / ProductId
400 Category not allowedUse a leaf (lowest-level) category

International (INT) Content – GTIN (Product Identifiers)

GTIN is another non-mandatory product identifier and is assigned with its own methods,

🟣 Get Product GTINs

Use this method to retrieve all GTINs linked to a product.

GET

https://bo.icecat.biz/rest/ProductGTIN?filter={"product_id"%3A_PRODUCT_ID_}&access_key=_KEY_&session_type=rest

Parameters

filter – URL-encoded object with product_id

Key Output

[
 {
  "ean_id": "285973270",
  "product_id": "134515110",
  "ean_code": "5364222413679",
  "updated": "2025-12-04 16:03:45",
  "data_source_id": "0",
  "distributor_id": "0",
  "is_exported": true,
  "editor_user_id": "117559",
  "variant_id": "0",
  "country": "",
  "source_name": "icecat-qa-brand"
 }
]

What to Do:

  • Save ean_id
  • Use it when confirming or deleting GTIN

🟒 Create Product GTIN

Use this method to add a GTIN to a product.

POST

https://bo.icecat.biz/rest/ProductGTIN/_PRODUCT_ID_?access_key=_KEY_&session_type=rest

Body

{
  "barcode": 1234567890123
}

Fields

barcode – GTIN value

Response

{
  "message": "Created",
  "id": "284990341"
}

What to Do:

  • Save returned id
  • Use it as ean_id for update or delete actions

🟑 Update GTIN / Confirm GTIN

Use this method to confirm that the GTIN can be exported.

PATCH

https://bo.icecat.biz/rest/productgtin/_EAN_ID_?access_key=_KEY_&session_type=rest

Body

{
	"is_exported": true
}

Fields

is_exported – confirms GTIN for export

πŸ’‘Important: You cannot unconfirm a GTIN after is_exported is set to true.


πŸ”΄ Delete Product GTIN

Use this method to remove a GTIN from a product.

DELETE

https://bo.icecat.biz/rest/productgtin/_EAN_ID_?access_key=_KEY_&session_type=rest

Response

{
  "message": "Deleted",
  "id": 284990341
}

πŸ”§ Common Errors
ErrorMeaning / What to do
401 UnauthorizedSession ID is incorrect.
400 Icecat GTIN supports 8-12-13-14 lengthUse only GTIN-8, GTIN-12, GTIN-13, or GTIN-14.
400 Invalid GTIN code ..., checksum failed.Check whether the GTIN is valid.
400 GTIN code ... already belongs to product...This GTIN is already linked to another product.
404 Requested product is not present in Icecat databaseProduct ID is incorrect.
400 Failed update. is_exported now is true.GTIN is already confirmed and cannot be unconfirmed. Use Delete GTIN if needed.

Product Gallery is described in details in πŸ” How to Make the Product Gallery Great Again

🟣 Get Gallery

Retrieve product images and locale assignments.

GET

https://bo.icecat.biz/restful/v3/Gallery/_PRODUCT_ID_?AccessKey=_KEY_&SessionType=rest

Key Output

{
"Data": [{
"OrderNumber": 5,
"Md5": "6a03d272afc7ad0598a31828d266d862",
"ImageFingerprint": "xxxx",
"IsCropped": false,
"Origin": {
	"Link": "https://images.icecat.biz/img/gallery_raw/",
	"Size": 23115
},
"High": {
	"Link": "https://images.icecat.biz/img/gallery/",
	"Height": 200,
	"Width": 200,
	"Size": 23266
},
"Medium": {
"Link": "",
	"Height": 0,
	"Width": 0,
	"Size": 0
},
"Low": {
	"Link": "https://images.icecat.biz/img/gallery_lows/",
	"Height": 200,
	"Width": 200,
	"Size": 23266
},
"Thumb": {
	"Link": "https://images.icecat.biz/img/gallery_thumbs/",
	"Height": 75,
	"Width": 75,
	"Size": 6187
},
"Locales": [{
	"GalleryId": 122652485,
	"LanguageId": 1,
	"IsPrivate": false,
	"ExpiryDate": "2026-01-01",
	"Visible": true,
	"Type": "ProductImage",
	"EditorUserId": 110866,
	"DataSourceId": 0,
	"Updated": "2025-11-03 10:58:13",
        "SourceLink": "https://images.icecat.biz/img/gallery_lows/"			
	"Expired": false,
	"CanActivate": true,
	"FileName": ""
	},
...local images
]
}],
"CanDelete": false,
"AllowedLanguages": [0],
"CurrentDate": "2025-12-29"
}

Important fields:

  • GalleryId – unique image locale identifier
  • LanguageId – image language / locale (0 = INT)
  • OrderNumber – image position in the gallery
  • IsPrivate – image visible only for authorized channel partners
  • ExpiryDate – image expiration date
  • Visible – image activation status
  • Origin / High / Medium / Low / Thumb – generated image variants

🟒 Create Gallery Image

Add a new image to the product gallery.

POST

https://bo.icecat.biz/restful/v3/Gallery/_PRODUCT_ID_?AccessKey=_KEY_&SessionType=rest

⚠️ Request body uses FormData format.

The Metadata field must contain JSON.

Metadata Example

{
  "Link": "https://images.example.com/product.jpg",
  "LanguageId": 1,
  "OrderNumber": 4,
  "IsPrivate": true,
  "ExpiryDate": "2026-12-31"
}

Fields

  • Link – publicly accessible image URL
  • LanguageId – target language (0 for INT)
  • OrderNumber (optional) – image ordering position
  • IsPrivate – restrict visibility to authorized partners
  • ExpiryDate (optional) – image expiration date

πŸ’‘Important!

  • OrderNumber is optional
  • If omitted, Icecat determines image ordering automatically
  • Use LanguageId = 0 for International images
  • Ensure image URL is downloadable and accessible

Response

{
	"OrderNumber": 4,
	"Md5": "8d9332df5f9f6ec6cfd4fde3e6526617",
	"ImageFingerprint": "",
	"IsCropped": false,
	"Origin": {
		"Link": "https://images.icecat.biz/img/gallery_raw/link.jpg",
		"Size": 836052
	},
	"High": {
		"Link": "https://images.icecat.biz/img/gallery/link.jpg",
		"Height": 2033,
		"Width": 2973,
		"Size": 872039
	},
	"Medium": {
		"Link": "https://images.icecat.biz/img/gallery_mediums/link.jpg",
		"Height": 342,
		"Width": 500,
		"Size": 51002
	},
	"Low": {
		"Link": "https://images.icecat.biz/img/gallery_lows/link.jpg",
		"Height": 137,
		"Width": 200,
		"Size": 12154
	},
	"Thumb": {
		"Link": "https://images.icecat.biz/img/gallery_thumbs/link.jpg",
		"Height": 75,
		"Width": 75,
		"Size": 3023
	},
	"CanDelete": false,
	"AllowedLanguages": [
		0,
		1,
		2
	],
	"CurrentDate": "2026-04-08",
	"Locales": [{
		"GalleryId": 139959732,
		"LanguageId": 1,
		"IsPrivate": true,
		"ExpiryDate": "",
		"Visible": true,
		"Type": "ProductImage",
		"EditorUserId": 117559,
		"DataSourceId": 0,
		"Updated": "2026-04-08 15:53:12",
		"SourceLink": "https://images.icecat.biz/img/gallery/link.jpg",
		"Expired": false,
		"CanActivate": true,
		"FileName": ""
	}]
}

🟒 Create Locale for Existing Image

Reuse an existing image for additional languages without uploading a new asset.

POST

https://bo.icecat.biz/restful/v3/Gallery/_PRODUCT_ID_/Locale?AccessKey=_KEY_&SessionType=rest

Body

{
  "GalleryId": 122652485,
  "LanguageId": [3]
}

Fields

  • GalleryId – existing gallery image ID
  • LanguageId – list of additional languages to assign

Use this method when:

  • the same image should be used in multiple languages
  • you want to avoid duplicate uploads
  • only locale assignment is required

Response

{
	"OrderNumber": 4,
	"Md5": "6a03d272afc7ad0598a31828d266d862",
	"ImageFingerprint": "0x5355fdff5b...",
	"IsCropped": false,
	"Origin": {
		"Link": "https://images.icecat.biz/img/gallery_raw/link.jpg",
		"Size": 23115
	},
	"High": {
		"Link": "https://images.icecat.biz/img/gallery/link.jpg",
		"Height": 200,
		"Width": 200,
		"Size": 23266
	},
	"Medium": {
		"Link": "",
		"Height": 0,
		"Width": 0,
		"Size": 0
	},
	"Low": {
		"Link": "https://images.icecat.biz/img/gallery_lows/link.jpg",
		"Height": 200,
		"Width": 200,
		"Size": 23266
	},
	"Thumb": {
		"Link": "https://images.icecat.biz/img/gallery_thumbs/link.jpg",
		"Height": 75,
		"Width": 75,
		"Size": 6187
	},
	"Locales": [{
		"GalleryId": 122664385,
		"LanguageId": 3,
		"IsPrivate": false,
		"ExpiryDate": "",
		"Visible": true,
		"Type": "ProductImage",
		"EditorUserId": 110866,
		"DataSourceId": 0,
		"Updated": "2025-11-02 13:03:15",
		"SourceLink": "https://images.icecat.biz/img/gallery_lows/link.jpg",
		"Expired": false,
		"CanActivate": true,
		"FileName": ""
	}],
	"CanDelete": true,
	"AllowedLanguages": [
		0
	],
	"CurrentDate": "2025-11-02"
}

🟑 Update Gallery Image

Update image metadata or deactivate an image.

PATCH

https://bo.icecat.biz/restful/v3/Gallery/_PRODUCT_ID_/_GALLERY_ID_?AccessKey=_KEY_&SessionType=rest

Body

{
  "OrderNumber": 5,
  "IsPrivate": false,
  "ExpiryDate": "2026-01-01",
  "Visible": false
}

Fields

  • OrderNumber – gallery ordering position
  • IsPrivate – private/public access
  • ExpiryDate – image expiration date
  • Visible – activation status

Response

{
	"OrderNumber": 4,
	"Md5": "6a03d272afc7ad0598a31828d266d862",
	"ImageFingerprint": "0x5355fdff5b...",
	"IsCropped": false,
	"Origin": {
		"Link": "https://images.icecat.biz/img/gallery_raw/link.jpg",
		"Size": 23115
	},
	"High": {
		"Link": "https://images.icecat.biz/img/gallery/link.jpg",
		"Height": 200,
		"Width": 200,
		"Size": 23266
	},
	"Medium": {
		"Link": "",
		"Height": 0,
		"Width": 0,
		"Size": 0
	},
	"Low": {
		"Link": "https://images.icecat.biz/img/gallery_lows/link.jpg",
		"Height": 200,
		"Width": 200,
		"Size": 23266
	},
	"Thumb": {
		"Link": "https://images.icecat.biz/img/gallery_thumbs/link.jpg",
		"Height": 75,
		"Width": 75,
		"Size": 6187
	},
	"Locales": [{
		"GalleryId": 122664385,
		"LanguageId": 3,
		"IsPrivate": false,
		"ExpiryDate": "",
		"Visible": true,
		"Type": "ProductImage",
		"EditorUserId": 110866,
		"DataSourceId": 0,
		"Updated": "2025-11-02 13:03:15",
		"SourceLink": "https://images.icecat.biz/img/gallery_lows/link.jpg",
		"Expired": false,
		"CanActivate": true,
		"FileName": ""
	}],
	"CanDelete": true,
	"AllowedLanguages": [
		0
	],
	"CurrentDate": "2025-11-02"
}

🟑 Delete Gallery Image

⚠️ Direct deletion is not available for Brand users.

To remove an image from retailer-facing outputs, 🟑Update the Gallery Image and set:

{
  "Visible": false
}

As a result, the image becomes hidden from partners, but remains stored in Icecat and can be reactivated later.

This behavior helps prevent accidental image loss.


πŸ”§ Common Errors
CodeMeaning / What to do
401 UnauthorizedIncorrect authentication / SessionID
403 Access denied. You don’t have permissionUser is not allowed to work with this Brand or language
403 You are not allowed to modify requested contentUser uses a language they are not authorized to manage
404 Requested product is not present in Icecat databaseProduct ID is incorrect
400 Failed to download imageImage URL is invalid or inaccessible
400 Image already existsSame image already exists for the given language
400 The image is too small...Resolution is below 200 px minimum
400 Only files with these MIME types are allowed...Unsupported image format
400 Gallery ID is unknownInvalid GalleryId
400 Unable to copy image...Locale/image combination already exists
400 Bad Request (Errors array)One or more request fields are invalid; inspect FieldPath and message

International & Local Content – Multimedia

Multimedia are additonal files provided as assets to the products and include documents, videos, ProductStories and 360.

πŸ” Product Multimedia Overview

🟣 Get Multimedia

Retrieve multimedia assets for a product.

GET

https://bo.icecat.biz/restful/v3/multimedia/_PRODUCT_ID_?AccessKey=_KEY_&SessionType=Rest

Key Output

[{
 "Id": 69393793,
 "ContentType": "text/html",
 "DataSourceId": 0,
 "ExpiryDate": "",
 "IsPrivate": false,
 "KeepAsUrl": true,
 "LangId": 0,
 "LinkOrigin": "https://www.youtube.com/watch?v=HOi8Jg3zExA",
 "Link": "https://www.youtube.com/watch?v=HOi8Jg3zExA",
 "Md5Origin": "e8b1ddff533932203d4742e6d76ba913",
 "PreviewLink": "https://img.youtube.com/vi/HDi8Hg3zExA/hqdefault.jpg",
 "PreviewHeight": 0,
 "PreviewSize": 0,
 "PreviewWidth": 0,
 "ConvertedLink": "",
 "ConvertedMimeType": "",
 "ConvertedSize": 0,
 "ShortDescr": "test",
 "Size": 1036577,
 "ThumbLink": "https://img.youtube.com/vi/HOi8Jg3zExA/default.jpg",
 "Type": "video/mp4",
 "Uuid": "F05F58ED-44C9-4598-A77C-FE7A9FE496F2",
 "Visible": true,
 "Updated": "2025-09-16 16:22:38",
 "EnergyLabellingLink": "",
 "IsNewEnergyLabelling": false,
 "PublicAccess": false,
 "ExternalTaxonomyId": 0,
 "Expired": false
}]
  • ConvertedMimeType – Content type of converted video. ⚠️ Only for Multimedia with type video.
  • ImageBatch – List of links for generating 360 objects. ⚠️ Only for Multimedia with type 360.

🟒 Create Multimedia

Add a multimedia asset.

Supported formats for Multimedia:

  • leaflet β€“ pdf
  • manual pdf β€“ pdf
  • other digital assets β€“ pdf, jpg, jpeg, png
  • EU Product Fiche β€“ pdf, jpg, jpeg, png for any language except INT
  • EU Energy Label β€“ pdf, jpg, jpeg, png. ⚠️ Only for INT language
  • UK Energy Label β€“ pdf, jpg, jpeg, png. ⚠️ Only for EN language
  • Safety Data Sheet β€“ pdf
  • Size Chart β€“ pdf, jpg, jpeg, png
  • video/mp4 β€“ flv, mp4, mpg, mpeg, 3gp, webm, ogg, ogv
  • 360 β€“ batch of images in jpg, jpeg, png that form a 360Β° view of the product. The batch must contain 10 to 360 different links to images. From 10 to 36 links is recommended
  • ProductStory β€“ zip with HTML file and media assets used
  • ProductStory2.0 β€“ txt file with valid HTML content
  • Repairability index overview β€“ pdf, jpg, jpeg, png

POST

https://bo.icecat.biz/restful/v3/multimedia/_PRODUCT_ID_?AccessKey=_KEY_&SessionType=Rest

Body for Video

{
	"LangId": 1,
	"ShortDescr": "Your short description",
	"IsPrivate": true,
	"Visible": true,
	"Link": "https://youtu.be/DqQr64kZzAM?si=9igAOeh25D1WQaJE",
	"KeepAsUrl": true,
	"Type": "video/mp4"
}

Body for Energy Label

{
	"LangId": 1,
	"ShortDescr": "Your short description",
	"IsPrivate": false,
	"Visible": false,
	"Link": "https://objects.icecat.biz/",
	"Type": "EU Energy Label",
	"ExpiryDate": "2025-12-25",
	"EnergyLabellingLink": "https://eprel.ec.europa.eu/screen/product/",
	"IsNewEnergyLabelling": false
}

Body for 360Β° Image Batch

{
	"LangId": 1,
	"ShortDescr": "Your short description",
	"IsPrivate": false,
	"Visible": false,
	"Type": "360",
	"ExpiryDate": "2025-12-25",
	"ImagesBatch": [
		{
			"Link": "https://link.to/image1.jpg",
			"Order": 1
		}
		...Images
	]
}

πŸ’‘Important!

  • ShortDescr – is allowed and mandatory only for PDFs, videos, and 360.
  • KeepAsUrl can be true only for types video, Safety Data Sheet and Size Chart.
  • It is not recommended to send PDF objects more than 50MB and Video objects more than 350MB.

Response

{
 "Code": 201,
 "Message": "Created",
 "Uuid": "E97CD86E-UUID-UUID-UUID-822A2025A8BF"
}

🟑 Update Multimedia

Update multimedia metadata.

PATCH

https://bo.icecat.biz/restful/v3/multimedia/_PRODUCT_ID_?AccessKey=_KEY_&SessionType=Rest

Body for Video

{
	"Uuid": "9EECB48A-6BF0-4B41-9999-B7485C0FEBE",
	"LangId": 1,
	"ShortDescr": "Updated Test",
	"IsPrivate": true,
	"Visible": true,
	"Link": "https://youtu.be/DqQr64kZzAM?si=9igAOeh25D1WAaJE",
	"KeepAsUrl": true,
	"Type": "video/mp4"
}

Uuid – Unique ID for the Multimedia, can be received in Get Multimedia for Product.

Response

{
	"Code": 200,
	"Message": "Updated",
	"Uuid": "9EECB48A-UUID-UUID-UUID-EB7485C0FEBE"
}

🟑 Delete Multimedia

⚠️ Direct deletion is not available for Brand users

To remove a multimedia object from retailer-facing outputs, update the object and set: "Visible": false.

As a result, Multimedia is hidden from retailers, but object remains stored in Icecat. Multimedia can be made visible again via update. This behavior prevents accidental data loss.


πŸ”§ Common Errors
CodeMeaning / What to do
401 UnauthorizedIncorrect SessionID / authentication
403 Access denied. You don’t have permissionUser is working with a product for a not allowed Brand or language
400 Have not this product_id ...The given product does not exist in Icecat
400 This MMO object already present: uuid: ...Multimedia object already exists for the given language
400 URL cant be downloadedProvided URL is incorrect or content is not accessible
400 Content type β€˜...’ is not allowed for type ...Incorrect Type value for Multimedia object
400 Bad Request (with detailed Errors array)One or more fields are invalid; check FieldPath and message

Local Content – Product Model Name

Basic short description of the product.

🟣 Get Product Model Names

Retrieve Product Model Names for all locales.

GET

https://bo.icecat.biz/restful/v2/ProductModelName/_PRODUCT_ID_?access_key=_KEY_&session_type=rest

Key Output

{
  "product_model_name": "TEST7777",
  "product_name": {
    "0": {
      "name": "TEST7777",
      "langid": "0"
    },
    "2": {
      "product_name_id": "27834083",
      "name": "LOCAL MODEL NAME",
      "langid": "2"
    }
  }
}

Important fields:

  • product_model_name – default/current model name
  • product_name – list of localized model names
  • langid – language identifier
  • product_name_id – internal localized model name identifier

🟒 Create Product Model Name

Add a Product Model Name for a specific language.

POST

https://bo.icecat.biz/restful/v2/ProductModelName/_PRODUCT_ID_?lang_id=2&access_key=_KEY_&session_type=rest

Body

{
  "name": "LOCAL MODEL NAME"
}

Key Output

{
	"message": "Created",
	"id": "134515110"
}

Fields

  • name – localized Product Model Name

πŸ’‘Important!

  • This endpoint uses snake_case parameters
  • lang_id defines the target locale
  • Use only languages assigned to your account
  • Brand users cannot create INT Product Model Name (lang_id=0)

🟑 Update Product Model Name

Update an existing Product Model Name.

PATCH

https://bo.icecat.biz/restful/v2/ProductModelName/_PRODUCT_ID_?lang_id=2&access_key=_KEY_&session_type=rest

Body

{
  "name": "LOCAL MODEL NAME"
}

Key Output

{
 "product_model_name": "LOCAL MODEL NAME",
 "product_name": {
 "0": {
   "name": "LOCAL MODEL NAME",
    "langid": "0"
 },
 "2": {
   "product_name_id": "27834083",
   "product_id": "134515110",
   "name": "LOCAL MODEL NAME", 
   "langid": "2",
   "updated": "2025-09-02 16:28:35"
 }
},
"product_model_name_local": [
 {
   "product_name_id": "27834083",
   "product_id": "134515110",
   "name": "LOCAL MODEL NAME",
   "langid": "2",
   "updated": "2025-09-02 16:28:35"
 }],
 "readOnlyProductName": false
}

Fields

  • name – updated localized Product Model Name

πŸ”΄ Delete Product Model Name

Remove Product Model Name for a specific language.

DELETE

https://bo.icecat.biz/restful/v2/ProductModelName/_PRODUCT_ID_?lang_id=2&access_key=_KEY_&session_type=rest

πŸ’‘Important!

  • Use Delete when you want to remove a Product Model Name completely
  • Do not send empty name values in Create or Update requests
  • Brand users cannot delete INT Product Model Name (lang_id=0)

Key Output

{
	"message": "Deleted",
	"id": "134515110"
}

πŸ”§ Common Errors
CodeMeaning / What to do
401 UnauthorizedIncorrect authentication / SessionID
403 Access denied. You don’t have permissionUser is not allowed to work with this Brand or language
400 Language ID is not foundInvalid LanguageId
400 Product name already existsProduct Model Name already exists for the given language
400 Product name is not foundNo Product Model Name exists for the specified language
400 Product name shouldn’t be emptyEmpty values are not allowed; use Delete instead
400 Product name should be less than 3000 charactersProduct Model Name exceeds maximum allowed length
400 Brand user cannot change INT product nameBrand users cannot modify International Product Model Name (langId=0)

Local Content – Descriptions

Long detailed marketing text for a product.

🟣 Get Descriptions

Retrieve descriptions for a product.

GET

https://bo.icecat.biz/restful/v3/ProductDescriptions?ProductId=_PRODUCT_ID_&AccessKey=_KEY_&SessionType=rest

Key Output

{
	"Data": {
		"Descriptions": [
			{
				"ProductDescriptionId": 66695681,
				"LanguageId": 1,
				"ShortDescription": "963XL High Yield Magenta Original Ink Cartridge",
				"LongDescription": "Ideal for workgroups who need dependable performance for professional-quality printing, page after page.\nCount on professional-quality documents. Original HP ink cartridges provide impressive reliability for dependable performance, reliable page yields, and durable results.[3] Print business documents that combine vibrant colours and sharp black text.",
				"OfficialUrl": "https://www8.hp.com",
				"WarrantyInfo": "HP’s ink cartridges and printheads are warranted to be free from defects in materials and workmanship during the period of the warranty.",
				"SeoTitle": "",
				"SeoDescription": "",
				"SeoKeywords": "",
				"Disclaimer": "[3] Based on HP internal testing and Wilhelm Imaging Research Dark Storage Statement. See http://www.hp.com/go/printpermanence.\n[3] Based on HP internal testing. See http://www.hp.com/go/printpermanence.",
				"MiddleDescription": "Produce sharp black text and vibrant colour prints",
				"Updated": "2025-04-16 20:11:15"
			}
			...descriptions
		],
		"OnlyMandatoryLanguages": 0,
		"OfficialUrlIsMandatory": 1,
		"MandatoryLanguages": [
			0
		],
		"AllowedLanguages": [
			0
		]
	}
}

Important fields:

  • ProductDescriptionId – unique description identifier
  • LanguageId – locale identifier
  • Updated – last modification timestamp

🟒 Create Description

Add a description for a specific language.

POST

https://bo.icecat.biz/restful/v3/ProductDescriptions?AccessKey=_KEY_&SessionType=rest

Key Output

{
	"ProductId": _product_id_,
	"LanguageId": 1,
	"ShortDescription": "Full product name",
	"LongDescription": "Localized description",
	"OfficialUrl": "https://my.brand.de",
	"WarrantyInfo": "5 years",
	"SeoTitle": "",
	"SeoDescription": "",
	"SeoKeywords": "",
	"Disclaimer": "",
	"MiddleDescription": "Short localized description"
}

πŸ’‘Important!

  • LanguageId defines the target locale
  • Use only languages assigned to your account
  • Use Create only if a description for the language does not yet exist

🟑 Update Description

Update an existing description.

PATCH

https://bo.icecat.biz/restful/v3/ProductDescriptions/_PRODUCT_DESCRIPTION_ID_?AccessKey=_KEY_&SessionType=rest

Body

{
	"LanguageId": 1,
	"ShortDescription": "Updated Full product name",
	"LongDescription": "Updated localized description",
	"OfficialUrl": "https://my.brand.de",
	"WarrantyInfo": "5 years",
	"SeoTitle": "",
	"SeoDescription": "",
	"SeoKeywords": "",
	"Disclaimer": "",
	"MiddleDescription": "Updated short localized description"
}

Response

{
	"ProductId": _product_id_,
	"LanguageId": 1,
	"ShortDescription": "Updated Full product name",
	"LongDescription": "Updated localized description",
	"OfficialUrl": "https://my.brand.de",
	"WarrantyInfo": "5 years",
	"SeoTitle": "",
	"SeoDescription": "",
	"SeoKeywords": "",
	"Disclaimer": "",
	"MiddleDescription": "Updated short localized description"
}

πŸ”΄ Delete Description

Remove description for a specific language.

DELETE

https://bo.icecat.biz/restful/v3/ProductDescriptions/_PRODUCT_DESCRIPTION_ID_?SessionType=rest&AccessKey=_KEY_

πŸ’‘Important!

  • Use Delete to remove a description completely
  • Do not send empty values in Create or Update requests
  • Deletion affects only the specified language

Response

{
	"Data": {}
}

πŸ”§ Common Errors
CodeMeaning / What to do
401 UnauthorizedIncorrect SessionID / authentication
403 Access denied. You don’t have permissionUser tries working with a product for a Brand or language it is not authorized to
400 Requested product does not existThe provided ProductId is absent in the Icecat database
400 Language ID is incorrect for youUser uses a language that is not assigned to the account
400 Product description already existsDescription already exists for the given language; use Update instead of Create
400 Unusable phrase found in 'Disclaimer'Disclaimer contains prohibited wording (CE-certification, CE certification, certification CE, certification-CE, CE-gepruft, gepruft CE)
400 Field Disclaimer must be filled for a dangerous productProduct has IsDangerous=true; provide a non-empty Disclaimer value
400 Bad Request (with detailed Errors array)One or more fields are invalid; check FieldPath and message

Local Content – Bullet Points

Although BulletPoints are part of Descriptions, they have their own API.

🟣 Get BulletPoints

Get Bullet Points for a product for a locale.

GET

https://bo.icecat.biz/restful/v3/BulletPoints?ProductId=_PRODUCT_ID_&LanguageId=1&AccessKey=_KEY_&SessionType=rest

Key Output

{
  "Data": [{
    "BulletPointsId": 15295228,
    "ProductId": 134515110,
    "LanguageId": 1,
    "Value": "Bullet Point text"
    }]
}

🟒 Create BulletPoint

Create Bullet Points for a product

POST

https://bo.icecat.biz/restful/v3/BulletPoints?AccessKey=_KEY_&SessionType=rest

Body

{
 "ProductId": _PRODUCT_ID_,
 "LanguageId": 1,
 "Value": "BulletPoint1\nBulletPoint2"
}

⚠️ Use \n to separate BulletPoints, as shown above.

Identical BulletPoints will be merged after saving.

Key Output

{
 "Data": {
   "BulletPointsId": 15296841,
   "ProductId": 134515110,
   "LanguageId": 1,
   "Value": "BulletPoint1\nBulletPoint2"
  }
}

🟑 Update BulletPoint

Update local Bullet Point by the BulletPoint ID,

POST

https://bo.icecat.biz/restful/v3/BulletPoints/_BULLETPOINT_ID_?AccessKey=_KEY_&SessionType=rest

Body

{
 "LanguageId": 1,
 "Value": "Updated value"
}

Key Output

{
  "Data": {
    "BulletPointsId": 14481404,
    "ProductId": 134515110,
    "LanguageId": 1,
    "Value": "Updated value"
    }
}

πŸ”΄ Delete BulletPoint

Delete BulletPoint by Bullet Point ID for a selected language.

DELETE

https://bo.icecat.biz/restful/v3/BulletPoints/_BULLETPOINT_ID_?AccessKey=_KEY_&SessionType=rest

⚠️ Important!

  • Use Delete to remove a Bullet Point completely
  • Do not send empty values in Create or Update requests
  • Deletion affects only the specified language

Key Output

{
 "Data": {
  "BulletPointsId": 14481404,
  "ProductId": 134515110,
  "LanguageId": 1,
  "Value": "I was deleted"
 }
}

πŸ”§ Common Errors
CodeMeaning / What to do
401 UnauthorizedIncorrect SessionID / authentication
400 Requested product does not existGiven product is not in the Icecat database.
400 You are not allowed to use passed LanguageIdUser sets not allowed language.
400 Bullet points already existsBullet points already exist for such language.
400 Nothing to updateUser sets incorrect bullet point or it does not exist.
400 Nothing to deleteUser sets incorrect bullet point or it does not exist.

International & Local Content – Features

Extensive technical specs for the product.

🟣 Get Product International Features

Get International values for all product features.

GET

https://bo.icecat.biz/rest/productfeatures/__PRODUCT_ID_?showFeature=black&access_key=_KEY_&session_type=rest

⚠️ this endpoint uses snake_case for parameters

showFeature – either:

  • β€œβ€ (empty) – return all Features.
  • black – return only black Features.
  • grayFill – return only gray Features that are filled.
  • grayEmpty – return all gray Features, including empty.

Key Output

[{
 "category_feature_group_id": "10935",
 "group_value": "Technical details",
 "langid": 0,
 "sid": "96542",
 "category_feature_id": "968454",
 "cf_no": "0",
 "cfg_no": "-15",
 "order_number": "100000",
 "cf_searchable": "0",
 "restricted_search_values": null,
 "use_dropdown_input": "",
 "mandatory": "0",
 "is_hidden": "0",
 "cf_value_sorting": "0",
 "avoid_auto_ordering": "0",
 "participate_in_title": "0",
 "feature_id": "19101",
 "tid": "27160",
 "measure_id": "29",
 "type": "textarea",
 "class": "0",
 "limit_direction": "0",
 "f_searchable": "0",
 "restricted_values": "",
 "f_value_sorting": "1",
 "highlight_supplier_id": "0",
 "num_products": "9679",
 "brand_specific": "0",
 "value": "Safety warning",
 "system_of_measurement": "metric",
 "sign": "",
 "measure_sign": "",
 "pattern": "",
 "patternName": "Text area"
  },
  ...features
]
  • product_feature & product_counter – exist only for filled specs and can be used to request local spec values – see Get Product Local Feature.
  • restricted_search_values – this field contains a full list of allowed values for the current feature. The value separator is \n. A value from this list should be used only if the current feature has the parameter use_dropdown_input equal to Y.
  • use_dropdown_input – if this field value is Y it means that this feature’s value can only be one of the restricted_values.
  • mandatory – if 1(True), means that this feature highly recommended for filling.
  • is_hidden – if 1(True), means that this feature belongs to the gray features list.
  • participate_in_title, if 1 (True), means that the feature value will be used for creating a local product title if in the given product local product name for the given language is not filled.
  • type – contains the product feature type. See πŸ” Reference File Manual β†’ FeaturesList.
  • restricted_values – this field contains a full list of allowed values for the current feature. The value separator is \n. A value from this list should only be used if the current feature has the parameter use_dropdown_input equal to N or β€œβ€ (empty). Only for feature types dropdown, y_n and multi_dropdown.
  • value – contains product feature name.
  • product_feature.value – contains international feature value.
  • product_counter. languages_ids – contains the list of language ids for getting local feature values
  • category_feature_id – contains identifier relation between feature and category

🟣 Get Product Local Features

Get Local values for all product features.

GET

https://bo.icecat.biz/rest/productfeatures/134515110?lang_id=1&category_feature_id=304141&access_key=_KEY_&session_type=Rest

Params

⚠️ this endpoint uses snake_case for parameters

  • lang_id – optional parameter that can be used for filtering the response list. If absent or equals 0 (International), the response will contain a full list of the filled features.
  • category_feature_id – optional, if you want to get the data for one category_feature only. ID of the CategoryFeature, may be received in Get Product International Features.

Key Output

category_feature_id not provided

[{
 "category_feature_group_id": "10935",
 "group_value": "Technical details",
 "langid": 0,
 "sid": "132790",
 "category_feature_id": "304141",
 "cf_no": "0",
 "cfg_no": "-15",
 "order_number": "100000",
 "cf_searchable": "0",
 "restricted_search_values": "",
 "use_dropdown_input": "",
 "mandatory": "0",
 "is_hidden": "1",
 "cf_value_sorting": "0",
 "avoid_auto_ordering": "0",
 "participate_in_title": "0",
 "feature_id": "38067",
 "tid": "64606",
 "measure_id": "26",
 "type": "y_n",
 "class": "0",
 "limit_direction": "0",
 "f_searchable": "0",
 "restricted_values": "Y\nN",
 "f_value_sorting": "1",
 "highlight_supplier_id": "0",
 "num_products": "73",
 "brand_specific": "0",
 "value": "ECO Garantie",
 "system_of_measurement": "metric",
 "sign": "",
 "measure_sign": "",
 "pattern": "",
 "patternName": "Yes/No"
},
 ....features
]

category_feature_id not provided

{
 "product_feature": {
  "product_feature_id": "857045843",
  "value": "ARA,DEU,ENG,ESP,FRE,ITA,DUT,CHI",
  "category_feature_id": "689788",
  "updated": "2025-10-08 17:36:31",
  "editor_user_id": "104551"
 },
 "product_features_local": []
}

🟒 Create Value for Product Feature

Create Value for International or Local feature.

POST

https://bo.icecat.biz/rest/productfeatures/_PROD_ID_?access_key=_KEY_&lang_id=0&session_type=rest

⚠️ this endpoint uses snake_case for parameters

Body

{ 
 "category_feature_id": "968454",
 "value": "Test"
}

category_feature_id – ID of the CategoryFeature, may be received from CategoryFeaturesList. See πŸ” Reference Files manual.

value – your value for a feature.

Key Output

{
 "message": "Created",
 "id": "840501195"
}

🟑 Update Value for Product Feature

Update the local or international value for the product feature.

PATCH

https://bo.icecat.biz/rest/productfeatures/_PRODUCT_ID_?lang_id=0&access_key=_KEY_&product_feature_id=840501195&session_type=rest

⚠️ this endpoint uses snake_case for parameters

  • lang_id – optional parameter that can be used for filtering the response list. If absent or equals 0 (International), the response will contain a full list of the filled features.
  • product_feature_id – the ID of the Product Feature, may be received from Get Local Product Features (with category_feature parameter).

Body

{
 "value": "MyValue"
}

To update the feature with type multidropwdown with a few values you need to separate values with comma:

{
 "value": "MyValue1,MyValue2,MyValue3"
}

Key Output

{
 "update_result": {
  "message": "Update",
  "id": 840501195 
 }
}

πŸ”΄ Delete Value for Product Feature

Delete a Local feature value.

DELETE

https://bo.icecat.biz/rest/productfeatures/_PRODUCT_ID_?lang_id=0&access_key=_KEY_&feature_id=840501195&session_type=rest
  • lang_id – optional parameter that can be used for filtering the response list. If absent or equals 0 (International), the response will contain a full list of the filled features.
  • feature_id – the ID of the Product Feature, may be received from Get Local Product Features (with category_feature parameter).

⚠️ Important!

  • Use Delete to remove a Feature Value completely
  • Do not send empty values in Create or Update requests
  • Deletion affects only the specified language

Key Output

{
  "message": "Deleted",
  "id": "134515110"
}

🟒 Create a Restricted Value for Product Feature

Restricted values are the pre-defined values for dropdowns. ‼️Only for features with types dropdown & multidropdown.

POST

https://bo.icecat.biz/restful/v2/featurenewvalues/_PRODUCT_ID_?access_key=sess&session_type=rest

⚠️ this endpoint uses snake_case for parameters

Body

{
 "category_feature_id": "981207",
 "value": "Test and test",
 "info_url": "https://test.text"
}
  • category_feature_id – ID of the CategoryFeature, may be received from Get International / Local Product Features.
  • value – your proposed value. ⚠️ Do not use commas.
  • info_url – the source for your value.

‼️The RestrictedValue will appear only after Icecat QA team confirmation. You can verify the status for your value by contacting us.

Key Output

{
 "message": "Created",
 "id": "276675"
}

πŸ”§ Common Errors
CodeMeaning / What to do
401 UnauthorizedIncorrect SessionID / authentication
400 Have not this product_id _PRODUCT_ID_Given product is absent from the Icecat database.
400 Have not this feature idcategory_feature_id must be provided in quotes.
403 Access deniedUser tries working with a product for a not allowed Brand or language.
400 Feature already existsthe feature for provided category_feature_id already exists. Use Update Value for Product Feature instead.
400 Product can not contain requested featurecategory_feature_id is incorrect.
400 Please, correct the red highlighted fields. Feature ... is ... and have to has .. formatUser sends incorrect type of feature value. Please check the feature type.
400 We have not this value in available values dropdown for FeatureId: ...User sets value that does not exist in the list of restricted values for dropdown or multidropdown.
400 Parameter value must be not empty stringYou shouldn’t send an empty string for removing the current feature value. Use Delete Value for Product Feature instead.
400 Language ID is not foundUser sets langid which is absent in the Icecat database. Please check πŸ” Icecat Locales and Language Code Table.
400 Nothing to deleteFeature has no value for specified lang_id or feature value does not exist.
400 Feature does not exist in the productUser sets incorrect or not existing product_feature_id.
400 This value has been already requested earlierSuch a request to add a RestrictedValue has been sent earlier. Please wait or contact us.

Local Content – Reasons to Buy

Short slides that provides additional marketing data for a product. Consists of Title, Image and Description.

⚠️ API uses a legacy name for Reasons to Buy – Product Bullet.

🟣 Get Reasons to Buy

Get Reasons to Buy for all languages for a particular product.

GET

https://bo.icecat.biz/restful/v3/ProductBullet/_PRODUCT_ID_?AccessKey=_KEY_&SessionType=rest

Key Output

{
 "Data": [{
   "LanguageId": 1,
   "Title": "I am title",
   "Value": "I am reason to Buy",
   "No": 1,
   "IconUrl": "https://images.icecat.biz/img/bullets/134515110-690354a2889a5967307719.jpg",
   "IsPrivate": false,
   "Code": "",
   "BulletId": 94636009,
   "ProductId": 134515110,
   "IconSize": 140297,
   "Updated": "2025-10-30 13:05:54",
   "DataSourceId": 0
   },
  ...reasons to buy
 ]
}

🟒 Create Reason to Buy

Create local or international Reason to Buy.

POST

https://bo.icecat.biz/restful/v3/ProductBullet/_PRODUCT_ID_?AccessKey=_KEY_&SessionType=rest

Body

{
 "LanguageId": 1,
 "Value": "I am a Reason To Buy Description",
 "Title": "I am a Reason to Buy Title",
 "IconUrl": "https://images.icecat.biz/img/bullets/stray.jpg",
 "No": 1,
 "IsPrivate": false
}

⚠️ LanguageId, Value and Title are mandatory and can not be empty.

Key Output

{
 "Data": {
  "BulletId": 94636009,
  "Message": "Created."
 }
}

🟑 Update Reason to Buy

Update a local Reason to Buy by its unique ID.

PATCH

https://bo.icecat.biz/restful/v3/ProductBullet/_BULLET_ID_?AccessKey=_KEY_&SessionType=rest

Bullet ID – unique Reason to Buy ID, may be received from Get Reasons to Buy.

Body

{
 "LanguageId": 1,
 "No": 4,
 "IsPrivate": true
}

Key Output

{
 "Data": {
   "BulletId": 94636009,
   "Message": "Modified."
	}
}

πŸ”΄ Delete Reason to Buy

Delete a Reason to Buy by its unique ID. ⚠️ You can send only one Bullet ID β‡’ only one Reason to Buy can be deleted per request.

DELETE

https://bo.icecat.biz/restful/v3/ProductBullet/_PRODUCT_ID_?AccessKey=_KEY_&SessionType=rest

Body

[_BULLET_ID_]

Bullet ID – unique Reason to Buy ID, may be received from Get Reasons to Buy.

Key Output

{
 "Data": {
  "BulletId": _BULLET_ID_,
  "Message": "Deleted."
 }
}

πŸ”§ Common Errors
CodeMeaning / What to do
401 UnauthorizedIncorrect SessionID / authentication
403 Access denied. You don’t have permissionUser tries working with a product for a not allowed Brand or language.
403 Access deniedGiven ProductID is not in the Icecat database / User sets incorrect BulletID or it does not exist
400 You are not allowed to use LanguageId with value ...User sets a not allowed language
400 Title can not be emptyUser gives an empty Title
400 You are not allowed to access this contentUser sets not allowed language
404 BulletId is not foundUser sets incorrectΒ BulletIdΒ or it does not exist

Product Relations

Product Static Relations are Up-Sell and Cross-Sell relations between products.

🟣 Get Product Static Relations

Get all Related Up-Sell and Cross-Sell products by product ID.

GET

https://bo.icecat.biz/restful/v3/ProductStaticRelations/_PRODUCT_ID_?AccessKey=_KEY_&SessionType=rest

Key Output

{
 "Data": {
  "RelationId": 417955837,
  "FirstProductId": 134515110,
  "SecondProductId": 80439382,
  "Locales": [{
    "LanguageId": 1,
    "RecommendedByBrand": true,
    "RecommendedByBrandFrom": "2021-01-01",
    "RecommendedByBrandTill": "2028-01-01"
    },
    ...locales
    ]
  }
}

🟒 Create Product Static Relation

Create a single product relation for one or several languages.

POST

https://bo.icecat.biz/restful/v3/ProductStaticRelations?AccessKey=_KEY_&SessionType=rest

Body

{
 "FirstProductId": _PRODUCT_ID_1,
 "SecondProductId": _PRODUCT_ID_2,
 "Locales": [{
     "LanguageId": 1,
     "RecommendedByBrand": true,
     "RecommendedByBrandFrom": "2021-01-01",
     "RecommendedByBrandTill": "2028-01-01"
     }
     ...locales
 ]
}

Product ID – unique product ID, may be received from Create Product Search Query.

LanguageId – is mandatory and can not be empty. A user can add more than one Locale at the same time.

Key Output

{
 "Data": {
  "RelationId": 417955837,
  "FirstProductId": 134515110,
  "SecondProductId": 80439382,
  "Locales": [{
    "LanguageId": 1,
    "RecommendedByBrand": true,
    "RecommendedByBrandFrom": "2021-01-01",
    "RecommendedByBrandTill": "2028-01-01"
    }]
  }
}

🟠 Create Batch of Product Static Relations

Assign many product static relations and manage them via the Policy parameter.

PUT

https://bo.icecat.biz/restful/v3/ProductStaticRelations?AccessKey=_KEY_&SessionType=rest

Body

{
 "FirstProductId": {{ _.product_id }},
 "Batch": [{
   "SecondProductId": 123024412,
   "Locales": [{
      "LanguageId": 2,
      "RecommendedByBrand": true,
      "RecommendedByBrandFrom": "2021-01-01",
      "RecommendedByBrandTill": "2028-01-01"
      }]
    },
    ...product static relations
  ],
  "Policy": 
      "CreateOrUpdate",  
      "RemoveLanguageIds":[3]
}

Product ID – unique product ID, may be received from Create Product Search Query.

LanguageId – is mandatory and can not be empty. A user can add more than one Locale at the same time.

Policy – use only CreateOrUpdate.

RemoveLanguageIds – which static relations language you want to delete from

Key Output

{
 "Data": [{
  "SecondProductId": 123024412,
  "Locales": [{
    "LanguageId": 2,
    "RecommendedByBrand": true,
    "StatusCode": 202,
    "StatusMessage": "Queued."
   }],
  "FirstProductId": 134515110
  }]
}

πŸ”΄ Delete Product Static Relation

Delete product static relation by the relation ID.

DELETE

https://bo.icecat.biz/restful/v3/ProductStaticRelations/_RELATION_ID_?AccessKey=_KEY_&SessionType=rest

Relation ID – unique product static relation ID, may be received from Get Product Static Relations.

Key Output

{
  "Data": {}
}

🟒 Create a new Locale for Product Static Relation

Assign a new local for existing product relation by the relation ID.

POST

https://bo.icecat.biz/restful/v3/ProductStaticRelations/_RELATION_ID_/Locales?AccessKey=_KEY_&SessionType=rest

Relation ID – unique product static relation ID, may be received from Get Product Static Relations.

Body

{
 "LanguageId": 2,
 "RecommendedByBrand": false,
 "RecommendedByBrandFrom": "YYYY-MM-DD",
 "RecommendedByBrandTill": "YYYY-MM-DD"
}

Response

{
 "Data": {
   "LanguageId": 2,
   "RecommendedByBrand": false,
   "RecommendedByBrandFrom": "",
   "RecommendedByBrandTill": "" 
 }
}

🟑 Update Product Static Relation Locale

Update a data for a local product relation, identified by Relar

PATCH

https://bo.icecat.biz/restful/v3/ProductStaticRelations/_RELATION_ID_/Locales/_LANGUAGE_ID_?AccessKey=_KEY_&SessionType=rest

Body

{
  "RecommendedByBrand": true,
  "RecommendedByBrandFrom": "YYYY-MM-DD",
  "RecommendedByBrandTill": "YYYY-MM-DD"
}

Key Output

{
  "Data": {
     "LanguageId": 2,
     "RecommendedByBrand": true,
     "RecommendedByBrandFrom": "YYYY-MM-DD",
     "RecommendedByBrandTill": "YYYY-MM-DD"
 }
}

πŸ”΄ Delete Product Static Relation Locale

Delete a relation language from relation by its ID.

DELETE

https://bo.icecat.biz/restful/v3/ProductStaticRelations/_RELATION_ID_/Locales/_LANGUAGE_ID_?AccessKey=_KEY_&SessionType=rest

Relation ID – unique product static relation ID, may be received from Get Product Static Relations.

Language ID – received in Get your Languages.

Key Output

{
  "Data": {}
}

πŸ”§ Common Errors
ErrorMeaning / What to do
401 UnauthorizedInvalid or missing authentication (SessionId or API token). Check credentials.
403 You do not have an access to first productUser tries working with a product for a not allowed Brand or language
400 Invalid product idGiven Product ID is not in the Icecat database.
403 You do not have an access to one of the localesUser sets not allowed language
400 Relation between given products already existsRelation between given products already exists. To add a new locale to an existing relation see Create a new Locale for Product Static Relation.
400 /Locales/0/LanguageId is requiredUser sets empty Locales.
400 Invalid relation idUser sets incorrect RelationID or it does not exist
400 Invalid language idUser sets incorrect LanguageID or such locale does not exist in product relation

Product Access Management

Endpoints used to control who can access the product.

Assigned Resellers

For some products you can limit the display for certain users, who are assigned resellers of a particular brand.

🟣 Get assigned channel partners for a Brand

Get all channel parners for selected brand.

GET

https://bo.icecat.biz/restful/v3/Users?Query=&Type=Assigned&BrandId=11943&AccessKey=_KEY_&SessionType=rest
  • BrandId – unique Brand identifier. Can be fetched in Get Your Assigned Brands method.

Key Output

{
"Data": [{
	"UserId": "11111",
	"CompanyName": "Icecat",
	"UserLogin": "Icecat_Test_user"
},
{
	"UserId": "22222",
	"CompanyName": "Your company",
	"UserLogin": "your_login"
},
...
]}

🟣 Get AssignedResellers for the Product

Get channel partners assigned to a particular product. Note that for products with Publish=L (Limited), brand assignment is not enough, you have to be manually assigned for a product.

GET

https://bo.icecat.biz/restful/v2/ProductPersonalizedAccess/__PRODUCT_ID__?access_key=_KEY_&session_type=rest

Key Output

{
 "Data": [{
   "UserId": 110865,
   "UserLogin": "test"
   "CompanyName": "Icecat"
   }]
}

🟑 Update Assigned Resellers for the Product

Assign users by their IDs to a certain product.

PATCH

https://bo.icecat.biz/restful/v3/Countries?AccessKey=_KEY_&SessionType=rest

Body

{
 "UserId": [110865]
}

UserId – can be received from Get AssignedResellers for the Product.

Response

{
 "Message": "Added"
}

πŸ”΄ Delete Assigned Resellers for the Product

Delete Assigned Resellers for the product by ID.

DELETE

https://bo.icecat.biz/restful/v2/ProductPersonalizedAccess/__PRODUCT_ID_?access_key=_KEY_&session_type=rest

Body

{
 "UserId": [110865]
}

Key Output

{
 "Message": "Deleted"
}

πŸ”§ Common Errors
CodeMeaning / What to do
401 UnauthorizedIncorrect SessionID / authentication
400 User(s) already exist in access listSuch UserId is already authorized for the product.
400 User(s) is not assigned brandThe given UserId does not belong to the list of authorized Brand resellers.
404 Brand for product is not foundProduct_ID is incorrect.
404 User(s) is not foundThe given UserId is absent in the Icecat database.
400 User(s) is not found in access listSuch UserId is absent for the product.

Publication Dates

Determines when the product becomes available for users you assigned it for. Publication date is not the same as Release date.

Not published products are not available to anyone.

🟣 Get All Product PublicationDates

Get PublicationDates for all locales.

GET

https://bo.icecat.biz/restful/v3/ProductPublicationDates?ProductID=_PRODUCT_ID_&SessionType=rest&AccessKey=_KEY_

Key Output

{
  "Data": {
    "PublicationDates": [{
	"ProductPublicationDateId": 2033,
	"LanguageId": 0,
	"PublicationDate": "2026-03-25"
     },
     {
	"ProductPublicationDateId": 2034,
	"LanguageId": 1,
	"PublicationDate": "2026-04-25"
     },
   ...publication dates.
    ]
  }
}

🟒 Create Product PublicationDate

Assign product publication date to a product for a country,

POST

https://bo.icecat.biz/restful/v3/Countries?AccessKey=_KEY_&SessionType=rest

Body

{
 "ProductId": _product_id_ ,
 "LanguageId": 1,
 "PublicationDate": "2026-04-25"
}

Key Output

{
 "Data": {
  "ProductPublicationDateId": 2034,
  "ProductId": 134515110,
  "LanguageId": 1,
  "PublicationDate": "2026-04-25"
  }
}

🟣 Get Product PublicationDate by ID

Get product publication date by PublicationDate ID.

GET

https://bo.icecat.biz/restful/v3/ProductPublicationDates/_PUBLICATION_DATE_ID_?SessionType=rest&AccessKey=_KEY_

Key Output

{
 "Data": {
  "ProductPublicationDateId": 2034,
  "ProductId": 134515110,
  "LanguageId": 1,
  "PublicationDate": "2026-04-25"
  }
}

🟑 Update Product PublicationDate by ID

Update publication date for a locale

PATCH

https://bo.icecat.biz/restful/v3/ProductPublicationDates/_PUBLICATION_DATE_ID_?SessionType=rest&AccessKey=_KEY_

Body

{
  "PublicationDate": "2026-05-25"
}

Key Output

{
 "Data": {
   "ProductPublicationDateId": 2034,
   "ProductId": 134515110,
   "LanguageId": 1,
   "PublicationDate": "2026-05-25"
 }
}

πŸ”΄ Delete Product PublicationDate by ID

Delete product Publication date by date ID.

DELETE

https://bo.icecat.biz/restful/v3/ProductPublicationDates/_PUBLICATION_DATE_ID_?SessionType=rest&AccessKey=_KEY_

πŸ’‘Important!

  • Use Delete to remove a Publication Date completely
  • Do not send empty values in Create or Update requests
  • Deletion affects only the specified language

Key Output

{
 "Data": {}
}

πŸ”§ Common Errors
CodeMeaning / What to do
401 UnauthorizedIncorrect SessionID / authentication

Product Life Cycle

Release and End of Life dates determine when the product becomes available for all users. Release date is not the same as Publication date.

Not released products are still available to assigned users.

🟣 Get Product Life Cycle

Get the product’s Release and End of Life dates for each country.

GET

https://bo.icecat.biz/restful/v3/ProductLifeCycles?ProductId=__ID__&AccessKey=_KEY_&SessionType=rest

Key Output

{
"Data": [{
 "LifeCycleId": 133692388,
 "ProductId": 134515110,
 "CountryId": 2,
 "ReleaseDate": "31-12-2000",
 "EndOfLifeDate": "31-12-3000"
}]
}

🟒 Create Product Life Cycle

Assign product’s Release and End of Life dates for a Country,

POST

https://bo.icecat.biz/restful/v3/Countries?AccessKey=_KEY_&SessionType=rest

Body

{
	"ProductId": {{ _.product_id }},
	"CountryId": 2,
	"ReleaseDate": "03-12-1965",
	"EndOfLifeDate": "08-11-2026"
}

Key Output

{
"Data": {
 "LifeCycleId": 133692388,
 "ProductId": 134515110,
 "CountryId": 2,
 "ReleaseDate": "03-12-1965",
 "EndOfLifeDate": "08-11-2026"
 }
}

🟑 Update Product LifeCycle

Update product’s Release and End of Life dates for a Country,

PATCH

https://bo.icecat.biz/restful/v3/ProductLifeCycles/__LIFECYCLE_ID__?AccessKey=_KEY_&SessionType=rest

Body

{
 "ReleaseDate": "31-12-2000",
 "EndOfLifeDate": "31-12-3000"
}

Key Output

{
 "Data": {
   "LifeCycleId": 133692388,
   "ProductId": 134515110,
   "CountryId": 2,
   "ReleaseDate": "31-12-2000",
   "EndOfLifeDate": "31-12-3000"
 }
}

πŸ”΄ Delete Product LifeCycle

Delete product’s Release and End of Life dates for a Country,

DELETE

https://bo.icecat.biz/restful/v3/ProductLifeCycles/__LIFECYCLE_ID__?AccessKey=_KEY_&SessionType=rest

Body

{
 "DateNames": [
  "ReleaseDate",
  "EndOfLifeDate"
 ]
}

πŸ’‘ You can delete Release and EndOfLife separately or in one request.

Key Output

{
 "Data": {
   "LifeCycleId": 133692388,
   "ProductId": 134515110,
   "CountryId": 2,
   "ReleaseDate": "",
   "EndOfLifeDate": ""
	}
}

πŸ”§ Common Errors
CodeMeaning / What to do
401 UnauthorizedIncorrect SessionID / authentication
403 Access deniedUser tries viewing a product for a Brand it is not authorized to.
400 ProductId is unknownUser uses a ProductId which is absent in the Icecat database.
400 ReleaseDate | EndOfLifeDate already existsRelease or End of life date already exists for the given country.
400 ReleaseDate should be less than EndOfLifeDateUser enters a ReleaseDate later than EndOfLifeDate.
400 CountryId is unknownUser uses a CountryId which is absent in the Icecat database.
404 Life cycle is not foundUser uses LifeCycleId which is absent in the Icecat database.
400 Requested life cycle does not have ReleaseDate | EndOfLifeDateUser tries to delete ReleaseDate
or EndOfLifeDate which are already absent in the Icecat database.

Leave a Reply

Your email address will not be published. Required fields are marked *

manual thumbnail3

Manual for Icecat Live: Real-Time Product Data in Your App

Icecat Live is a (free) service that enables you to insert real-time produc...
 June 10, 2022
Icecat CSV Interface
 September 28, 2016

Icecat Add-Ons Overview. NEW: Claude AI, ChatGPT, AgenticFlow.AI, Mindpal.space and BoltAI

Icecat has a huge list of integration partners, making it easy for clients ...
 September 3, 2025
LIVE JS

How to Create a Button that Opens Video in a Modal Window

Recently, our Icecat Live JavaScript interface was updated with two new fun...
 November 3, 2021
New Standard video thumbnail

Autheos video acquisition completed

July 21, Icecat and Autheos jointly a...
 September 7, 2021
 January 20, 2020
Manual How to Import Free Product Content Into Your Webshop via Icecat

Manual: How to Import Free Product Content Into Your E-commerce System via Icecat API

This guide is intended for developers working with Icecat via API. The docu...
 May 24, 2024