Pinterest catalog ai_disclosures: one entry per asset URL
Pinterest catalog items take ai_disclosures entries, each with an asset url and a disclosure type. Keep your Sume-made files and feed URLs aligned.

In Pinterest's catalog API, AI disclosure is per asset, not per item. Each ai_disclosures entry has a url that identifies one image or video asset on the item and a list of disclosure types. If you replace product photos with AI-generated ones, add an entry for each asset URL in your feed, otherwise the declaration does not point at the file.
How is the catalog field shaped?
The spec describes ai_disclosures on catalog items as AI content disclosures for individual assets: image_link, additional_image_link or video_link on most item types, and main image link or additional image link on hotels. Each entry declares which disclosure types apply to a single asset URL. The item array uses the disclosure types ai_modified and synthetic_performer in lowercase.
| Part | Detail |
|---|---|
| Entry | url plus disclosure list |
| Asset fields covered | image_link, additional_image_link, video_link |
| Hotel items | main image link, additional_image_link |
| Disclosure values | ai_modified, synthetic_performer |
Why does the URL matter?
The URL ties the declaration to a specific file. If you regenerate an image and upload it under a new URL, the old disclosure no longer matches, so update the feed entry in the same change. Keep a stable naming scheme for the files you host.
How do I generate catalog-ready images?
Most catalogs want square or portrait product shots. Ask for aspect_ratio 1:1 or 4:5 and output_format jpeg, then host the file under your own domain, since the feed needs a URL that Pinterest can fetch. The Sume URL is a hosting detail of the job result and not something to rely on as your permanent feed URL.
import json, os, urllib.request
body = {
"model": "bytedance-seed/seedream-4.5",
"prompt": "white ceramic vase on a seamless light grey backdrop, product photo",
"aspect_ratio": "1:1",
"output_format": "jpeg"
}
req = urllib.request.Request(
"https://api.sume.com/v1/images",
data=json.dumps(body).encode(),
headers={
"Authorization": "Bearer " + os.environ["SUME_API_KEY"],
"Content-Type": "application/json",
},
method="POST",
)
print(urllib.request.urlopen(req).read().decode())What should I verify?
Check which item types in your catalog support the field, since the spec lists it per type. Review Pinterest's policy for when a disclosure is required.
Sources
Related posts
More in Integrations
- Pinterest carousel Pins: multiple_image_urls takes 2 to 5 images
A Pinterest API carousel Pin uses media_source multiple_image_urls with 2 to 5 items. Generate a matching set with Sume images and see each item's fields.
- Pinterest Pin limits: title 100, description 800, alt text 500
Pinterest API v5 caps Pin title at 100, description at 800, alt text at 500 and link at 2048 characters. Check AI Pin copy against them before creating.
- Pinterest video Pin cover: cover_image_key_frame_time, set in seconds
Pinterest video Pin media accepts cover_image_key_frame_time in whole seconds, plus a cover URL or base64. Find the right second with Sume video-frames.
- Pinterest video Pin 400: the cover image is required, here is a frame
Creating a Pinterest video Pin needs a valid cover_image_url or you get a 400. Pull a still from your Sume avatar clip with video frames and host it publicly.
Written by Sume