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_LARGEPOST /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 --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
}'{
"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."
}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.