Check whether an item's information is detailed enough to classify—before you request an HS code.
GraphQL
The customsDescriptionValidate mutation checks whether an item's information is sufficient to confidently assign a 6-digit HS code, before classification runs. It returns a readiness status that you apply your own policy to—proceed to classify, warn, ask the shopper or merchant for more detail, or reject the item.
It is a pre-flight check, not a classification: customsDescriptionValidate does not classify the item and does not return an HS code. Use it to catch thin or unusable descriptions upfront so that the descriptions you eventually send to Classify produce accurate, assumption-free results.
Readiness checking is just one use, though. Because the same item data drives Zonos's customs-description and classification services, this mutation is the entry point to a broader Customs Description workflow—gating data quality, then generating a compliant customs description from the item. See More than a classification gate below.
Every validation returns one status. The status is advisory—your integration decides the consequence of each value.
Status↕
Meaning↕
Suggested action↕
READY
The information is enough to confidently assign a 6-digit HS code with no assumptions.
Proceed to classify.
INCOMPLETE
The item is identifiable, but a decisive attribute is missing, so a classification would rely on assumptions.
Ask for the attribute named in missingAttributes, then retry.
UNRECOGNIZABLE
The text does not establish what the item fundamentally is—empty values, bare SKUs or internal codes, or gibberish.
Ask the user to re-enter the item.
When the status is INCOMPLETE, the missingAttributes field returns the missing attribute(s) as a short phrase (e.g. "fiber content" or "material, construction") that is suitable for composing a user-facing message. It is null for any other status.
Provide the item fields directly—at least one descriptive field is required. The example below validates an item whose name and description identify it as a t-shirt but omit the fiber content needed to classify it, so the mutation returns INCOMPLETE.
1mutationCustomsDescriptionValidate(
2$input: CustomsDescriptionValidationInput!
3){
4 customsDescriptionValidate(input:$input) {
5 id
6 status
7 missingAttributes
8 content {
9 name
10 description
11 material
12 categories
13 existingItemId
14}
15 createdAt
16}
17}
Input fields
Field↕
Type↕
Description↕
name
String
Name of the item.
description
String
Human-readable description of the item.
material
String
Material or composition of the item, if known (e.g. "55% cotton, 45% polyester").
categories
[String!]
Categories associated with and describing the item.
existingItemId
ID
ID of an existing Item to validate. When provided, the stored item's fields are used and any fields supplied here override the stored values.
Provide either existingItemId or the item fields directly—at least one descriptive field is required.
If the item already exists in Zonos, pass its ID as existingItemId instead of re-sending every field. The stored item's fields are used as the basis for validation, and any fields you also supply in the same input override the stored values—useful for testing whether an edit would make a thin item classification-ready.
The response content echoes the item data that was validated, with existingItemId resolved, so each stored CustomsDescriptionValidation is self-describing.
Because the readiness status is advisory, the same check feeds more than one workflow—it isn't only about deciding whether to classify. customsDescriptionValidate evaluates the same item data that Zonos's classification and customs-description services consume, which makes it a natural first step in a broader Customs Description workflow:
Data-quality gate — Surface thin or unusable item information at the point of entry (in a PIM, catalog import, or checkout) and prompt for exactly what's missing using missingAttributes, before that data flows downstream.
Generate a customs description — Once an item is READY, hand the same data to the customsDescriptionsCreate mutation to have Zonos generate a concise, customs- and ICS2-compliant customs description from the item—optionally requesting an HS code in the same call. Validating readiness first means the generated description is built from complete information rather than assumptions.
Classify with confidence — Proceed to Classify knowing the description is rich enough to assign an accurate 6-digit HS code with no guesswork.
A typical end-to-end flow is: validate readiness → collect any missingAttributes → generate a compliant customs description (and HS code) → classify or file.
GraphQL API ReferenceTypes, inputs, and operations used in this guide
Classification readiness
Classification readiness
Check whether an item's information is detailed enough to classify—before you request an HS code.
GraphQL
The
customsDescriptionValidatemutation checks whether an item's information is sufficient to confidently assign a 6-digit HS code, before classification runs. It returns a readiness status that you apply your own policy to—proceed to classify, warn, ask the shopper or merchant for more detail, or reject the item.It is a pre-flight check, not a classification:
customsDescriptionValidatedoes not classify the item and does not return an HS code. Use it to catch thin or unusable descriptions upfront so that the descriptions you eventually send to Classify produce accurate, assumption-free results.Readiness checking is just one use, though. Because the same item data drives Zonos's customs-description and classification services, this mutation is the entry point to a broader Customs Description workflow—gating data quality, then generating a compliant customs description from the item. See More than a classification gate below.
Readiness statuses
Every validation returns one
status. The status is advisory—your integration decides the consequence of each value.READYINCOMPLETEmissingAttributes, then retry.UNRECOGNIZABLEWhen the status is
INCOMPLETE, themissingAttributesfield returns the missing attribute(s) as a short phrase (e.g."fiber content"or"material, construction") that is suitable for composing a user-facing message. It isnullfor any other status.Validate an item via API
Provide the item fields directly—at least one descriptive field is required. The example below validates an item whose name and description identify it as a t-shirt but omit the fiber content needed to classify it, so the mutation returns
INCOMPLETE.mutation CustomsDescriptionValidate($input: CustomsDescriptionValidationInput!) {customsDescriptionValidate(input: $input) {idstatusmissingAttributescontent {namedescriptionmaterialcategoriesexistingItemId}createdAt}}Input fields
nameStringdescriptionStringmaterialString"55% cotton, 45% polyester").categories[String!]existingItemIdIDItemto validate. When provided, the stored item's fields are used and any fields supplied here override the stored values.Provide either
existingItemIdor the item fields directly—at least one descriptive field is required.Validate an existing item
If the item already exists in Zonos, pass its ID as
existingItemIdinstead of re-sending every field. The stored item's fields are used as the basis for validation, and any fields you also supply in the same input override the stored values—useful for testing whether an edit would make a thin item classification-ready.The response
contentechoes the item data that was validated, withexistingItemIdresolved, so each storedCustomsDescriptionValidationis self-describing.More than a classification gate
Because the readiness status is advisory, the same check feeds more than one workflow—it isn't only about deciding whether to classify.
customsDescriptionValidateevaluates the same item data that Zonos's classification and customs-description services consume, which makes it a natural first step in a broader Customs Description workflow:missingAttributes, before that data flows downstream.READY, hand the same data to thecustomsDescriptionsCreatemutation to have Zonos generate a concise, customs- and ICS2-compliant customs description from the item—optionally requesting an HS code in the same call. Validating readiness first means the generated description is built from complete information rather than assumptions.A typical end-to-end flow is: validate readiness → collect any
missingAttributes→ generate a compliant customs description (and HS code) → classify or file.CustomsDescriptionValidationInput
customsDescriptionValidate
Was this page helpful?