Skip to main content
GET
/
certifications
/
api
/
v1
/
products
/
{gtin}
/
certifications
List product certifications
curl --request GET \
  --url https://www.closient.com/certifications/api/v1/products/{gtin}/certifications \
  --header 'X-API-Key: <api-key>'
[
  {
    "id": "<string>",
    "label": "<string>",
    "is_active": true,
    "metadata": {},
    "code": "",
    "description": "",
    "url": "",
    "logo_url": "<string>",
    "valid_from": "2023-12-25",
    "expiration_date": "2023-12-25",
    "certificate_number": "",
    "issuing_body": "",
    "expiry_date": "2023-12-25",
    "verification_url": "",
    "verification_status": "unverified",
    "scope": "",
    "certification_value": "",
    "audit_date": "2023-12-25",
    "initial_certification_date": "2023-12-25",
    "certificate_countries": [
      "<string>"
    ]
  }
]

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.

Authorizations

X-API-Key
string
header
required

Path Parameters

gtin
string
required

GTIN-8, GTIN-12, GTIN-13, or GTIN-14 barcode digits (no spaces, no hyphens). Shorter forms are zero-left-padded to GTIN-14 server-side. Returns 404 if no product matches the normalized GTIN.

Required string length: 8 - 14
Pattern: ^\d{8,14}$

Query Parameters

verification_status
enum<string> | null

Filter by verification lifecycle state. One of unverified, verified, expired.

Available options:
unverified,
verified,
expired
is_active
boolean | null

Filter by active validity window. true = today falls within [valid_from, expiration_date] (open-ended on either side); false = today is outside the window. Omit to return all rows.

ordering
string | null

Sort field. One of expiry_date, label, -expiry_date, -label.

Pattern: ^-?(expiry_date|label)$

Response

200 - application/json

OK

id
string<shortuuid>
required

URL-safe 22-character shortuuid encoding of the row's UUID primary key. Stable across the row's lifetime; suitable for sharing in URLs, log lines, and external SDK clients. Accepted on input as either the shortuuid form or the canonical UUID form (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).

Required string length: 22
Pattern: ^[23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{22}$
label
string
required

Display name of the underlying certification (e.g. USDA Organic).

Maximum string length: 255
is_active
boolean
required

Computed: true when today's date falls within [valid_from, expiration_date] (either bound being null is treated as open). Refreshes per request — do not cache.

metadata
Metadata · object

Developer-attached key/value data attached to this object. Up to 50 keys; key max 40 chars, value max 500 chars.

code
string
default:""

Stable code of the underlying certification (e.g. USDA_ORGANIC). Empty for unnamed.

Maximum string length: 50
description
string
default:""

Free-text summary from the underlying certification record. May be empty.

url
string
default:""

Canonical reference URL from the underlying certification record. May be empty.

logo_url
string | null

Absolute URL of the certification's logo. null when no logo is set.

valid_from
string<date> | null

Start of validity for this certificate (ISO 8601, YYYY-MM-DD). null when not recorded — treat as 'valid since unknown date'.

expiration_date
string<date> | null

End of validity for this certificate (ISO 8601, YYYY-MM-DD). null for certificates with no scheduled expiry. Drives the is_active computed field below.

certificate_number
string
default:""

Certificate identifier issued by the certification body (e.g. NOP-12345). Empty when not yet recorded.

Maximum string length: 100
issuing_body
string
default:""

Free-text name of the organization that issued this certificate. Distinct from the linked :class:CertificationBody record — kept separately because the brand may report a different name than the canonical body. Empty when not recorded.

Maximum string length: 255
expiry_date
string<date> | null

When this specific certificate expires (ISO 8601). Distinct from expiration_date: expiration_date is the policy/program validity window; expiry_date is the certificate document's own expiry as printed on it. Often equal in practice.

verification_url
string
default:""

URL to verify this certificate online via the issuing body's registry (e.g. USDA Organic Integrity Database). Empty when no public registry is exposed.

verification_status
enum<string>
default:unverified

Lifecycle state of the certificate's verification. unverified (default) means the brand-claimed certificate has not been audited by Closient; verified means it has been confirmed against the issuing body's registry; expired means the verification record lapsed. Maps to GS1 certificationStatus (ACTIVE / INACTIVE) in JSON-LD exports.

Available options:
unverified,
verified,
expired
scope
string
default:""

Free-text describing what the certification covers (e.g. Product, All organic dairy lines). Empty when not specified.

certification_value
string
default:""

GS1 certificationValue — the assessed level or result (e.g. Grade A, Level 3, 100% Organic). Empty when the program does not grade results.

Maximum string length: 255
audit_date
string<date> | null

Date the certification audit was performed (ISO 8601). null when not recorded.

initial_certification_date
string<date> | null

Date the certification was originally granted (ISO 8601). null when not recorded. Use to compute years-certified.

certificate_countries
string[]

ISO 3166-1 alpha-2 country codes (uppercase, e.g. ["US", "CA"]) indicating jurisdictions where this certificate is valid. Empty list when not recorded — does not imply 'valid everywhere'.