curl --request GET \
--url https://omnicommerce.sg/api/v1/products/{productId} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://omnicommerce.sg/api/v1/products/{productId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://omnicommerce.sg/api/v1/products/{productId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"variants": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"sku": "<string>",
"parentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"isVariant": true,
"stockQuantity": 1,
"variantCount": 1,
"status": "<string>",
"statusFacets": {
"lifecycle": "draft",
"derived": [
"flagged"
],
"zaloraQualityControl": {}
},
"variationAttributes": {},
"price": 1,
"salePrice": 1,
"priceLabel": "<string>",
"imageUrl": "<string>",
"imageUrls": [
"<string>"
],
"marketplaces": [
{
"marketplace": "<string>",
"country": "<string>",
"storeId": "<string>",
"storeLabel": "<string>",
"published": true,
"itemId": "<string>",
"listingUrl": "<string>"
}
]
}
],
"id": "<string>",
"parentId": "<string>",
"name": "<string>",
"description": "<string>",
"sku": "<string>",
"brand": "<string>",
"price": 123,
"currency": "<string>",
"status": "<string>",
"statusFacets": {
"lifecycle": "draft",
"derived": [
"flagged"
],
"zaloraQualityControl": {}
},
"images": [
{}
],
"excludedImages": [
{
"url": "<string>",
"sourceUrl": "<string>",
"position": 4503599627370495,
"imageTags": [
"<string>"
],
"matchedExcludedTags": [
"<string>"
],
"reason": "excluded_tag",
"imageTagId": "<string>"
}
],
"highlights": [
"<string>"
],
"marketplaces": {},
"inventory": {},
"weight": 123,
"dimensions": {},
"seoTitle": "<string>",
"seoDescription": "<string>",
"tags": [
"<string>"
],
"bundle": {},
"acoProfile": {
"profileId": "<string>",
"productId": "<string>",
"readinessScore": 123,
"intentSummary": "<string>",
"generatedAt": "<string>",
"updatedAt": "<string>",
"platformScope": [
"<string>"
],
"countryScope": [
"<string>"
],
"generationVersion": "<string>",
"scoringVersion": "<string>",
"localizationVersion": "<string>",
"promptVersion": "<string>",
"ontologyVersion": "<string>",
"warnings": [
"<string>"
],
"seasonalRelevance": {},
"compliance": {},
"trust": {},
"categoryAttributes": {}
},
"acoFaqs": [
{
"question": "<string>",
"answer": "<string>",
"language": "<string>",
"intentKey": "<string>",
"rank": 123,
"confidence": 123,
"evidenceKeys": [
"<string>"
],
"citationUrls": [
"<string>"
]
}
],
"acoLocalizations": [
{
"language": "<string>",
"intentDescription": "<string>",
"profileId": "<string>",
"intentQueries": [
"<string>"
],
"countries": [
"<string>"
],
"culturalNotes": {}
}
],
"acoSignals": [
{
"profileId": "<string>",
"key": "<string>",
"display": "<string>",
"normalized": "<string>",
"country": "<string>",
"language": "<string>",
"source": "<string>",
"attributeClass": "<string>"
}
],
"acoIntentQueries": [
"<string>"
],
"acoCulturalNotes": {},
"acoSources": [
{
"url": "<string>",
"label": "<string>",
"metadata": {},
"createdAt": "<string>"
}
],
"acoClaims": [
{
"fieldPath": "<string>",
"text": "<string>",
"isFactual": true,
"status": "<string>",
"citationUrls": [
"<string>"
]
}
],
"createdAt": "<string>",
"updatedAt": "<string>"
}Get Product
Retrieve a single product by ID for the authenticated organization.
Authenticate with an API key using Bearer token authentication.
When available, the response includes generated Agentic Commerce Optimization (ACO) data:
- Profile metadata and FAQs
- Localization content and cultural notes
- Intent queries and signals
- Sources and claims
A parent product returns its variants in variants, with each variant’s option values, price, stock, image, and marketplace listings.
curl --request GET \
--url https://omnicommerce.sg/api/v1/products/{productId} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://omnicommerce.sg/api/v1/products/{productId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://omnicommerce.sg/api/v1/products/{productId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"variants": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"sku": "<string>",
"parentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"isVariant": true,
"stockQuantity": 1,
"variantCount": 1,
"status": "<string>",
"statusFacets": {
"lifecycle": "draft",
"derived": [
"flagged"
],
"zaloraQualityControl": {}
},
"variationAttributes": {},
"price": 1,
"salePrice": 1,
"priceLabel": "<string>",
"imageUrl": "<string>",
"imageUrls": [
"<string>"
],
"marketplaces": [
{
"marketplace": "<string>",
"country": "<string>",
"storeId": "<string>",
"storeLabel": "<string>",
"published": true,
"itemId": "<string>",
"listingUrl": "<string>"
}
]
}
],
"id": "<string>",
"parentId": "<string>",
"name": "<string>",
"description": "<string>",
"sku": "<string>",
"brand": "<string>",
"price": 123,
"currency": "<string>",
"status": "<string>",
"statusFacets": {
"lifecycle": "draft",
"derived": [
"flagged"
],
"zaloraQualityControl": {}
},
"images": [
{}
],
"excludedImages": [
{
"url": "<string>",
"sourceUrl": "<string>",
"position": 4503599627370495,
"imageTags": [
"<string>"
],
"matchedExcludedTags": [
"<string>"
],
"reason": "excluded_tag",
"imageTagId": "<string>"
}
],
"highlights": [
"<string>"
],
"marketplaces": {},
"inventory": {},
"weight": 123,
"dimensions": {},
"seoTitle": "<string>",
"seoDescription": "<string>",
"tags": [
"<string>"
],
"bundle": {},
"acoProfile": {
"profileId": "<string>",
"productId": "<string>",
"readinessScore": 123,
"intentSummary": "<string>",
"generatedAt": "<string>",
"updatedAt": "<string>",
"platformScope": [
"<string>"
],
"countryScope": [
"<string>"
],
"generationVersion": "<string>",
"scoringVersion": "<string>",
"localizationVersion": "<string>",
"promptVersion": "<string>",
"ontologyVersion": "<string>",
"warnings": [
"<string>"
],
"seasonalRelevance": {},
"compliance": {},
"trust": {},
"categoryAttributes": {}
},
"acoFaqs": [
{
"question": "<string>",
"answer": "<string>",
"language": "<string>",
"intentKey": "<string>",
"rank": 123,
"confidence": 123,
"evidenceKeys": [
"<string>"
],
"citationUrls": [
"<string>"
]
}
],
"acoLocalizations": [
{
"language": "<string>",
"intentDescription": "<string>",
"profileId": "<string>",
"intentQueries": [
"<string>"
],
"countries": [
"<string>"
],
"culturalNotes": {}
}
],
"acoSignals": [
{
"profileId": "<string>",
"key": "<string>",
"display": "<string>",
"normalized": "<string>",
"country": "<string>",
"language": "<string>",
"source": "<string>",
"attributeClass": "<string>"
}
],
"acoIntentQueries": [
"<string>"
],
"acoCulturalNotes": {},
"acoSources": [
{
"url": "<string>",
"label": "<string>",
"metadata": {},
"createdAt": "<string>"
}
],
"acoClaims": [
{
"fieldPath": "<string>",
"text": "<string>",
"isFactual": true,
"status": "<string>",
"citationUrls": [
"<string>"
]
}
],
"createdAt": "<string>",
"updatedAt": "<string>"
}Authorizations
Bearer API key for server-to-server access. Session auth is also supported in first-party UI flows.
Path Parameters
Response
Success
The product's non-deleted variants, oldest first, in the same row shape as GET /api/v1/products items. Empty for a simple product and when the requested product is itself a variant.
Show child attributes
Show child attributes
Read-only product-wide state. Lifecycle status and derived quality/error signals are independent; this field is recalculated from current product, marketplace QC, and review flags.
Show child attributes
Show child attributes
Import image exclusions, with original source URLs, classification tags, matching filters, and reasons. Empty when no exclusion audit was saved.
Show child attributes
Show child attributes
Current ACO/GEO profile metadata for the product. Null when no profile has been generated.
Show child attributes
Show child attributes
Generated Agentic Commerce Optimization FAQs for the product, ordered by language then rank. Empty array when no ACO profile has been generated yet.
Show child attributes
Show child attributes
Localized ACO content by language, including intent descriptions, generated buyer intent queries, and cultural notes.
Show child attributes
Show child attributes
Normalized ACO retrieval and ranking signals extracted from the product profile.
Show child attributes
Show child attributes
Deduplicated buyer intent queries aggregated from all ACO localizations.
Cultural notes keyed by language:country (example: en:sg). Uses global when no country scope is known.
Show child attributes
Show child attributes
Citation/source records used by ACO trust enrichment.
Show child attributes
Show child attributes
Trust claims and citation URLs associated with the generated ACO profile.
Show child attributes
Show child attributes
ISO 8601 timestamp
ISO 8601 timestamp