AVAILABLE

E-commerce

GTIN, UPC & EAN Validate + Policy Guard

Inspect GTIN-8, UPC-A/GTIN-12, EAN-13/GTIN-13, and GTIN-14; calculate check digits; convert compatible forms; compare identities; inspect batches; and apply explicit merchant-feed policy.

CONTRACT

Predictable for agents. Legible for reviewers.

REST
POST /v1/gtins/policy-check
MCP tool
check_gtin_policy
Inputs
One bounded GTIN string with explicit separator policy, a 7/11/12/13-digit body for check-digit calculation, two identifiers for comparison, or up to 1,000 items for batch inspection.
Returns
CLEAR, REVIEW_REQUIRED, or BLOCKED with normalized digits, GTIN type, provided and expected check digits, canonical GTIN-14 identity, representable types, special-prefix evidence, duplicate groups, named findings, and a next action.
Latency
Synchronous
Usage unit
GTIN operation

The suite also exposes /v1/gtins/inspect, /v1/gtins/check-digit/calculate, /v1/gtins/convert, /v1/gtins/compare, and /v1/gtins/batch/inspect plus /mcp/gtin. It implements bounded GS1 Modulo-10 and zero-padding-compatible representation logic without querying GS1 or a product database. It never proves assignment, product identity, brand ownership, country of origin, or marketplace acceptance; GS1 explicitly states that a prefix does not identify country of origin.

AGENT-READABLE EXCEPTIONS

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

{
  "gtin": "4006381333931",
  "profile": "GOOGLE_MERCHANT",
  "allowed_types": [
    "GTIN_12",
    "GTIN_13",
    "GTIN_14"
  ],
  "require_type_allowlist": true,
  "require_valid_checksum": true,
  "block_demonstration_prefix": true
}
cURL (bash)
curl --request POST \
  --url 'https://api-production-9502.up.railway.app/v1/gtins/policy-check' \
  --header 'Authorization: Bearer ${AP_CONTROL_API_KEY}' \
  --header 'Content-Type: application/json' \
  --data '{
  "gtin": "4006381333931",
  "profile": "GOOGLE_MERCHANT",
  "allowed_types": [
    "GTIN_12",
    "GTIN_13",
    "GTIN_14"
  ],
  "require_type_allowlist": true,
  "require_valid_checksum": true,
  "block_demonstration_prefix": true
}'
Representative response
{
  "status": "COMPLETED",
  "decision": "CLEAR",
  "permitted": true,
  "profile": "GOOGLE_MERCHANT",
  "parsed": {
    "normalized": "4006381333931",
    "gtin_type": "GTIN_13",
    "length": 13,
    "body": "400638133393",
    "check_digit": 1,
    "expected_check_digit": 1,
    "checksum_valid": true,
    "canonical_gtin14": "04006381333931",
    "representable_types": [
      "GTIN_13",
      "GTIN_14"
    ],
    "prefix_category": "GENERAL",
    "gs1_prefix_candidate": "400",
    "ruleset_version": "2026-08-11",
    "gs1_general_specifications_version": "26.0.0",
    "syntax_and_checksum_only": true,
    "registry_queried": false,
    "assignment_verified": false,
    "product_identity_verified": false,
    "brand_ownership_verified": false,
    "country_of_origin_inferred": false,
    "network_access_performed": false,
    "payload_stored": false
  },
  "findings": [
    {
      "code": "GTIN_SYNTAX_ONLY",
      "severity": "LOW",
      "message": "A valid length and check digit do not prove GS1 assignment, product identity, brand ownership, or marketplace acceptance; a GS1 prefix is not country of origin."
    }
  ],
  "ruleset_version": "2026-08-11",
  "registry_queried": false,
  "marketplace_acceptance_verified": false,
  "country_of_origin_inferred": false,
  "network_access_performed": false,
  "payload_stored": false,
  "next_action": "Continue to registry, product-identity, and target-marketplace checks; this result proves syntax policy only."
}
Checksum and syntax onlyResults cover GTIN length, Modulo-10, safe zero-padding, and caller policy without querying a GS1 or product registry.
No identity or origin claimA valid value does not prove assignment, product identity, brand ownership, or country of origin; GS1 prefixes are never treated as origin.
Marketplace review remains separateGoogle Merchant-oriented rules are bounded preflight evidence, not a guarantee that Google or another marketplace will accept the item.

Use GTIN, UPC & EAN Validate + Policy Guard through RapidAPI.

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