Icecat Brand Push API Schema

By
api-schema-image

Version: 2.3
Updated on: October 6rd, 2026

This document serves as a comprehensive technical reference and cheatsheet for the Icecat Brand API schema. Designed for integration developers, this extensive specification outlines the structural requirements, endpoints, and data models necessary for successful integration.

Please be advised that this schema is intended to function as a companion to the broader Icecat Brand API ecosystem; due to its technical complexity and specialized nature, the documentation may be difficult to navigate for those new to the platform without the foundational context provided in the primary documentation.

If you are seeking an introduction to the Brand API or require a step-by-step guide to get started, please first consult the πŸ” Brand API Manual before proceeding with this schema.

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. Not accepted from brand accounts. For a brand account the international product name is taken from PartCode and cannot be set or changed; sending this field returns 400 Wrong parameter ProductName. To give the product a readable name, add a Product Model Name per language after creation β€” see Product 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

GTIN (Product Identifiers)

GTINs are documented separately. They are no longer described on this page β€” the operations, the batch policies, the limits and the error messages are all in one place now.

πŸ” Manual for Brand Partners: Icecat Product GTINs

The operation-by-operation contract is in the Icecat API swagger: open https://api.icecat.biz/, keep the bo.icecat.biz definition that opens by default, and choose the Product GTIN tag.

The endpoints themselves are unchanged. Only the documentation has moved.

Product Gallery

The gallery is documented separately. It runs on an API of its own and is no longer described on this page β€” the manual, the field reference, the limits and the error messages are all in one place now.

πŸ” Manual for Brand Partners: Icecat Gallery API

πŸ” Manual for Brand Partners: Migrating a Gallery Integration to the Icecat Gallery API, if you already push images through the old Gallery endpoints

πŸ” How to Make the Product Gallery Great Again – which pictures to choose, and what each image type is for

The operation-by-operation contract is in the Icecat API swagger: open https://api.icecat.biz/ and choose api.icecat.biz in the definition selector, then the product-gallery tag.

The old Gallery endpoints keep working and are unchanged. They will be retired once integrations have moved.

Product Multimedia

Multimedia is documented separately. It is no longer described on this page β€” the asset types, the recognised document captions, the operations, the batch policies, the limits and the error messages are all in one place now.

πŸ” Manual for Brand Partners: Icecat Product Multimedia

πŸ” Multimedia Assets and Documents Overview – what each asset is, and what a channel partner does with it

The operation-by-operation contract is in the Icecat API swagger: open https://api.icecat.biz/, keep the bo.icecat.biz definition that opens by default, and choose the Multimedia tag.

The endpoints themselves are unchanged. Only the documentation has moved.

Product Model Name

Product Model Name is documented separately. It is no longer described on this page β€” the operations, the batch call, the limits and the error messages are all in one place now.

πŸ” Manual for Brand Partners: Icecat Product Model Name

The operation-by-operation contract is in the Icecat API swagger: open https://api.icecat.biz/, keep the bo.icecat.biz definition that opens by default, and choose the Product Model Names tag.

The endpoints themselves are unchanged. Only the documentation has moved.

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?ProductId=_PRODUCT_ID_&AccessKey=_KEY_&SessionType=rest

ProductId – unique product ID, mandatory.

Key Output

{
 "Data": [{
  "RelationId": 417955837,
  "FirstProductId": 134515110,
  "SecondProductId": 80439382,
  "Locales": [{
    "LanguageId": 1,
    "RecommendedByBrand": true,
    "RecommendedByBrandFrom": "2021-01-01",
    "RecommendedByBrandTill": "2028-01-01"
    }]
  },
  ...relations
 ],
 "Pagination": {
  "ItemsBefore": 0,
  "ItemsAfter": 0,
  "ItemsTotal": 1
 }
}

RelationId – use this value in all methods below that require a relation ID.

A product with no relations returns an empty Data array and code 200 β€” this is not an error.


🟒 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 Channel Partners: Icecat Live HTML

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

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
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