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.

4 min readSume
All posts

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.

Pin ai_disclosures in the Pinterest v5 spec (read 2026-10-02)
ElementDetail
ai_disclosures.valuesArray of disclosure items
AI_MODIFIEDEnum member
SYNTHETIC_PERFORMEREnum member
Where it appearsPin 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

All Integrations posts

Written by Sume