//native
type Pinterest = {
token: string;
};
/**
* Create/update ad entities in bulk
* Either create or update any combination of campaigns, ad groups, product groups, ads, or keywords.
Note that this request will be processed asynchronously; the response will include a request_id
that can be used to obtain the status of the request.
*/
export async function main(
auth: Pinterest,
ad_account_id: string,
body: {
create?: {
campaigns?: {
ad_account_id?: string;
name?: string;
status?: "ACTIVE" | "PAUSED" | "ARCHIVED" | "DRAFT" | "DELETED_DRAFT";
lifetime_spend_cap?: number;
daily_spend_cap?: number;
order_line_id?: string;
tracking_urls?: {
impression?: string[];
click?: string[];
engagement?: string[];
buyable_button?: string[];
audience_verification?: string[];
};
start_time?: number;
end_time?: number;
is_flexible_daily_budgets?: false | true;
} & {
default_ad_group_budget_in_micro_currency?: number;
is_automated_campaign?: false | true;
} & {
is_flexible_daily_budgets?: false | true;
is_automated_campaign?: false | true;
status?: "ACTIVE" | "PAUSED" | "ARCHIVED" | "DRAFT" | "DELETED_DRAFT";
objective_type:
| "AWARENESS"
| "CONSIDERATION"
| "VIDEO_VIEW"
| "WEB_CONVERSION"
| "CATALOG_SALES"
| "WEB_SESSIONS"
| "VIDEO_COMPLETION";
}[];
ad_groups?: {
name?: string;
status?: "ACTIVE" | "PAUSED" | "ARCHIVED" | "DRAFT" | "DELETED_DRAFT";
budget_in_micro_currency?: number;
bid_in_micro_currency?: number;
optimization_goal_metadata?: {
conversion_tag_v3_goal_metadata?: {
attribution_windows?: {
click_window_days?: number;
engagement_window_days?: number;
view_window_days?: number;
};
conversion_event?:
| "PAGE_VISIT"
| "SIGNUP"
| "CHECKOUT"
| "CUSTOM"
| "VIEW_CATEGORY"
| "SEARCH"
| "ADD_TO_CART"
| "WATCH_VIDEO"
| "LEAD"
| "APP_INSTALL";
conversion_tag_id?: string;
cpa_goal_value_in_micro_currency?: string;
is_roas_optimized?: false | true;
learning_mode_type?: "ACTIVE" | "NOT_ACTIVE";
};
frequency_goal_metadata?: {
frequency?: number;
timerange?:
| "THIRTY_DAY"
| "DAY"
| "SEVEN_DAY"
| "TWENTY_MINUTE"
| "TEN_MINUTE"
| "TWENTY_FOUR_HOUR";
};
scrollup_goal_metadata?: {
scrollup_goal_value_in_micro_currency?: string;
};
};
budget_type?: "DAILY" | "LIFETIME" | "CBO_ADGROUP";
start_time?: number;
end_time?: number;
targeting_spec?: {
AGE_BUCKET?:
| "18-24"
| "21+"
| "25-34"
| "35-44"
| "45-49"
| "50-54"
| "55-64"
| "65+"[];
APPTYPE?:
| "android_mobile"
| "android_tablet"
| "ipad"
| "iphone"
| "web"
| "web_mobile"[];
AUDIENCE_EXCLUDE?: string[];
AUDIENCE_INCLUDE?: string[];
GENDER?: "unknown" | "male" | "female"[];
GEO?: string[];
INTEREST?: string[];
LOCALE?: string[];
LOCATION?: string[];
SHOPPING_RETARGETING?: {
lookback_window?: number;
tag_types?: number[];
exclusion_window?: number;
}[];
TARGETING_STRATEGY?:
| "CHOOSE_YOUR_OWN"
| "FIND_NEW_CUSTOMERS"
| "RECONNECT_WITH_USERS"[];
};
lifetime_frequency_cap?: number;
tracking_urls?: {
impression?: string[];
click?: string[];
engagement?: string[];
buyable_button?: string[];
audience_verification?: string[];
};
auto_targeting_enabled?: false | true;
placement_group?: "SEARCH" | "ALL" | "BROWSE" | "OTHER";
pacing_delivery_type?: "STANDARD" | "ACCELERATED";
campaign_id?: string;
billable_event?: "CLICKTHROUGH" | "IMPRESSION" | "VIDEO_V_50_MRC";
bid_strategy_type?: "AUTOMATIC_BID" | "MAX_BID" | "TARGET_AVG";
targeting_template_ids?: string[];
} & {
pacing_delivery_type?: "STANDARD" | "ACCELERATED";
auto_targeting_enabled?: false | true;
budget_type?: "DAILY" | "LIFETIME" | "CBO_ADGROUP";
}[];
ads?: {
ad_group_id?: string;
android_deep_link?: string;
carousel_android_deep_links?: string[];
carousel_destination_urls?: string[];
carousel_ios_deep_links?: string[];
click_tracking_url?: string;
creative_type?:
| "REGULAR"
| "VIDEO"
| "SHOPPING"
| "CAROUSEL"
| "MAX_VIDEO"
| "SHOP_THE_PIN"
| "COLLECTION"
| "IDEA"
| "SHOWCASE"
| "QUIZ";
destination_url?: string;
ios_deep_link?: string;
is_pin_deleted?: false | true;
is_removable?: false | true;
name?: string;
status?: "ACTIVE" | "PAUSED" | "ARCHIVED" | "DRAFT" | "DELETED_DRAFT";
tracking_urls?: {
impression?: string[];
click?: string[];
engagement?: string[];
buyable_button?: string[];
audience_verification?: string[];
};
view_tracking_url?: string;
lead_form_id?: string;
grid_click_type?: "CLOSEUP" | "DIRECT_TO_DESTINATION";
customizable_cta_type?:
| "ADD_TO_CART"
| "GET_OFFER"
| "LEARN_MORE"
| "ORDER_NOW"
| "SHOP_NOW"
| "SIGN_UP"
| "SUBSCRIBE"
| "BUY_NOW"
| "CONTACT_US"
| "GET_QUOTE"
| "VISIT_SITE"
| "APPLY_NOW"
| "BOOK_NOW"
| "REQUEST_DEMO"
| "REGISTER_NOW"
| "FIND_A_DEALER"
| "WATCH_NOW"
| "READ_MORE";
quiz_pin_data?: {
questions?: {
question_id?: number;
question_text?: string;
options?: { id?: number; text?: string }[];
}[];
results?: {
organic_pin_id?: string;
android_deep_link?: string;
ios_deep_link?: string;
destination_url?: string;
result_id?: number;
}[];
tie_breaker_type?: "CUSTOM" | "RANDOM";
tie_breaker_custom_result?: {
organic_pin_id?: string;
android_deep_link?: string;
ios_deep_link?: string;
destination_url?: string;
result_id?: number;
};
};
} & { pin_id?: string } & {}[];
product_groups?: {
ad_group_id: string;
product_group_promotion: {
id?: string;
ad_group_id?: string;
bid_in_micro_currency?: number;
included?: false | true;
definition?: string;
relative_definition?: string;
parent_id?: string;
slideshow_collections_title?: string;
slideshow_collections_description?: string;
is_mdl?: false | true;
status?: "ACTIVE" | "PAUSED" | "ARCHIVED" | "DRAFT" | "DELETED_DRAFT";
tracking_url?: string;
catalog_product_group_id?: string;
catalog_product_group_name?: string;
collections_hero_pin_id?: string;
collections_hero_destination_url?: string;
grid_click_type?: "CLOSEUP" | "DIRECT_TO_DESTINATION";
} & {
creative_type?:
| "REGULAR"
| "VIDEO"
| "SHOPPING"
| "CAROUSEL"
| "MAX_VIDEO"
| "SHOP_THE_PIN"
| "COLLECTION"
| "IDEA"
| "SHOWCASE"
| "QUIZ";
}[];
}[];
keywords?: {
keywords: {
bid?: number;
match_type:
| "BROAD"
| "PHRASE"
| "EXACT"
| "EXACT_NEGATIVE"
| "PHRASE_NEGATIVE";
value: string;
}[];
parent_id: string;
}[];
};
update?: {
campaigns?: { id?: string } & {
ad_account_id?: string;
name?: string;
status?: "ACTIVE" | "PAUSED" | "ARCHIVED" | "DRAFT" | "DELETED_DRAFT";
lifetime_spend_cap?: number;
daily_spend_cap?: number;
order_line_id?: string;
tracking_urls?: {
impression?: string[];
click?: string[];
engagement?: string[];
buyable_button?: string[];
audience_verification?: string[];
};
start_time?: number;
end_time?: number;
is_flexible_daily_budgets?: false | true;
} & {
default_ad_group_budget_in_micro_currency?: number;
is_automated_campaign?: false | true;
} & {
is_campaign_budget_optimization?: false | true;
objective_type?:
| "AWARENESS"
| "CONSIDERATION"
| "VIDEO_VIEW"
| "WEB_CONVERSION"
| "CATALOG_SALES"
| "WEB_SESSIONS"
| "VIDEO_COMPLETION";
}[];
ad_groups?: {
name?: string;
status?: "ACTIVE" | "PAUSED" | "ARCHIVED" | "DRAFT" | "DELETED_DRAFT";
budget_in_micro_currency?: number;
bid_in_micro_currency?: number;
optimization_goal_metadata?: {
conversion_tag_v3_goal_metadata?: {
attribution_windows?: {
click_window_days?: number;
engagement_window_days?: number;
view_window_days?: number;
};
conversion_event?:
| "PAGE_VISIT"
| "SIGNUP"
| "CHECKOUT"
| "CUSTOM"
| "VIEW_CATEGORY"
| "SEARCH"
| "ADD_TO_CART"
| "WATCH_VIDEO"
| "LEAD"
| "APP_INSTALL";
conversion_tag_id?: string;
cpa_goal_value_in_micro_currency?: string;
is_roas_optimized?: false | true;
learning_mode_type?: "ACTIVE" | "NOT_ACTIVE";
};
frequency_goal_metadata?: {
frequency?: number;
timerange?:
| "THIRTY_DAY"
| "DAY"
| "SEVEN_DAY"
| "TWENTY_MINUTE"
| "TEN_MINUTE"
| "TWENTY_FOUR_HOUR";
};
scrollup_goal_metadata?: {
scrollup_goal_value_in_micro_currency?: string;
};
};
budget_type?: "DAILY" | "LIFETIME" | "CBO_ADGROUP";
start_time?: number;
end_time?: number;
targeting_spec?: {
AGE_BUCKET?:
| "18-24"
| "21+"
| "25-34"
| "35-44"
| "45-49"
| "50-54"
| "55-64"
| "65+"[];
APPTYPE?:
| "android_mobile"
| "android_tablet"
| "ipad"
| "iphone"
| "web"
| "web_mobile"[];
AUDIENCE_EXCLUDE?: string[];
AUDIENCE_INCLUDE?: string[];
GENDER?: "unknown" | "male" | "female"[];
GEO?: string[];
INTEREST?: string[];
LOCALE?: string[];
LOCATION?: string[];
SHOPPING_RETARGETING?: {
lookback_window?: number;
tag_types?: number[];
exclusion_window?: number;
}[];
TARGETING_STRATEGY?:
| "CHOOSE_YOUR_OWN"
| "FIND_NEW_CUSTOMERS"
| "RECONNECT_WITH_USERS"[];
};
lifetime_frequency_cap?: number;
tracking_urls?: {
impression?: string[];
click?: string[];
engagement?: string[];
buyable_button?: string[];
audience_verification?: string[];
};
auto_targeting_enabled?: false | true;
placement_group?: "SEARCH" | "ALL" | "BROWSE" | "OTHER";
pacing_delivery_type?: "STANDARD" | "ACCELERATED";
campaign_id?: string;
billable_event?: "CLICKTHROUGH" | "IMPRESSION" | "VIDEO_V_50_MRC";
bid_strategy_type?: "AUTOMATIC_BID" | "MAX_BID" | "TARGET_AVG";
targeting_template_ids?: string[];
} & { id: string }[];
ads?: {
ad_group_id?: string;
android_deep_link?: string;
carousel_android_deep_links?: string[];
carousel_destination_urls?: string[];
carousel_ios_deep_links?: string[];
click_tracking_url?: string;
creative_type?:
| "REGULAR"
| "VIDEO"
| "SHOPPING"
| "CAROUSEL"
| "MAX_VIDEO"
| "SHOP_THE_PIN"
| "COLLECTION"
| "IDEA"
| "SHOWCASE"
| "QUIZ";
destination_url?: string;
ios_deep_link?: string;
is_pin_deleted?: false | true;
is_removable?: false | true;
name?: string;
status?: "ACTIVE" | "PAUSED" | "ARCHIVED" | "DRAFT" | "DELETED_DRAFT";
tracking_urls?: {
impression?: string[];
click?: string[];
engagement?: string[];
buyable_button?: string[];
audience_verification?: string[];
};
view_tracking_url?: string;
lead_form_id?: string;
grid_click_type?: "CLOSEUP" | "DIRECT_TO_DESTINATION";
customizable_cta_type?:
| "ADD_TO_CART"
| "GET_OFFER"
| "LEARN_MORE"
| "ORDER_NOW"
| "SHOP_NOW"
| "SIGN_UP"
| "SUBSCRIBE"
| "BUY_NOW"
| "CONTACT_US"
| "GET_QUOTE"
| "VISIT_SITE"
| "APPLY_NOW"
| "BOOK_NOW"
| "REQUEST_DEMO"
| "REGISTER_NOW"
| "FIND_A_DEALER"
| "WATCH_NOW"
| "READ_MORE";
quiz_pin_data?: {
questions?: {
question_id?: number;
question_text?: string;
options?: { id?: number; text?: string }[];
}[];
results?: {
organic_pin_id?: string;
android_deep_link?: string;
ios_deep_link?: string;
destination_url?: string;
result_id?: number;
}[];
tie_breaker_type?: "CUSTOM" | "RANDOM";
tie_breaker_custom_result?: {
organic_pin_id?: string;
android_deep_link?: string;
ios_deep_link?: string;
destination_url?: string;
result_id?: number;
};
};
} & { id: string; pin_id?: string }[];
product_groups?: {
ad_group_id: string;
product_group_promotion: {
id?: string;
ad_group_id?: string;
bid_in_micro_currency?: number;
included?: false | true;
definition?: string;
relative_definition?: string;
parent_id?: string;
slideshow_collections_title?: string;
slideshow_collections_description?: string;
is_mdl?: false | true;
status?: "ACTIVE" | "PAUSED" | "ARCHIVED" | "DRAFT" | "DELETED_DRAFT";
tracking_url?: string;
catalog_product_group_id?: string;
catalog_product_group_name?: string;
collections_hero_pin_id?: string;
collections_hero_destination_url?: string;
grid_click_type?: "CLOSEUP" | "DIRECT_TO_DESTINATION";
}[];
}[];
keywords?: { id: string; archived?: false | true; bid?: number }[];
};
},
) {
const url = new URL(
`https://api.pinterest.com/v5/ad_accounts/${ad_account_id}/bulk/upsert`,
);
const response = await fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer " + auth.token,
},
body: JSON.stringify(body),
});
if (!response.ok) {
const text = await response.text();
throw new Error(`${response.status} ${text}`);
}
return await response.json();
}
Submitted by hugo697 536 days ago