Skip to content

Pinterest Ads

Create Promoted Pin campaigns via Zernio API - No Pinterest developer approval required

Included with the Usage plan. No Pinterest developer approval needed. Zernio handles the advanced scopes registration.

What's Supported

FeatureStatus
Promoted Pin campaigns (Campaign > Ad Group > Pin)Yes
Boost existing organic PinsYes
Demographic + interest targetingYes
Real-time analytics (spend, saves, closeups, clicks)Yes
Pinterest Conversions APIRoadmap
Catalog / Shopping adsRoadmap

Create a Promoted Pin Campaign

typescript
const ad = await zernio.ads.createStandaloneAd({ body: {
  accountId: "acc_pinterestads_123",
  adAccountId: "549123456789",
  name: "Spring home decor",
  goal: "traffic",
  budgetAmount: 30,
  budgetType: "daily",
  headline: "Freshen up your space",
  body: "Spring drops, limited time.",
  imageUrl: "https://cdn.example.com/spring-decor.jpg",
  linkUrl: "https://example.com/spring-decor",
  countries: ["US", "CA"],
  ageMin: 25,
  ageMax: 44,
}});
python
ad = client.ads.create_standalone_ad(
    account_id="acc_pinterestads_123",
    ad_account_id="549123456789",
    name="Spring home decor",
    goal="traffic",
    budget_amount=30,
    budget_type="daily",
    headline="Freshen up your space",
    body="Spring drops, limited time.",
    image_url="https://cdn.example.com/spring-decor.jpg",
    link_url="https://example.com/spring-decor",
    countries=["US", "CA"],
    age_min=25,
    age_max=44,
)
bash
curl -X POST "https://zernio.com/api/v1/ads/create" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "accountId": "acc_pinterestads_123",
    "adAccountId": "549123456789",
    "name": "Spring home decor",
    "goal": "traffic",
    "budgetAmount": 30,
    "budgetType": "daily",
    "headline": "Freshen up your space",
    "body": "Spring drops, limited time.",
    "imageUrl": "https://cdn.example.com/spring-decor.jpg",
    "linkUrl": "https://example.com/spring-decor",
    "countries": ["US", "CA"],
    "ageMin": 25,
    "ageMax": 44
  }'

Pinterest creates a new Pin and promotes it in one call. Required: headline (max 100 chars), body (max 500 chars), imageUrl, linkUrl. boardId is optional, if omitted, a "Zernio Ads" board is auto-created. Valid goal values: engagement, traffic, awareness, video_views. To promote an existing Pin instead of creating one, use /v1/ads/boost.

Boost an Existing Pin

typescript
const ad = await zernio.ads.boostPost({ body: {
  postId: "POST_ID",
  accountId: "ACCOUNT_ID",
  adAccountId: "549123456789",
  name: "Boost decor Pin",
  goal: "traffic",
  budget: { amount: 30, type: "daily" },
  schedule: { startDate: "2026-04-20", endDate: "2026-05-20" },
}});
python
ad = client.ads.boost_post(
    post_id="POST_ID",
    account_id="ACCOUNT_ID",
    ad_account_id="549123456789",
    name="Boost decor Pin",
    goal="traffic",
    budget={"amount": 30, "type": "daily"},
    schedule={"startDate": "2026-04-20", "endDate": "2026-05-20"},
)
bash
curl -X POST "https://zernio.com/api/v1/ads/boost" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "postId": "POST_ID",
    "accountId": "ACCOUNT_ID",
    "adAccountId": "549123456789",
    "name": "Boost decor Pin",
    "goal": "traffic",
    "budget": { "amount": 30, "type": "daily" },
    "schedule": { "startDate": "2026-04-20", "endDate": "2026-05-20" }
  }'

Pinterest-Native Metrics

Pinterest surfaces saves and closeups alongside standard click/spend metrics. These are included in /v1/ads/{id}/analytics.

Media Requirements

TypeFormatMax SizeNotes
Standard PinJPEG, PNG20 MB1000x1500 (2:3) recommended
Video PinMP4, MOV, M4V2 GB4s-15min, 9:16 or 1:1