---
updatedAt: 2026-08-31T20:27:48.000Z
---

# View 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](https://marketplacelearn.walmart.com/guides/Item%20setup/Troubleshooting/request-a-gtin-exemption) guide.

# GTIN Exemption Status API

The GTIN Exemption Status API is a view-only API that lets you check the status of GTIN exemption requests, including requests initiated during Item Setup. The API fetches responses that match what is displayed in the Seller Center dashboard.

## Usage scenarios

* **Track exemption status**: Use this API to check whether your exemption request is `APPROVED`, `DENIED`, `PROCESSING`, `NEEDS_INFO`, or `CLOSED`.
* **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.
* **Track item setup exemption reviews**: For `MP_ITEM` feeds, use this API to check the final GTIN exemption decision when the feed is `PROCESSED` but the item-level `ingestionStatus` remains `INPROGRESS`.

## GTIN exemptions initiated during item setup

For `MP_ITEM` feeds, sellers who need a GTIN exemption or already have one can initiate the exemption during Item Setup by setting `productId` to `CUSTOM` and `productIdType` to `GTIN`.<br /><br />If the exemption requires manual review, the feed can reach `PROCESSED` while the item-level `ingestionStatus` remains `INPROGRESS`. Use this API or the GTIN Exemption Dashboard in Seller Center to check the final decision.<br /><br />If Walmart approves the exemption after manual review, wait four hours, then resubmit the item to complete item setup.

If Walmart denies the exemption, item setup fails. You can appeal the decision or submit the item again using `CUSTOM` as the Product ID to initiate a new GTIN exemption request. Follow the guidance provided before resubmitting.

> **NOTE:&#x20;**&#x54;he GTIN Exemption Status API is view-only. You cannot use it to submit or modify a GTIN exemption request.

## 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](/us-marketplace/reference/getgtinexemption).

## Endpoint

```http
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`.

| Parameter            | Type    | Description                                                                                                                                                                                                         |
| -------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `category`           | String  | Category name. Example, `Animals`                                                                                                                                                                                   |
| `productType`        | String  | Product type name. Example, `Aquarium Water Pumps`                                                                                                                                                                  |
| `brand`              | String  | Brand name. Example: `Imagitarium`<br />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 of`ASC` 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
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 'WM_CONSUMER.CHANNEL.TYPE: REPLACE-WITH-CHANNEL-TYPE' \
  -H 'Accept: application/json'
```
```python
import requests
import uuid

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",  # or str(uuid.uuid4())
    "WM_SVC.NAME": "Walmart Service",
    "WM_CONSUMER.CHANNEL.TYPE": "REPLACE-WITH-CHANNEL-TYPE",
    "Accept": "application/json",
}

resp = requests.get(url, headers=headers, timeout=30)
resp.raise_for_status()

