Skip to main content
GET
Verify a serialized GTIN (gs1:verificationService)

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 | null

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:
anomalies
AnomalyOut · object[]

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