E-commerce
Product Feed Validate & Normalize
Inspect and normalize product items, validate batches and variant groups, compare item versions, and apply explicit merchant-feed policy with no marketplace submission or acceptance claim.
CONTRACT
Predictable for agents. Legible for reviewers.
- REST
POST /v1/product-feeds/policy-check- MCP tool
check_product_feed_policy- Inputs
- One strict normalized product-item JSON object; comparison accepts two versions, batch validation accepts up to 500 items, and variant validation accepts one group of up to 200 child items.
- Returns
- CLEAR, REVIEW_REQUIRED, or BLOCKED with field paths, named findings, normalized values, categorized diffs, duplicate groups, variant evidence, policy evidence, and an agent-readable next action.
- Latency
- Synchronous
- Usage unit
- Product-feed operation
The suite also exposes /v1/product-feeds/items/inspect, /v1/product-feeds/items/normalize, /v1/product-feeds/batches/validate, /v1/product-feeds/items/compare, and /v1/product-feeds/variants/validate plus /mcp/product-feed. GOOGLE_MERCHANT_BASELINE_2026 covers common documented fields only. The API never submits data, fetches a URL, resolves DNS, queries a registry, verifies product identity, or guarantees marketplace acceptance.
AGENT-READABLE EXCEPTIONS
REQUIRED_ATTRIBUTE_MISSINGPRICE_AMOUNT_FORMAT_INVALIDAVAILABILITY_VALUE_INVALIDURL_NOT_ABSOLUTE_HTTPDUPLICATE_ITEM_IDGTIN_REUSED_ACROSS_ITEMSSTABLE_ITEM_ID_CHANGEDDUPLICATE_VARIANT_COMBINATIONPOLICY_HOST_NOT_ALLOWEDPRODUCT_FEED_OUTPUT_TOO_LARGEPOST /v1/product-feeds/policy-check
Authorization: Bearer apc_...
Content-Type: application/json
{
"item": {
"id": "shoe-blue-9",
"title": "Trail Shoe - Blue - Size 9",
"description": "Water-resistant trail shoe with a recycled mesh upper.",
"link": "https://shop.example.com/products/trail-shoe?color=blue&size=9",
"image_link": "https://cdn.example.com/trail-shoe-blue-9.jpg",
"availability": "in_stock",
"price": {
"amount": "89.99",
"currency": "USD"
},
"condition": "new",
"brand": "Example Outdoor",
"gtins": [
"4006381333931"
],
"item_group_id": "trail-shoe",
"item_group_title": "Trail Shoe",
"variant_options": {
"color": "Blue",
"size": "9"
},
"color": "Blue",
"size": "9"
},
"profile": "GOOGLE_MERCHANT_BASELINE_2026",
"require_https": true,
"allowed_currencies": [
"USD"
],
"allowed_hosts": [
"example.com"
],
"allow_subdomains": true,
"required_attributes": [
"brand",
"gtins"
]
}curl --request POST \
--url 'https://api-production-9502.up.railway.app/v1/product-feeds/policy-check' \
--header 'Authorization: Bearer ${AP_CONTROL_API_KEY}' \
--header 'Content-Type: application/json' \
--data '{
"item": {
"id": "shoe-blue-9",
"title": "Trail Shoe - Blue - Size 9",
"description": "Water-resistant trail shoe with a recycled mesh upper.",
"link": "https://shop.example.com/products/trail-shoe?color=blue&size=9",
"image_link": "https://cdn.example.com/trail-shoe-blue-9.jpg",
"availability": "in_stock",
"price": {
"amount": "89.99",
"currency": "USD"
},
"condition": "new",
"brand": "Example Outdoor",
"gtins": [
"4006381333931"
],
"item_group_id": "trail-shoe",
"item_group_title": "Trail Shoe",
"variant_options": {
"color": "Blue",
"size": "9"
},
"color": "Blue",
"size": "9"
},
"profile": "GOOGLE_MERCHANT_BASELINE_2026",
"require_https": true,
"allowed_currencies": [
"USD"
],
"allowed_hosts": [
"example.com"
],
"allow_subdomains": true,
"required_attributes": [
"brand",
"gtins"
]
}'{
"status": "COMPLETED",
"decision": "CLEAR",
"permitted": true,
"profile": "GOOGLE_MERCHANT_BASELINE_2026",
"findings": [
{
"code": "GTIN_ASSIGNMENT_NOT_VERIFIED",
"severity": "LOW",
"path": "gtins",
"message": "GTIN syntax checks do not prove assignment to this product."
},
{
"code": "MARKETPLACE_PREFLIGHT_ONLY",
"severity": "LOW",
"path": "$",
"message": "This result checks supplied fields only and does not reproduce all marketplace policies or live diagnostics."
}
],
"ruleset_version": "2026-08-11",
"marketplace_acceptance_verified": false,
"landing_pages_fetched": false,
"registry_queried": false,
"network_access_performed": false,
"payload_stored": false,
"next_action": "Run the target marketplace's current validation; this caller policy is not an acceptance guarantee."
}Use Product Feed Validate & Normalize through RapidAPI.
Choose a capped marketplace plan, copy the generated request, and route the structured result through your own authorized workflow.