ads:writeads:read| Audience type | Audience description | How to create it in the API |
|---|---|---|
People who fit one of your existing audience profiles and are likely to engage with your
Pins, or visit your website. | Base the audience on a seed audience derived either from a customer list or Pinterest Tag
events. | |
| Customers on your database or CRM, whom you want to retarget. | Upload a .csv file of the list. | |
Qualified audiences who have interacted with your Pinterest content with clicks, saves,
closeups, or comments. | Define the engagement type in the audience creation endpoint. | |
The broadest collection of Pinners, with no "type" specified. | Omit the AUDIENCE_INCLUDE | |
Specifically tailored audiences created by the Pinterest sales team. They include people who are not easily targeted by interest or with keywords. | Ask your account account manager about creating persona audiences for you. You cannot create a persona audience in the API. | |
Past visitors to your website, whom you want to retarget. | Using Pinterest Tag on your website, pull visitor data based on one or more event tags. |
DLX_IDEMAILIDFALR_IDMAIDHASHED_PINNER_ID| Parameter | Description |
|---|---|
recordsstring required | One string of customer identifiers of any of the accepted
types,
separated by commas. |
list_typestring required | One of the posted audience types. You can only specify one type, even if you are posting multiple types. |
curl --request POST \ --url https://api.pinterest.com/v5/ad_accounts/120123456789/customer_lists \ --header 'authorization: Bearer pina_ABCD1234...' \ --header 'content-type: application/json' \ --data '{ "name": "Test customer list", "records": "b4e512f8ea8c8935d6bcdc2073e92f24f404a2dff396bc8a92f4ad89b27e1c37,24c989bb281c651d81d77f83144df486dd310438efe80fc4593ab6676075616a,2521cd1b18382856aa92dc6eb8cafced6f0abf12e230d25b1c4f8744931f7578,8ce72a6168ab067edf008b5f8395cbbce98ab7601af174cb8f556d3ff1a0067d,28c36759d8a5c0344d6f2feee8f3741fd9b19ca0d24af0a3fb894a32545d1471", "list_type": "EMAIL" }'
id{ "ad_account_id": "120123456789", "created_time": 1756331610, "id": "3972849", "name": "Test customer list", "num_batches": 1, "num_removed_user_records": 0, "num_uploaded_user_records": 5, "status": "PROCESSING", "type": "customerlist", "updated_time": 1756331611, "exceptions": {} }
| Parameter | Description |
|---|---|
ruleobject (required) | Core part of the request that defines the logic and source data for building the audience. |
rule.customer_list_id | id |
recordsstring required | One string of customer identifiers of any of the accepted
types,
separated by commas. |
curl --request POST \ --url https://api.pinterest.com/v5/ad_accounts/120123456789/audiences \ --header 'authorization: Bearer pina_ABCD1234...' \ --header 'content-type: application/json' \ --data '{ "ad_account_id": "120123456789", "name": "Test customer list", "rule": { "customer_list_id": "3969491" }, "audience_type": "CUSTOMER_LIST" }
| Field | Description |
|---|---|
id | ID of the audience you created, which you will reference with the AUDIENCE_INCLUDE |
status | Whether the audience can be targeted, and the reason if it cannot.
Audiences are typically ready in 48 hours, but may occasionally take up to 72 hours. Check the status of an audience anytime by calling . |
{ "ad_account_id": "120123456789", "id": "2542623177808", "name": "Test customer list", "audience_type": "CUSTOMER_LIST", "description": null, "rule": { "customer_list_id": "3969491" }, "size": 0, "status": "INITIALIZING", "type": "audience", "created_timestamp": 1755727294, "updated_timestamp": 1755727295, "created_by_company_name": null }
| Parameter | Description |
|---|---|
ruleobject (required) | Core part of the request that defines the logic and source data for building the audience. |
rule.customer_list_idstring | Only for seed audience based on customer list. id |
rule.visitor_source_idstring | Only for seed audiences based on site events. Pinterest tag ID, that you use on your website for capturing events. You can pull the tag ID from the Conversions > Pinterest Tag > Tag manager section of your Ads Manager. If you do not have a Pinterest Tag, you can create one there. |
rule.ingestion_sourcestring | Only for seed audiences based on site events. Where the event data comes from. You may want to target audiences differently based on sources:
tagmmpfile_uploadconversions_apiTo specify multiple sources, use the in"in": ["tag", "api"]To specify only one source, use the = |
rule.eventstring | Only for seed audiences based on site events. A user action that occurred on your site: pagevisitsignupcheckoutviewcategorysearchaddtocartwatchvideolead |
rule.valuestring | Only for seed audiences based on site events. Filter condition that specifies a threshold or comparison for a numeric attribute of an event, such as the value of a purchase or the number of times an event occurred. In the following , the filter uses a comparison operator ( >viewcategory1 |
audience.typestring | For seed audience based on customer list, enter CUSTOMER_LISTFor seed audience based on site events, enter VISITOR |
curl --request POST \ --url https://api.pinterest.com/v5/ad_accounts/120123456789/audiences \ --header 'authorization: Bearer pina_ABCD1234...' \ --header 'content-type: application/json' \ --data '{ "name": "My seed audience", "audience_type": "VISITOR", "rule": { "visitor_source_id": "9876543210321", "ingestion_source": { "=": [ "conversions_api" ] }, "or": [ { "event": "viewcategory", "value": { ">": 1 } } ], "advertiser_id": "120123456789" }, "created_by_company_name": "Example, Inc." }'
| Field | Description |
|---|---|
id | Seed audience ID that you will pass when making the request to define the audience based on
the seed audience in the next step. |
{ "ad_account_id": "549768257474", "id": "2542623192081", "name": "string", "audience_type": "VISITOR", "description": null, "rule": { "ingestion_source": { "=": ["conversions_api"] }, "visitor_source_id": "2613484614072", "or": [ { "event": "viewcategory", "value": { ">": 1 } } ], "advertiser_id": "120123456789" }, "size": 0, "status": "INITIALIZING", "type": "audience", "created_timestamp": 1757468980, "updated_timestamp": 1757468980, "created_by_company_name": null } }'
| Parameter | Description |
|---|---|
ruleobject (required) | Core part of the request that defines the logic and source data for building the audience. |
rule.seed_idstring | id |
rule.visitor_source_id | Only for seed audience based on site events. Pinterest tag ID, that you use on your website for capturing events. You can pull the tag ID from the Conversions > Pinterest Tag > Tag of your Ads Manager. |
curl --request POST \ --url https://api.pinterest.com/v5/ad_accounts/120123456789/audiences \ --header 'authorization: Bearer pina_ABCD1234...' \ --header 'content-type: application/json' \ --data '{ "name": "My actalike audience", "audience_type": "ACTALIKE", "rule": { "seed_id": [ "626755481648" ], "country": "US", "percentage": 10 } }'
| Field | Description |
|---|---|
id | ID of the audience you created, which you will reference with the AUDIENCE_INCLUDEsetting up the targeting spec. |
{ "ad_account_id": "120123456789", "id": "626755481649", "name": "My actalike audience", "audience_type": "ACTALIKE", "description": null, "rule": { "country": "US", "percentage": 10, "seed_id": ["2542623189817"] }, "size": 0, "status": "INITIALIZING", "type": "audience", "created_timestamp": 1757111104, "updated_timestamp": 1757111104, "created_by_company_name": null }
| Parameter | Description |
|---|---|
ruleobject (required) | Core part of the request that defines the logic and source data for building the audience. |
rule.engagement_typestring | Select Pinterest user action(s) to qualify them for the audience you are creating: clicksavecloseupcommentlike |
rule.lookback_windowstring | Number of preceding days to include for engagement actions. |
audience_typestring | Pass ENGAGEMENT |
curl --request POST \ --url https://api.pinterest.com/v5/ad_accounts/120123456789/audiences \ --header 'authorization: Bearer pina_ABCD1234...' \ --header 'content-type: application/json' \ --data '{ "name": "Pin Clickers - Last 30 Days", "audience_type": "ENGAGEMENT", "rule": { "engagement_type": "CLICK", "lookback_window": 30 }, "description": "People who clicked my Pins in the last 30 days" }'
| Field | Description |
|---|---|
id | ID of the audience you created, which you will reference with the AUDIENCE_INCLUDEsetting up the targeting spec. |
{ "ad_account_id": "120123456789", "id": "2542623190796", "name": "Pin Clickers - Last 30 Days", "audience_type": "ENGAGEMENT", "description": "People who clicked my Pins in the last 30 days", "rule": { "lookback_window": 30, "engagement_type": "CLICK" }, "size": 0, "status": "INITIALIZING", "type": "audience", "created_timestamp": 1757350318, "updated_timestamp": 1757350318, "created_by_company_name": null }
AUDIENCE_INCLUDE| Parameter | Description |
|---|---|
audience_tyestring (required) | Pass VISITOR |
ruleobject (required) | Core part of the request that defines the logic and source data for building the audience. |
rule.visitor_source_idstring | Pinterest tag ID, that you use on your website for capturing events. You can pull the tag ID from the Conversions > Pinterest Tag > Tag manager section of your Ads Manager. If you do not have a Pinterest Tag, you can create one there. |
rule.visitor_sourcestring | The platform or location where the event occurs. You may want to target audiences based on where they engage with your content or products: webmobileofflineTo specify multiple sources, use the inTo specify only one source, use the ="=": ["web", "mobile"] |
rule.ingestion_sourcestring | Where the event data comes from. You may want to target audiences differently based on sources: tagmmpfile_uploadconversions_apiTo specify multiple sources, use the in"in": ["tag", "api"]To specify only one source, use the = |
curl --request POST \ --url https://api.pinterest.com/v5/ad_accounts/120123456789/audiences \ --header 'authorization: Bearer pina_ABCD1234...' \ --header 'content-type: application/json' \ --data '{ "name": "Site Visitors - Last 30 Days", "audience_type": "VISITOR", "rule": { "event_type": "PAGE_VISIT", "lookback_window": 30, "visitor_source_id": "9876543210321", "event_source": { "=": [ "web", "mobile" ] }, "ingestion_source": { "=": [ "tag" ] } }, "description": "People who visited my website in the last 30 days" }'
| Field | Description |
|---|---|
id | ID of the audience you created, which you will reference with the AUDIENCE_INCLUDEsetting up the targeting spec. |
{ "ad_account_id": "120123456789", "id": "2542623191976", "name": "Site Visitors - Last 30 Days", "audience_type": "VISITOR", "description": "People who visited my website in the last 30 days", "rule": { "event_source": { "=": ["web", "mobile"] }, "ingestion_source": { "=": ["tag"] }, "visitor_source_id": "9876543210321", "event_type": "PAGE_VISIT", "lookback_window": 30 }, "size": 0, "status": "INITIALIZING", "type": "audience", "created_timestamp": 1757449673, "updated_timestamp": 1757449673, "created_by_company_name": null }
| Parameter | Description |
|---|---|
audience_idstring (required) | id |
curl --request GET \ --url https://api.pinterest.com/v5/ad_accounts/120123456789/audiences/2542623190988 \ --header 'authorization: Bearer pina_ABCD1234'
| Field | Description |
|---|---|
status |
{ "type": "audience", "id": "2542623190988", "name": "Pin Clickers - Last 30 Days", "ad_account_id": "12013456789", "audience_type": "ENGAGEMENT", "description": "People who clicked my Pins in the last 30 days", "status": "TOO_SMALL", "size": 0, "updated_timestamp": 1757366621, "created_timestamp": 1757366621, "rule": { "lookback_window": 30, "engagement_type": "CLICK,SAVE" }, "created_by_company_name": "Example, Inc." }