Content API for Shopping 410 Gone: send product video via Merchant API

Content API for Shopping now returns HTTP 410 Gone without an extension. Move your feed to Merchant API productInputs and add videoLinks, with a Sume clip URL.

5 min readSume
All posts

If your Content API for Shopping calls now fail with HTTP 410 Gone, that is Google's planned degradation, not an outage. The API reached its sunset on August 18, 2026; since September 1, 2026, requests from clients without an active extension intermittently fail with 410, and in early 2027 every endpoint is turned down. The fix is to move the integration to the Merchant API, where a product's videos go in a videoLinks list inside productAttributes.

Dates and error behaviour are from Google's Deprecation and sunset page and the Latest updates log; the insert call is from Add and manage products; the videoLinks field is from the Products V1 client reference; all read on 2026-10-03. The Sume half is from its video generation and jobs and results docs.

What exactly changes on the 410 timeline?

Google's page gives three dates and one escape hatch. The 410 body carries your Google Cloud project ID, project number and a link to the migration guide, and Google says these artificial errors do not count against your project's API quota, so a spike of 410s will not also burn quota you need for the new API.

An extension is the only thing that holds the 410s back, and it does not outlive the final shutdown. Treat it as time to finish a migration, not a reason to start one late.

Content API for Shopping sunset, from Google's Deprecation and sunset page, read 2026-10-03.
DateWhat happens
August 18, 2026Sunset date; Google says migrate as soon as feasible
September 1, 2026Clients without an active extension intermittently get HTTP 410 Gone
Early 2027Full decommissioning; all endpoints turned down and all requests fail
ExtensionApproved extensions block the scheduled errors for their window, never past decommissioning

Where does a product video go in the Merchant API?

Products are written with productInputs.insert at POST https://merchantapi.googleapis.com/products/v1/accounts/{ACCOUNT_ID}/productInputs:insert, with the dataSource as a query parameter and offerId, contentLanguage and feedLabel in the body. Google's page notes a delay of a few minutes between an insert or update and the final Product being readable, so do not read back in the same second.

The Products V1 client reference lists videoLinks on ProductAttributes as an optional list of strings, described as a list of video URLs for the item, with the same wording Merchant Center's help page uses for the video_link attribute. That attribute has its own limits: up to 10 videos per product, 6 to 240 seconds, 500 MB, 9:16, 16:9 or 1:1, at least 720p, and a raw video file URL that Googlebot can fetch without a login. The snippet below sends one.

import os
import requests

account = os.environ["MERCHANT_ACCOUNT_ID"]
source = os.environ["MERCHANT_DATA_SOURCE_ID"]
url = (
    f"https://merchantapi.googleapis.com/products/v1/accounts/{account}"
    f"/productInputs:insert?dataSource=accounts/{account}/dataSources/{source}"
)
body = {
    "offerId": "SKU12345",
    "contentLanguage": "en",
    "feedLabel": "US",
    "productAttributes": {
        "title": "Classic Cotton T-Shirt",
        "link": "https://www.example.com/p/SKU12345",
        "imageLink": "https://www.example.com/img/SKU12345.jpg",
        "availability": "IN_STOCK",
        "price": {"amountMicros": "15990000", "currencyCode": "USD"},
        "condition": "NEW",
        "videoLinks": [os.environ["CLIP_URL"]],
    },
}
headers = {"Authorization": "Bearer " + os.environ["GOOGLE_ACCESS_TOKEN"]}
resp = requests.post(url, json=body, headers=headers, timeout=60)
print(resp.status_code, resp.text[:300])

How do I produce the clip URL with Sume?

Generate the clip first, then pass its result URL as CLIP_URL. Sume video generation is asynchronous: you submit, then read the job's result, which carries the finished video_url. Model limits differ and are listed at GET /v1/videos/models, so read the catalog instead of assuming one envelope.

Merchant's 6-second floor decides which model and duration you can use. seedance-2.5 accepts 4 to 30 seconds at 480p, 720p or 1080p, so ask for 8 or 12 seconds, not 4 or 5. gemini-omni-flash-1.1 accepts 3 to 10 seconds at 360p up to 4K in 16:9 or 9:16, so a 3-to-5-second request would fail Merchant's length check even though Sume accepts it. Pick 720p or 1080p to clear the 720p minimum. Whether the finished file's address passes Google's fetch is a separate question, answered in the not-processed post.

  • Request 8 seconds or more so the clip clears Merchant's 6-second minimum.
  • Request 9:16, 16:9 or 1:1 at 720p or above.
  • Put the final URL in videoLinks; add up to 10 per product.
  • Test the integration before production, as Google's sunset page advises.

Sources

Related posts

More in Integrations

All Integrations posts

Written by Sume