Authenticate via Pinterest's OAuth 2.0 flow with the ads:read and ads:write scopes; note your ad_account_id.
POST to https://api.pinterest.com/v5/ad_accounts/{AD_ACCOUNT_ID}/campaigns with name, objective_type (e.g. AWARENESS, CONSIDERATION, CONVERSIONS), status (ACTIVE or PAUSED), and optionally daily_spend_cap or lifetime_spend_cap in microcurrency.
Capture the campaign id and create an ad group by POSTing to /ad_accounts/{AD_ACCOUNT_ID}/ad_groups with campaign_id, name, budget_in_micro_currency, bid_in_micro_currency, targeting_spec, and placement_group.
Upload a Pin or reference an existing Pin to use as the ad creative.
Create an ad by POSTing to /ad_accounts/{AD_ACCOUNT_ID}/ads with the ad_group_id, creative_type, pin_id, and status.
Verify the campaign structure via GET /ad_accounts/{AD_ACCOUNT_ID}/campaigns/{CAMPAIGN_ID}.
Known gotchas
All monetary values (budgets, bids) in the Pinterest Ads API are in microcurrency (millionths of the account currency); a $1 bid is 1000000.
The objective_type influences which targeting options and optimization goals are available — selecting an incompatible combination causes a 400 validation error.
Pin-based creatives must belong to the same advertiser profile or be claimed; using a Pin from an unclaimed domain may be rejected at review.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp