Viewing my GTIN exemption status
Sellers who list non-branded items such as private label or handmade jewelry on Walmart.com may be eligible to request a Global Trade Item Number (GTIN) exemption. This exemption allows sellers to proceed without a product type identifier during item setup.
Note: GTIN exemptions are not available for branded products such as Nike, Apple, etc. These items must include valid product identifiers. To learn more, refer to the Request a GTIN exemption article.
GTIN Exemption Status API
The GTIN Exemption Status API lets you check the status of your GTIN exemption requests submitted in Seller Center. The API fetches responses that match what you see in the Seller Center dashboard.
Usage scenarios
- Track exemption status: Use this API to check whether your exemption request has been Approved, Denied, Processing, or Requires Additional Information.
- Filter by product attributes: Use filters to narrow down GTIN exemption status by Category, Product Type, Brand, etc.
- Audit submission history: Query exemption requests submitted within a specific time range using
submissionTimeFrom
andsubmissionTimeUpto
. - Paginate large result sets: Use
nextCursor
to paginate through large volumes of exemption data. Do not passnextCursor
on the first request; use the value returned in the response for subsequent queries. - Sorting: Use
sortBy
to sort the results by fields such as category, brand, exemption status, and submission time. UsesortOrder
to define the sort direction in either ascending (ASC) or descending (DESC) order.
Reference guide
This guide explains how to use the GTIN Exemption Status API, providing practical examples and step-by-step instructions for integrating the API into your solution.
For full technical details, including endpoints, parameters, and brief descriptions, refer to the GTIN Exemption Status API Reference guide.
Endpoint
GET /v3/items/gtin-exemption/status
Query parameters, pagination, and sorting
This API supports optional query parameters for filtering, pagination, and sorting:
- Filtering is case-insensitive, except for
nextCursor
, which must be copied exactly as returned in the response. - Filters support substring matches for
category
,productType
,brand
, andsubmissionId
. - The API uses cursor-based pagination. Do not include
nextCursor
in the first request. If the response includes anextCursor
, use it in the next request to retrieve the following page. - If no pagination or sorting parameters are provided, the API defaults to
limit=25
,sortBy=submissionTime
, andsortOrder=DESC
.
Parameter | Type | Description |
---|---|---|
category | String | Category name. Example, Animals |
productType | String | Product type name. Example, Aquarium Water Pumps |
brand | String | Brand name. Example: Imagitarium Use -- as the brand name to indicate a legacy exemption originally granted at the category level. These exemptions have since transitioned to a product type–based model. |
exemptionStatus | String | Exemption status. One of: APPROVED , DENIED , PROCESSING , NEEDS_INFO , CLOSED |
submissionId | String | Unique submission ID. Example, MIGBCC80 |
submissionTimeFrom | Long | Start of submission date range in epoch milliseconds. Must be less than or equal to submissionTimeUpto . |
submissionTimeUpto | Long | End of submission date range in epoch milliseconds |
sortBy | String | Field to sort by. One of: category , productType , brand , exemptionStatus , submissionId , submissionTime . Default is submissionTime . |
sortOrder | String | Sort direction ofASC or DESC . Default is DESC . |
nextCursor | String | Opaque cursor for pagination. Use the value returned in the previous response. |
limit | Integer | Number of results per page. Range: 1–1000. Default is 25. |
Sample request (first page, defaults to 25)
This API can return up to 25 records in a single call.
curl -X GET 'https://marketplace.walmartapis.com/v3/items/gtin-exemption/status' \ -H 'WM_SEC.ACCESS_TOKEN: REPLACE-WITH-ACTUAL-TOKEN' \ -H 'WM_QOS.CORRELATION_ID: 723907e4-b3fe-49f8-826c-15a47aba7410' \ -H 'WM_SVC.NAME: Walmart Service' \ -H 'Accept: application/json'
import requests url = "https://marketplace.walmartapis.com/v3/items/gtin-exemption/status" headers = { "WM_SEC.ACCESS_TOKEN": "REPLACE-WITH-ACTUAL-TOKEN", "WM_QOS.CORRELATION_ID": "723907e4-b3fe-49f8-826c-15a47aba7410", "WM_SVC.NAME": "Walmart Service", "Accept": "application/json"
} response = requests.get(url, headers=headers) # Print the response
print("Status Code:", response.status_code)
print("Response Body:", response.json())
Sample response (page with up to 25 records)
The response shows that up to 25 records are returned and includes a nextCursor
value ("H4sIAAAAAAAA_02Py26DMBBF_2VY....") if additional pages of data exist.
{ "totalRecords": 200, "nextCursor": "H4sIAAAAAAAA_02Py26DMBBF_2VY....", "gtinExemptions": [ { "category": "Health", "productType": "Foot Arch Supports", "brand": "FootLog", "exemptionStatus": "DENIED", "submissionId": "1C0DD488", "submissionTime": 1752542753035 } // up to 25 records ]
}
Sample request (next page using nextCursor)
If you have over 25 records, you can get them by repeatedly requesting them. You do this by using the same endpoint along with the nextCursor
value you get back from each response.
curl -X GET 'https://marketplace.walmartapis.com/v3/items/gtin-exemption/status?nextCursor=H4sIAAAAAAAA_02Py26DMBBF_2VY....' \ -H 'WM_SEC.ACCESS_TOKEN: REPLACE-WITH-ACTUAL-TOKEN' \ -H 'WM_QOS.CORRELATION_ID: 0f2a3a1a-9e7b-4f30-9b21-6d5d6d0e9a01' \ -H 'WM_SVC.NAME: Walmart Service' \ -H 'Accept: application/json'
import requests BASE_URL = "https://marketplace.walmartapis.com"
PATH = "/v3/items/gtin-exemption/status" params = { "category": "Animals", "productType": "Aquarium Water Pumps", "brand": "VIVOSUN", "exemptionStatus": "APPROVED", "submissionId": "MIGBCC80", "submissionTimeFrom": 1756163205123, # epoch ms (number) "submissionTimeUpto": 1756163386456, # epoch ms (number) "sortBy": "brand", "sortOrder": "DESC", "limit": 10
} headers = { "WM_SEC.ACCESS_TOKEN": "REPLACE-WITH-ACTUAL-TOKEN", "WM_QOS.CORRELATION_ID": "723907e4-b3fe-49f8-826c-15a47aba7410", "WM_SVC.NAME": "Walmart Service", "Accept": "application/json"
} resp = requests.get(f"{BASE_URL}{PATH}", params=params, headers=headers)
resp.raise_for_status()
data = resp.json()
print(len(data.get("gtinExemptions", [])), "records")
print("nextCursor:", data.get("nextCursor"))
Modify your code
To customize the request:
- Use your unique
WM_QOS.CORRELATION_ID
for each request. - Use your unique
WM_SEC.ACCESS_TOKEN
obtained from the Token API. - Change filter values to match your product type, category, brand, exemption status, submission ID, time range, and sorting.
- Add or remove optional parameters.
- To paginate through results, set the
limit
to control the number of records returned per page. For example, uselimit=10
to get the first batch of records. - Use the
nextCursor
value from the previous response to retrieve the next set of results. - Check the response for
nextCursor
. The response returns thenextCursor
string to indicate the next page to start after 10 records. - Add the
nextCursor
value from the previous response to the same endpoint and call the endpoint again.
Sample response (final page, 24 total)
{ "totalRecords": 24, "nextCursor": null, "gtinExemptions": [ { "category": "Health", "productType": "Bunion Pads", "brand": "TestRX", "exemptionStatus": "DENIED", "submissionId": "21F47EE1", "submissionTime": 1748983318285 } // remaining items... ]
}
Result
If successful, the API returns an HTTP status: 200 OK
and a JSON object containing the GTIN exemption data filtered by the specified query parameters. A nextCursor
is provided for pagination.
Updated about 11 hours ago