Pinterest API Pin ai_disclosures: AI_MODIFIED, SYNTHETIC_PERFORMER
Pinterest API v5 Pins take ai_disclosures with two values, AI_MODIFIED and SYNTHETIC_PERFORMER. Where the field sits and how to prep a Pin image on Sume.

Pinterest's v5 API lets the creator declare AI involvement on a Pin through ai_disclosures, an object whose values list takes AI_MODIFIED and SYNTHETIC_PERFORMER. The spec describes it as the AI disclosure declarations the creator has made about the Pin. Set it on Pin create when your image or video is AI-generated or AI-altered; Sume produces the file but does not set the flag for you.
Which values exist?
The OpenAPI description defines the item as an enum with two members and the container as an object with a values array. It appears on the base Pin, on Pin create, on an update model with a separate update schema, and on comment-aggregated Pin responses, so you can read it back as well as write it.
| Element | Detail |
|---|---|
| ai_disclosures.values | Array of disclosure items |
| AI_MODIFIED | Enum member |
| SYNTHETIC_PERFORMER | Enum member |
| Where it appears | Pin create, Pin update, Pin read |
Which value fits which asset?
The spec gives the names and not definitions, so use Pinterest's own policy text to decide. As a working rule, AI_MODIFIED reads as an image that AI changed, and SYNTHETIC_PERFORMER reads as an AI-created person. Confirm both meanings in Pinterest's help pages before you rely on them, because a wrong declaration is your responsibility.
How do I prepare the Pin image?
A 2:3 portrait ratio is a common Pin shape, and it the Sume images API supports through aspect_ratio: "2:3". Choose jpeg or png for output_format. Download the Sume-hosted result and send it to Pinterest as an image upload or a URL.
import json, os, urllib.request
body = {
"model": "bytedance-seed/seedream-4.5",
"prompt": "kitchen herb garden on a sunny windowsill, editorial photo",
"aspect_ratio": "2:3",
"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 check?
Read the spec again when you integrate, since API descriptions change between releases. The images guide lists Sume's parameters.
Sources
Related posts
More in Integrations
- 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.
- 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.
Written by Sume