Skip to main content
GET
/
resolver
/
api
/
v1
/
verify
/
01
/
{gtin}
/
21
/
{serial_number}
Verify a serialized GTIN (gs1:verificationService)
curl --request GET \
  --url https://www.closient.com/resolver/api/v1/verify/01/{gtin}/21/{serial_number}
{
  "verificationStatus": "authentic",
  "gtin": "<string>",
  "serialNumber": "<string>",
  "verifiedAt": "2023-11-07T05:31:56Z",
  "recommendation": "proceed",
  "scanHistory": {
    "consumerScans": 3,
    "distinctRetailLocations": 2,
    "firstSeen": "2026-04-01T10:00:00Z",
    "retailerScans": 2,
    "totalScans": 5
  },
  "anomalies": [
    {
      "type": "<string>",
      "description": "<string>",
      "priorEvent": {
        "location": "49.2827,-123.1207",
        "retailer": "RetailerA",
        "scannedAt": "2026-04-10T14:30:00Z"
      }
    }
  ]
}

Documentation Index

Fetch the complete documentation index at: https://docs.closient.com/llms.txt

Use this file to discover all available pages before exploring further.

Path Parameters

gtin
string
required

GS1 GTIN-8/12/13/14 (AI 01) of the serialized trade item. Validated as 8-14 ASCII digits; non-digit input returns 422 invalid_gtin.

serial_number
string
required

Per-trade-item serial number (AI 21). 1-20 printable ASCII characters per GS1 General Specifications; out-of-range input returns 422 invalid_serial.

Response

OK

Authenticated response payload — minimal plus history and anomalies.

verificationStatus
enum<string>
required

Verification status. Unknown serials always return authentic (enumeration protection). The internal unverified state is never exposed -- it collapses to authentic on the public contract until Phase 3 ships positive-authentication rules.

Available options:
authentic,
suspect,
counterfeit_suspected,
serialization_error
gtin
string
required

Echoed GTIN-8/12/13/14 from the request path.

serialNumber
string
required

Echoed AI 21 serial component from the request path.

verifiedAt
string<date-time>
required

Server timestamp of when this verification response was generated.

recommendation
enum<string>
required

Action recommendation. proceed for authentic and unknown serials; flag_for_review for suspect, counterfeit_suspected, or serialization_error.

Available options:
proceed,
flag_for_review
scanHistory
ScanHistoryOut · object

Aggregate scan counters. null when the serial has never been observed (the enumeration-safe path returns full fields populated to zero on the unauth tier; on the auth tier we expose the truth and return null so callers can distinguish 'never seen' from 'seen-but-zero'.

Example:
{
"consumerScans": 3,
"distinctRetailLocations": 2,
"firstSeen": "2026-04-01T10:00:00Z",
"retailerScans": 2,
"totalScans": 5
}
anomalies
AnomalyOut · object[]

Anomaly rules triggered for this serial. Empty when no rule has fired. Phase 1 only emits duplicate_retail_scan.