curl --request POST \
--url https://omnicommerce.sg/api/v1/products \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"product": {
"id": "cml55mqcq06vwo20ialgr54ry",
"sku": "TZVBGTB82269",
"sku_tpp": "TZVBGTB82269",
"sku_ori": "63074830",
"title": "Navy Blue Leather Tote and Crossbody Bag",
"brand": "ZADIG & VOLTAIRE",
"status": "ACTIVE",
"price": "600",
"compare_at_price": "720",
"cost_per_item": "425.4",
"description": "Gender: Women Brand: ZADIG & VOLTAIRE Product Name: Zadig & Voltaire Navy Blue Leather Tote and Crossbody Bag Condition: A Color: navy blue Material: lamb leather Origin: Tunisia Includes: dust bag",
"images": [
"https://api.example.com/images/1.jpg",
"https://api.example.com/images/2.jpg"
],
"category": "BAGS",
"category_name": "SHOULDER BAGS",
"color": "BLUE",
"condition": "GOOD",
"gender": "WOMEN",
"material": "LEATHER",
"inventory": "1",
"dimensions": "Length 17cm x Height 11cm x Width 9cm",
"weight": 450,
"product_type": "SHOULDER BAGS",
"marketplaces": {
"shopee": {
"enabled": true,
"country": "sg",
"storeId": "YOUR_SHOPEE_STORE_ID"
},
"lazada": {
"enabled": true,
"country": "sg",
"storeId": "YOUR_LAZADA_STORE_ID"
}
}
}
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
product: {
id: 'cml55mqcq06vwo20ialgr54ry',
sku: 'TZVBGTB82269',
sku_tpp: 'TZVBGTB82269',
sku_ori: '63074830',
title: 'Navy Blue Leather Tote and Crossbody Bag',
brand: 'ZADIG & VOLTAIRE',
status: 'ACTIVE',
price: '600',
compare_at_price: '720',
cost_per_item: '425.4',
description: 'Gender: Women Brand: ZADIG & VOLTAIRE Product Name: Zadig & Voltaire Navy Blue Leather Tote and Crossbody Bag Condition: A Color: navy blue Material: lamb leather Origin: Tunisia Includes: dust bag',
images: ['https://api.example.com/images/1.jpg', 'https://api.example.com/images/2.jpg'],
category: 'BAGS',
category_name: 'SHOULDER BAGS',
color: 'BLUE',
condition: 'GOOD',
gender: 'WOMEN',
material: 'LEATHER',
inventory: '1',
dimensions: 'Length 17cm x Height 11cm x Width 9cm',
weight: 450,
product_type: 'SHOULDER BAGS',
marketplaces: {
shopee: {enabled: true, country: 'sg', storeId: 'YOUR_SHOPEE_STORE_ID'},
lazada: {enabled: true, country: 'sg', storeId: 'YOUR_LAZADA_STORE_ID'}
}
}
})
};
fetch('https://omnicommerce.sg/api/v1/products', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://omnicommerce.sg/api/v1/products"
payload = { "product": {
"id": "cml55mqcq06vwo20ialgr54ry",
"sku": "TZVBGTB82269",
"sku_tpp": "TZVBGTB82269",
"sku_ori": "63074830",
"title": "Navy Blue Leather Tote and Crossbody Bag",
"brand": "ZADIG & VOLTAIRE",
"status": "ACTIVE",
"price": "600",
"compare_at_price": "720",
"cost_per_item": "425.4",
"description": "Gender: Women Brand: ZADIG & VOLTAIRE Product Name: Zadig & Voltaire Navy Blue Leather Tote and Crossbody Bag Condition: A Color: navy blue Material: lamb leather Origin: Tunisia Includes: dust bag",
"images": ["https://api.example.com/images/1.jpg", "https://api.example.com/images/2.jpg"],
"category": "BAGS",
"category_name": "SHOULDER BAGS",
"color": "BLUE",
"condition": "GOOD",
"gender": "WOMEN",
"material": "LEATHER",
"inventory": "1",
"dimensions": "Length 17cm x Height 11cm x Width 9cm",
"weight": 450,
"product_type": "SHOULDER BAGS",
"marketplaces": {
"shopee": {
"enabled": True,
"country": "sg",
"storeId": "YOUR_SHOPEE_STORE_ID"
},
"lazada": {
"enabled": True,
"country": "sg",
"storeId": "YOUR_LAZADA_STORE_ID"
}
}
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"ok": true,
"apiVersion": "developer_v1",
"operationId": "<string>",
"status": "<string>",
"jobId": "<string>",
"warnings": [
"<string>"
],
"recommendations": [
"<string>"
],
"links": {},
"data": {
"normalizedInput": {},
"issues": [
{}
],
"targetMarketplaces": [
"<string>"
],
"targetCountries": [
"<string>"
]
}
}Create Product
Queue a single-product create workflow for the authenticated organization. Product enrichment is disabled by default; set workflow.enrich to true to enable it.
Request behavior
productcontains developer-supplied fields. Unknown fields are preserved as enrichment context.- SKU is the unique product upsert identifier.
- Externally hosted HTTP(S) images are copied to managed R2 storage.
targetMarketplacesandtargetCountriesare optional; enrichment can run without publishing targets.
Asynchronous result
The API returns a job ID. Poll GET /api/v1/jobs/{jobId} for completion. Product creation, image ingestion, enrichment, and taxonomy assignment run in the same product workflow job. ACO generation runs separately when enabled; poll result.geoJobId for its completion.
curl --request POST \
--url https://omnicommerce.sg/api/v1/products \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"product": {
"id": "cml55mqcq06vwo20ialgr54ry",
"sku": "TZVBGTB82269",
"sku_tpp": "TZVBGTB82269",
"sku_ori": "63074830",
"title": "Navy Blue Leather Tote and Crossbody Bag",
"brand": "ZADIG & VOLTAIRE",
"status": "ACTIVE",
"price": "600",
"compare_at_price": "720",
"cost_per_item": "425.4",
"description": "Gender: Women Brand: ZADIG & VOLTAIRE Product Name: Zadig & Voltaire Navy Blue Leather Tote and Crossbody Bag Condition: A Color: navy blue Material: lamb leather Origin: Tunisia Includes: dust bag",
"images": [
"https://api.example.com/images/1.jpg",
"https://api.example.com/images/2.jpg"
],
"category": "BAGS",
"category_name": "SHOULDER BAGS",
"color": "BLUE",
"condition": "GOOD",
"gender": "WOMEN",
"material": "LEATHER",
"inventory": "1",
"dimensions": "Length 17cm x Height 11cm x Width 9cm",
"weight": 450,
"product_type": "SHOULDER BAGS",
"marketplaces": {
"shopee": {
"enabled": true,
"country": "sg",
"storeId": "YOUR_SHOPEE_STORE_ID"
},
"lazada": {
"enabled": true,
"country": "sg",
"storeId": "YOUR_LAZADA_STORE_ID"
}
}
}
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
product: {
id: 'cml55mqcq06vwo20ialgr54ry',
sku: 'TZVBGTB82269',
sku_tpp: 'TZVBGTB82269',
sku_ori: '63074830',
title: 'Navy Blue Leather Tote and Crossbody Bag',
brand: 'ZADIG & VOLTAIRE',
status: 'ACTIVE',
price: '600',
compare_at_price: '720',
cost_per_item: '425.4',
description: 'Gender: Women Brand: ZADIG & VOLTAIRE Product Name: Zadig & Voltaire Navy Blue Leather Tote and Crossbody Bag Condition: A Color: navy blue Material: lamb leather Origin: Tunisia Includes: dust bag',
images: ['https://api.example.com/images/1.jpg', 'https://api.example.com/images/2.jpg'],
category: 'BAGS',
category_name: 'SHOULDER BAGS',
color: 'BLUE',
condition: 'GOOD',
gender: 'WOMEN',
material: 'LEATHER',
inventory: '1',
dimensions: 'Length 17cm x Height 11cm x Width 9cm',
weight: 450,
product_type: 'SHOULDER BAGS',
marketplaces: {
shopee: {enabled: true, country: 'sg', storeId: 'YOUR_SHOPEE_STORE_ID'},
lazada: {enabled: true, country: 'sg', storeId: 'YOUR_LAZADA_STORE_ID'}
}
}
})
};
fetch('https://omnicommerce.sg/api/v1/products', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://omnicommerce.sg/api/v1/products"
payload = { "product": {
"id": "cml55mqcq06vwo20ialgr54ry",
"sku": "TZVBGTB82269",
"sku_tpp": "TZVBGTB82269",
"sku_ori": "63074830",
"title": "Navy Blue Leather Tote and Crossbody Bag",
"brand": "ZADIG & VOLTAIRE",
"status": "ACTIVE",
"price": "600",
"compare_at_price": "720",
"cost_per_item": "425.4",
"description": "Gender: Women Brand: ZADIG & VOLTAIRE Product Name: Zadig & Voltaire Navy Blue Leather Tote and Crossbody Bag Condition: A Color: navy blue Material: lamb leather Origin: Tunisia Includes: dust bag",
"images": ["https://api.example.com/images/1.jpg", "https://api.example.com/images/2.jpg"],
"category": "BAGS",
"category_name": "SHOULDER BAGS",
"color": "BLUE",
"condition": "GOOD",
"gender": "WOMEN",
"material": "LEATHER",
"inventory": "1",
"dimensions": "Length 17cm x Height 11cm x Width 9cm",
"weight": 450,
"product_type": "SHOULDER BAGS",
"marketplaces": {
"shopee": {
"enabled": True,
"country": "sg",
"storeId": "YOUR_SHOPEE_STORE_ID"
},
"lazada": {
"enabled": True,
"country": "sg",
"storeId": "YOUR_LAZADA_STORE_ID"
}
}
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"ok": true,
"apiVersion": "developer_v1",
"operationId": "<string>",
"status": "<string>",
"jobId": "<string>",
"warnings": [
"<string>"
],
"recommendations": [
"<string>"
],
"links": {},
"data": {
"normalizedInput": {},
"issues": [
{}
],
"targetMarketplaces": [
"<string>"
],
"targetCountries": [
"<string>"
]
}
}Authorizations
Bearer API key for server-to-server access. Session auth is also supported in first-party UI flows.
Body
Single product payload. sku and title are required for create/upsert. Known fields are normalized; arbitrary extra fields are preserved and passed to enrichment.
Show child attributes
Show child attributes
Optional variant rows to create under the root product. Arbitrary variant fields are accepted; variationAttributes or attributes are normalized when present.
Show child attributes
Show child attributes
Optional variation schema, e.g. { "color": ["BLUE", "BLACK"] }.
Show child attributes
Show child attributes
Optional marketplace targets. Product creation/enrichment works when omitted.
shopee, lazada, tiktok, shopify, zalora, amazon Optional country codes for marketplace and ACO workflows. Uses the same country enum as product.marketplaces..country. Codes are normalized to lowercase; country names and custom values are rejected.
ISO 3166-1 alpha-2 country code, for example sg or my. Codes are trimmed and normalized to lowercase. Country names, custom values, and global are rejected. Select the country for the connected store explicitly.
ad, ae, af, ag, ai, al, am, ao, aq, ar, as, at, au, aw, ax, az, ba, bb, bd, be, bf, bg, bh, bi, bj, bl, bm, bn, bo, bq, br, bs, bt, bv, bw, by, bz, ca, cc, cd, cf, cg, ch, ci, ck, cl, cm, cn, co, cr, cu, cv, cw, cx, cy, cz, de, dj, dk, dm, do, dz, ec, ee, eg, eh, er, es, et, fi, fj, fk, fm, fo, fr, ga, gb, gd, ge, gf, gg, gh, gi, gl, gm, gn, gp, gq, gr, gs, gt, gu, gw, gy, hk, hm, hn, hr, ht, hu, id, ie, il, im, in, io, iq, ir, is, it, je, jm, jo, jp, ke, kg, kh, ki, km, kn, kp, kr, kw, ky, kz, la, lb, lc, li, lk, lr, ls, lt, lu, lv, ly, ma, mc, md, me, mf, mg, mh, mk, ml, mm, mn, mo, mp, mq, mr, ms, mt, mu, mv, mw, mx, my, mz, na, nc, ne, nf, ng, ni, nl, no, np, nr, nu, nz, om, pa, pe, pf, pg, ph, pk, pl, pm, pn, pr, ps, pt, pw, py, qa, re, ro, rs, ru, rw, sa, sb, sc, sd, se, sg, sh, si, sj, sk, sl, sm, sn, so, sr, ss, st, sv, sx, sy, sz, tc, td, tf, tg, th, tj, tk, tl, tm, tn, to, tr, tt, tv, tw, tz, ua, ug, um, us, uy, uz, va, vc, ve, vg, vi, vn, vu, wf, ws, ye, yt, za, zm, zw Optional enrichment model override.
Optional instructions applied to LLM enrichment and image handling. For example, exclude images tagged as size charts, maps, or cluttered supplier feed shots.
4000Optional workflow switches.
Show child attributes
Show child attributes