AVAILABLE

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_LARGE
HTTP request
POST /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 (bash)
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"
  ]
}'
Representative response
{
  "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."
}
Versioned common-field baselineGOOGLE_MERCHANT_BASELINE_2026 checks bounded supplied data; it does not reproduce every country, category, account, landing-page, shipping, tax, or editorial rule.
No marketplace or network callThe API never submits a feed, fetches a page or image, resolves DNS, queries a product registry, or stores the payload.
Live validation remains requiredA CLEAR preflight result does not verify product identity or guarantee acceptance by Google, Amazon, or another marketplace.

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.