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 and submissionTimeUpto.
  • Paginate large result sets: Use nextCursor to paginate through large volumes of exemption data. Do not pass nextCursor 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. Use sortOrder 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, and submissionId.
  • The API uses cursor-based pagination. Do not include nextCursor in the first request. If the response includes a nextCursor, 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, and sortOrder=DESC.
ParameterTypeDescription
categoryStringCategory name. Example, Animals
productTypeStringProduct type name. Example, Aquarium Water Pumps
brandStringBrand 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.
exemptionStatusStringExemption status. One of: APPROVED, DENIED, PROCESSING, NEEDS_INFO, CLOSED
submissionIdStringUnique submission ID. Example, MIGBCC80
submissionTimeFromLongStart of submission date range in epoch milliseconds. Must be less than or equal to submissionTimeUpto.
submissionTimeUptoLongEnd of submission date range in epoch milliseconds
sortByStringField to sort by. One of: category, productType, brand, exemptionStatus, submissionId, submissionTime. Default is submissionTime.
sortOrderStringSort direction ofASC or DESC. Default is DESC.
nextCursorStringOpaque cursor for pagination. Use the value returned in the previous response.
limitIntegerNumber 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:

  1. Use your unique WM_QOS.CORRELATION_ID for each request.
  2. Use your unique WM_SEC.ACCESS_TOKEN obtained from the Token API.
  3. Change filter values to match your product type, category, brand, exemption status, submission ID, time range, and sorting.
  4. Add or remove optional parameters.
  5. To paginate through results, set the limit to control the number of records returned per page. For example, use limit=10 to get the first batch of records.
  6. Use the nextCursor value from the previous response to retrieve the next set of results.
  7. Check the response for nextCursor. The response returns the nextCursor string to indicate the next page to start after 10 records.
  8. 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.