AVAILABLE

E-commerce

SKU Normalize & Collision Guard

Inspect and normalize merchant-scoped SKU strings, compare identities under explicit rules, detect batch collisions, build unreserved candidates, and apply caller-defined namespace policy.

CONTRACT

Predictable for agents. Legible for reviewers.

REST
POST /v1/skus/policy-check
MCP tool
check_sku_policy
Inputs
One bounded SKU string up to 128 characters; comparison accepts two strings, collision inspection accepts up to 1,000 caller-supplied rows, and candidate building accepts up to 20 components plus an optional known-SKU set.
Returns
CLEAR, REVIEW_REQUIRED, or BLOCKED with exact Unicode and length evidence, an explicit normalized value and change list, exact/case/normalized collision groups, candidate evidence, named policy findings, and an agent-readable next action.
Latency
Synchronous
Usage unit
SKU operation

The suite also exposes /v1/skus/inspect, /v1/skus/normalize, /v1/skus/compare, /v1/skus/batch/inspect, and /v1/skus/build plus /mcp/sku. GOOGLE_MERCHANT_ID_2026 checks the documented 50-character ID limit only. The API never queries a marketplace, writes to a catalog, reserves a candidate, proves product identity, or verifies uniqueness outside the supplied request.

AGENT-READABLE EXCEPTIONS

SKU_CONTROL_CHARACTERSKU_INTERNAL_WHITESPACE_BLOCKEDSKU_NORMALIZATION_CHANGED_VALUESKU_NON_EXACT_COLLISIONSKU_CANDIDATE_TOO_LONGSKU_CANDIDATE_COLLISIONSKU_CHARSET_NOT_ALLOWEDSKU_REQUIRED_PREFIX_MISSINGSKU_BLOCKED_PREFIXSKU_RESERVED_VALUESKU_OUTPUT_TOO_LARGE
HTTP request
POST /v1/skus/policy-check
Authorization: Bearer apc_...
Content-Type: application/json

{
  "sku": "ACME-TSHIRT-BLUE-M",
  "min_length": 3,
  "max_length": 50,
  "charset": "ASCII_ALNUM_DASH_UNDERSCORE",
  "required_prefixes": [
    "ACME-"
  ],
  "blocked_prefixes": [
    "TEST-"
  ],
  "reserved_values": [
    "UNKNOWN"
  ],
  "require_alphanumeric": true,
  "require_normalized_input": true
}
cURL (bash)
curl --request POST \
  --url 'https://api-production-9502.up.railway.app/v1/skus/policy-check' \
  --header 'Authorization: Bearer ${AP_CONTROL_API_KEY}' \
  --header 'Content-Type: application/json' \
  --data '{
  "sku": "ACME-TSHIRT-BLUE-M",
  "min_length": 3,
  "max_length": 50,
  "charset": "ASCII_ALNUM_DASH_UNDERSCORE",
  "required_prefixes": [
    "ACME-"
  ],
  "blocked_prefixes": [
    "TEST-"
  ],
  "reserved_values": [
    "UNKNOWN"
  ],
  "require_alphanumeric": true,
  "require_normalized_input": true
}'
Representative response
{
  "status": "COMPLETED",
  "decision": "CLEAR",
  "original": "ACME-TSHIRT-BLUE-M",
  "normalized": "ACME-TSHIRT-BLUE-M",
  "findings": [],
  "ruleset_version": "2026-08-11",
  "validation_scope": "CALLER_POLICY_AND_VALUE_ONLY",
  "marketplace_queried": false,
  "uniqueness_verified_outside_request": false,
  "payload_stored": false,
  "next_action": "The supplied value satisfies the caller's static SKU policy."
}
Merchant-scoped identityA SKU is not a GTIN or universal product identifier; comparisons never claim two values refer to the same product.
Lossy changes stay visibleUnicode, whitespace, case, and separator changes return an exact change list and require collision review before catalog updates.
No marketplace or catalog accessThe API never queries external inventory, reserves a candidate, writes a record, or proves uniqueness outside the supplied request.

Use SKU Normalize & Collision Guard through RapidAPI.

Choose a capped marketplace plan, copy the generated request, and route the structured result through your own authorized workflow.