Walmart rich media is restricted for alcohol, tobacco and firearms
Walmart Marketplace restricts rich media for alcohol, tobacco and firearms and may unpublish it. A category gate to run before you spend on AI clips.

Walmart Marketplace restricts rich media for alcohol, tobacco and firearms, and it may unpublish rich media that breaks its rules. So filter your SKU list by category before you generate any clips, not after. Walmart's guide also says product videos must demonstrate key product information and be accurate, truthful and rights-compliant. This is from Walmart's rich media guide, read 2026-10-03.
What the guide says
The page we read states content rules and restrictions. It points to a separate PDF for technical specs, and we did not read that PDF, so this post makes no claim about file size, length or format.
| Topic | What the guide says |
|---|---|
| Content | Videos must demonstrate key product information |
| Accuracy | Accurate, truthful and rights-compliant |
| Restricted categories | Alcohol, tobacco, firearms |
| Enforcement | Walmart may unpublish violating rich media |
| Technical specs | In a separate PDF, not read here |
Why the gate comes first
Generation is paid per job, and an unpublished video is a spent render with no listing value. A SKU in a restricted category gains nothing from a clip, so the cheapest control is a filter on your own catalog data. Do it once at the top of the batch, and log which SKUs it removed so the decision is auditable.
The accuracy rule matters just as much for the SKUs that pass. A generated demo that shows a feature the real product lacks is a truthfulness problem, whatever the category.
A pre-flight filter
The function below drops SKUs whose category is in a blocked set. The categories are the three Walmart names; extend the set from Walmart's own policy pages if your catalog needs more. Match against your own category field, and review borderline items by hand.
It runs on plain dictionaries, so you can place it before any call to the Sume API.
BLOCKED = {"alcohol", "tobacco", "firearms"}
def split_skus(skus):
ok, held = [], []
for sku in skus:
category = str(sku.get("category", "")).strip().lower()
(held if category in BLOCKED else ok).append(sku)
return ok, held
ok, held = split_skus([
{"id": "A1", "category": "Kitchen"},
{"id": "B2", "category": "Tobacco"},
])
print([s["id"] for s in ok], [s["id"] for s in held])Keep the demo true to the product
For the SKUs that pass, give the model the real product image. Sume's video API accepts frame_images with a first_frame entry for image-to-video, on models that list it, and input_references for reference-to-video on models that list that. Write the prompt from the listing's real features only, and have a person watch each clip against the product before upload. Keep the source image and the job id with the listing record, so you can show what a clip was made from if Walmart asks.
Sources
Related posts
More in Use cases
- Watch or bracelet try-on from a wrist photo: two references, one call
Show a watch or bracelet on a shopper's own wrist with Sume's image API: wrist photo plus product photo as two references. Request shape, checks and cost notes.
- Watch product photography with AI: dial, glass reflections, case size
Watches need exact dials. Make lifestyle watch photos with Sume's image API from one reference, and check hands, markers, crown and glare before publishing.
- Avatar script CTA: no click the green button, WCAG 1.3.3
An avatar that says click the green button on the right fails WCAG 1.3.3 for some viewers. How to write the spoken call to action so it still works.
- Autoplay avatar welcome video with sound: WCAG 1.4.2 rule
Can an AI avatar welcome video autoplay with sound? WCAG 1.4.2 allows it only with a pause or volume control once audio runs past 3 seconds.
Written by Sume