Instagram Reels product tags: five per post and what the API needs
Product tags on a Reel take up to 5 product_ids, need a Business Manager admin role and shop permissions. What to prepare, and where Sume ends.

You can tag up to five products on a Reel through the Instagram API by sending product_tags with a product_id for each. Before that works, the app user needs an admin role on the Business Manager that owns the account's Instagram Shop, plus catalog and shopping-tag permissions. Sume makes the product video; the tagging happens in your Graph API request, not in Sume.
Details are from Meta's IG User Media reference, read 2026-10-02. The reference describes product_tags for images and videos; this post only covers what it states about videos and reels.
What does product_tags take?
Meta describes product_tags as required for product tagging and applying to images and videos: an array of objects, maximum five, where tags and product IDs must be unique. Each object has product_id, required. The x and y fields, floats from 0.0 to 1.0, are for images only, so a video or Reel tag carries only the product id.
There is no position on the frame for a Reel product tag. That means your video does not need a reserved empty patch where the tag will sit.
| Item | Rule |
|---|---|
| Maximum tags | 5 |
| Uniqueness | Tags and product IDs must be unique |
| product_id | Required for each tag |
| x and y | Images only |
What permissions and roles are needed?
For containers with product tagging, Meta says the app user must have an admin role on the Business Manager that owns the IG user's Instagram Shop. Permissions listed are catalog_management and instagram_shopping_tag_products, on top of instagram_basic, instagram_content_publish and pages_read_engagement.
The Sep 28 changelog also adds an error for when the account or the merchant is not eligible for product tagging. Treat that as a separate failure from a bad product_id: eligibility belongs to the account, not the request.
Where does Sume fit in a product Reel?
Sume produces the clip you publish. Import product footage to the workspace first (POST /v1/media-imports), then cut it with video trim: one Sume-hosted clip, a start, and an end or duration, returning a new MP4. The cut is $0.02 per job at the documented public rate, and every request carries an Idempotency-Key.
For a catalogue run, keep a table of product id, clip URL and caption per Reel. Sume returns the video_url per job, and your publisher joins it to the product id. Sume does not read your Instagram catalog or sign you in to Business Manager.
curl -X POST https://api.sume.com/v1/video-trim \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: product-reel-3231775643511089" \
-d '{
"video_url": "https://media.sume.com/artifacts/artf_demo/product.mp4",
"start": 4,
"duration": 20
}'What does the final container look like?
Send the Reels fields and add product_tags with ids only. Use an array of objects, not a string of ids.
curl -X POST "https://graph.instagram.com/v26.0/$IG_USER_ID/media" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"media_type": "REELS",
"video_url": "https://media.sume.com/artifacts/artf_demo/product-cut.mp4",
"product_tags": [{"product_id": "3231775643511089"}]
}'What are the usual blockers?
Most failed product-tag attempts are account problems, not request problems: the Shop is not connected, the user lacks the Business Manager admin role, a permission is missing, or the merchant is not eligible. Fix those before debugging JSON.
Next come data problems: a product id from the wrong catalog, a duplicate id in the same array, or more than five. Validate the array length and uniqueness in your publisher, and keep the product id with the Sume job that made the clip, so a failed tag can be retried with the same video and no new render.
Test with one Reel and one product first. A single successful tag proves the Shop connection, the role and the permissions together, and only then is it worth running a batch. Keep the Sume clip, the product id and the container response together in your logs, so any tag that fails can be traced to a specific video without re-rendering.
Sources
Related posts
More in Use cases
- Instagram trial reels: test three hooks from one source clip
Publish three trial reels that differ only in the opening, graduate the winner by hand. Cut the variants with Sume video trim, one idempotency key each.
- Instagram Your Algorithm in Feed, Reels and Explore: topic labels
Instagram's Your Algorithm went from Reels to all of Instagram on June 10, 2026, with labels like From Running. Check that your Reel states its topic.
- iStock's AI-free policy bans fully AI-generated video clips
iStock prohibits fully AI-generated images and videos in its library and says it uses detection. What that means when you mix stock clips with generated ones.
- Keep the same face from a GPT Image 2.5 still into an AI video
Use an approved GPT Image 2.5 still as a Sume video's first frame, then check later frames for face drift. What frame_images does and what it cannot promise.
Written by Sume