curl --request POST \
--url https://omnicommerce.sg/api/v1/brandsgateway/import \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"importAllMatching": true,
"maxProducts": 10,
"filters": {
"categoryIds": [
71816
],
"vendorIds": [
73680
],
"brandIds": [
68571,
615
],
"updatedAtMin": "2026-10-01"
}
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
importAllMatching: true,
maxProducts: 10,
filters: {
categoryIds: [71816],
vendorIds: [73680],
brandIds: [68571, 615],
updatedAtMin: '2026-10-01'
}
})
};
fetch('https://omnicommerce.sg/api/v1/brandsgateway/import', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://omnicommerce.sg/api/v1/brandsgateway/import"
payload = {
"importAllMatching": True,
"maxProducts": 10,
"filters": {
"categoryIds": [71816],
"vendorIds": [73680],
"brandIds": [68571, 615],
"updatedAtMin": "2026-10-01"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"ok": true,
"apiVersion": "<string>",
"operationId": "<string>",
"status": "completed",
"data": {
"success": true,
"catalogProductIds": [
123
],
"importedProductIds": [
"<string>"
],
"importAllMatching": true,
"succeededCount": 4503599627370495,
"failedCount": 4503599627370495,
"skippedCount": 4503599627370495,
"results": [
{
"success": true,
"catalogProductId": 123,
"productId": "<string>",
"skipped": true,
"error": "<string>"
}
],
"runEnrichment": true,
"enrichmentQueued": true,
"taxonomyAssignments": [
{
"marketplace": "<string>",
"storeId": "<string>",
"storeName": "<string>",
"country": "<string>"
}
],
"error": "<string>"
},
"error": "<string>",
"links": {},
"warnings": [
"<string>"
],
"recommendations": [
"<string>"
]
}Import BrandsGateway Products
Requires catalog:write and a connected BrandsGateway account. Uses the same parameters and import service as the import_brandsgateway_products tool.
Selection
Choose catalogProductIds or importAllMatching with filters. maxProducts limits new imports to 1–50 across pages (default 50); already imported products are skipped. Numeric brandIds, vendorIds (supplier warehouses), categoryIds, and conditionIds arrays match any value within each field and all supplied fields together. Omit a field for no restriction; empty arrays and legacy singular/string filters are rejected. Brands accept at most 500 IDs; other filter arrays accept at most 50 each. Broad combinations may exceed the supplier request budget and return a failure asking you to narrow the filters.
Updated dates and enrichment
updatedAtMin and updatedAtMax map to the supplier updated_at_min and updated_at_max filters; dates use midnight UTC. There is no creation-date sorting. Products import as drafts. Connected marketplace selections and country apply to the entire import. Enrichment and taxonomy are queued according to the organization’s BrandsGateway preferences; any AI usage is billed to that organization. This endpoint does not publish listings.
Result
Returns HTTP 200 when the import attempt finishes, including partial failures. Inspect ok, data.success, counts, results, and data.error; failed or partial imports have ok=false and status=failed. Enrichment may still be running when data.enrichmentQueued=true.
curl --request POST \
--url https://omnicommerce.sg/api/v1/brandsgateway/import \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"importAllMatching": true,
"maxProducts": 10,
"filters": {
"categoryIds": [
71816
],
"vendorIds": [
73680
],
"brandIds": [
68571,
615
],
"updatedAtMin": "2026-10-01"
}
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
importAllMatching: true,
maxProducts: 10,
filters: {
categoryIds: [71816],
vendorIds: [73680],
brandIds: [68571, 615],
updatedAtMin: '2026-10-01'
}
})
};
fetch('https://omnicommerce.sg/api/v1/brandsgateway/import', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://omnicommerce.sg/api/v1/brandsgateway/import"
payload = {
"importAllMatching": True,
"maxProducts": 10,
"filters": {
"categoryIds": [71816],
"vendorIds": [73680],
"brandIds": [68571, 615],
"updatedAtMin": "2026-10-01"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"ok": true,
"apiVersion": "<string>",
"operationId": "<string>",
"status": "completed",
"data": {
"success": true,
"catalogProductIds": [
123
],
"importedProductIds": [
"<string>"
],
"importAllMatching": true,
"succeededCount": 4503599627370495,
"failedCount": 4503599627370495,
"skippedCount": 4503599627370495,
"results": [
{
"success": true,
"catalogProductId": 123,
"productId": "<string>",
"skipped": true,
"error": "<string>"
}
],
"runEnrichment": true,
"enrichmentQueued": true,
"taxonomyAssignments": [
{
"marketplace": "<string>",
"storeId": "<string>",
"storeName": "<string>",
"country": "<string>"
}
],
"error": "<string>"
},
"error": "<string>",
"links": {},
"warnings": [
"<string>"
],
"recommendations": [
"<string>"
]
}Authorizations
Bearer API key for server-to-server access. Session auth is also supported in first-party UI flows.
Body
BrandsGateway catalog product IDs (supplier numbers, not Omni product IDs). Trimmed and de-duplicated while preserving order. Max 50.
1 - 50 elementsx <= 9007199254740991Import up to maxProducts products matching filters instead of an explicit catalogProductIds list (defaults to 50).
Maximum products to import in this call (1–50, defaults to 50). Applied across all matching catalog pages. An explicit catalogProductIds selection cannot exceed this limit after deduplication.
1 <= x <= 50Catalog product IDs to skip when importAllMatching is true.
2000x <= 9007199254740991Listing filters when importAllMatching is true. Numeric ID arrays match any ID within each field, and all supplied fields must match. Omit a field to leave it unrestricted.
Show child attributes
Show child attributes
Connected marketplaces to assign on import. Taxonomy enrichment uses taxonomy-capable stores from this list.
81 - 40Connected store ID keyed by marketplace.
Show child attributes
Show child attributes
Shared country for the selected import stores.
2 - 80Required for session auth; derived from the credential for bearer auth.
1 - 255Response
Import attempt finished. Inspect success and per-product results, including partial failures.