print(resp.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.

```json
{
  "totalRecords": 200,
  "nextCursor": "H4sIAAAAAAAA_02Py26DMBBF_2VY....",
  "gtinExemptions": [
    {
      "category": "Health",
      "productType": "Foot Arch Supports",
      "brand": "FootLog",
      "exemptionStatus": "DENIED",
      "statusReason": "GTIN has already been issued for the Brand/Company name.",
      "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
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 'WM_CONSUMER.CHANNEL.TYPE: REPLACE-WITH-CHANNEL-TYPE' \
  -H 'Accept: application/json'
```
```python
import requests
import uuid

base_url = "https://marketplace.walmartapis.com/v3/items/gtin-exemption/status"

# Use the exact nextCursor value returned in the previous response.
# requests will URL-encode it when passed via `params`.
next_cursor = "H4sIAAAAAAAA_02Py26DMBBF_2VY...."

headers = {
    "WM_SEC.ACCESS_TOKEN": "REPLACE-WITH-ACTUAL-TOKEN",
    "WM_QOS.CORRELATION_ID": "0f2a3a1a-9e7b-4f30-9b21-6d5d6d0e9a01",  # or str(uuid.uuid4())
    "WM_SVC.NAME": "Walmart Service",
    "WM_CONSUMER.CHANNEL.TYPE": "REPLACE-WITH-CHANNEL-TYPE",
    "Accept": "application/json",
}

params = {"nextCursor": next_cursor}

resp = requests.get(base_url, headers=headers, params=params, timeout=30)
resp.raise_for_status()

print(resp.json())
```

### 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. Send the required header `WM_CONSUMER.CHANNEL.TYPE` on every request.
4. Change filter values to match your product type, category, brand, exemption status, submission ID, time range, and sorting.
5. Add or remove optional parameters.
6. 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.
7. Use the `nextCursor` value from the previous response to retrieve the next set of results.
8. Check the response for `nextCursor`. The response returns the `nextCursor` string to indicate the next page to start after 10 records.
9. Add the `nextCursor` value from the previous response to the same endpoint and call the endpoint again.

## Sample response (final page, 24 total)

```json
{
  "totalRecords": 24,
  "nextCursor": null,
  "gtinExemptions": [
    {
      "category": "Health",
      "productType": "Bunion Pads",
      "brand": "TestRX",
      "exemptionStatus": "DENIED",
      "statusReason": "The seller website is unable to be verified.",
      "submissionId": "21F47EE1",
      "submissionTime": 1748983318285
    }
    // remaining items...
  ]
}
```

### Errors and remediation

| HTTP status               | Error condition                   | Example error payload (key fields)                                                                                                                                | Remediation                                                                                                                                                                                                                                                                                              |
| :------------------------ | :-------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 400 Bad Request           | Invalid submission time range     | code: INVALID\_DATE\_RANGE, field: submissionTimeFrom/submissionTimeUpto, description: submissionTimeFrom must be less than or equal to submissionTimeUpto        | Provide both values as epoch milliseconds and ensure submissionTimeFrom <= submissionTimeUpto. Remove these parameters if you are not filtering by time.                                                                                                                                                 |
| 400 Bad Request           | Invalid exemptionStatus           | code: INVALID\_ENUM, field: exemptionStatus, description: Allowed values are PROCESSING, NEEDS\_INFO, APPROVED, DENIED, CLOSED                                    | Use only the allowed values. Correct typos and casing.                                                                                                                                                                                                                                                   |
| 400 Bad Request           | Unsafe or invalid query parameter | code: INVALID\_PARAMETER, field: category \| productType \| brand \| submissionId \| sortBy \| sortOrder \| nextCursor, description: Invalid or unsupported value | Provide a valid value for the indicated parameter, trim spaces, URL-encode the value, use only the allowed enums for sortBy and sortOrder, and pass nextCursor exactly as returned by the previous response; if the error persists for nextCursor, call the endpoint without it to obtain a fresh cursor |
| 404 Not Found             | Cursor references no results      | code: CURSOR\_NOT\_FOUND, field: nextCursor, description: Cursor is invalid or expired                                                                            | Start a new list by calling the endpoint without nextCursor, then paginate using the new nextCursor.                                                                                                                                                                                                     |
| 429 Too Many Requests     | Rate limit exceeded               | code: RATE\_LIMIT\_EXCEEDED, description: Too many requests                                                                                                       | Back off and retry using exponential backoff. Reduce request frequency and page size if possible.                                                                                                                                                                                                        |
| 500 Internal Server Error | General system error              | code: INTERNAL\_ERROR, description: Unexpected error                                                                                                              | Retry with exponential backoff. If it persists, capture WM\_QOS.CORRELATION\_ID and contact Partner Support.                                                                                                                                                                                             |
| 200 OK                    | No exemptions found               | totalRecords: 0, nextCursor: null, gtinExemptions: \[]                                                                                                            | Verify filters. Broaden date range or remove filters and try again.                                                                                                                                                                                                                                      |

## 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.

## Next steps

Refer to the [API reference documentation](/us-marketplace/reference/getgtinexemption) for full technical details, including endpoints, parameters, and brief descriptions.