LateLate API
Platforms

Pinterest API

Post to Pinterest with Late API - Pins, boards, and destination links


Quick Start

Create a Pin on Pinterest:

curl -X POST https://getlate.dev/api/v1/posts \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "10 Tips for Better Photography 📸",
    "mediaItems": [
      {"url": "https://example.com/pin-image.jpg"}
    ],
    "platforms": [{
      "platform": "pinterest",
      "accountId": "YOUR_ACCOUNT_ID",
      "platformSpecificData": {
        "title": "10 Tips for Better Photography",
        "boardId": "YOUR_BOARD_ID",
        "link": "https://myblog.com/photography-tips"
      }
    }],
    "publishNow": true
  }'
const response = await fetch('https://getlate.dev/api/v1/posts', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    content: '10 Tips for Better Photography 📸',
    mediaItems: [
      { url: 'https://example.com/pin-image.jpg' }
    ],
    platforms: [{
      platform: 'pinterest',
      accountId: 'YOUR_ACCOUNT_ID',
      platformSpecificData: {
        title: '10 Tips for Better Photography',
        boardId: 'YOUR_BOARD_ID',
        link: 'https://myblog.com/photography-tips'
      }
    }],
    publishNow: true
  })
});

const { post } = await response.json();
console.log('Pin created!', post._id);
import requests

response = requests.post(
    'https://getlate.dev/api/v1/posts',
    headers={'Authorization': 'Bearer YOUR_API_KEY'},
    json={
        'content': '10 Tips for Better Photography 📸',
        'mediaItems': [
            {'url': 'https://example.com/pin-image.jpg'}
        ],
        'platforms': [{
            'platform': 'pinterest',
            'accountId': 'YOUR_ACCOUNT_ID',
            'platformSpecificData': {
                'title': '10 Tips for Better Photography',
                'boardId': 'YOUR_BOARD_ID',
                'link': 'https://myblog.com/photography-tips'
            }
        }],
        'publishNow': True
    }
)

post = response.json()
print(f"Pin created! {post['_id']}")

Overview

Pinterest Pins support either one image OR one video per Pin (not both).

Image Requirements

PropertyRequirement
Max Images1 per Pin
FormatsJPEG, PNG, WebP, GIF
Max File Size32 MB
Recommended1000 × 1500 px (2:3)
Min Dimensions100 × 100 px

Aspect Ratios

RatioDimensionsUse Case
2:31000 × 1500 pxOptimal - Standard Pin
1:11000 × 1000 pxSquare Pin
1:2.11000 × 2100 pxLong Pin (max height)

Best Practice: Use 2:3 aspect ratio for optimal display in the Pinterest feed.

Video Requirements

PropertyRequirement
Max Videos1 per Pin
FormatsMP4, MOV
Max File Size2 GB
Duration4 seconds - 15 minutes
Aspect Ratio2:3, 1:1, or 9:16
Resolution1080p recommended
Frame Rate25+ fps

Video Specs

PropertyMinimumRecommended
Resolution240p1080p
Bitrate-10 Mbps
Audio-AAC, 128 kbps

Video Pin Example

curl -X POST https://getlate.dev/api/v1/posts \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Quick recipe tutorial 🍳",
    "mediaItems": [
      {"url": "https://example.com/recipe.mp4"}
    ],
    "platforms": [{
      "platform": "pinterest",
      "accountId": "YOUR_ACCOUNT_ID",
      "platformSpecificData": {
        "title": "5-Minute Breakfast Recipe",
        "boardId": "YOUR_BOARD_ID",
        "link": "https://myrecipes.com/quick-breakfast"
      }
    }],
    "publishNow": true
  }'
const response = await fetch('https://getlate.dev/api/v1/posts', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    content: 'Quick recipe tutorial 🍳',
    mediaItems: [
      { url: 'https://example.com/recipe.mp4' }
    ],
    platforms: [{
      platform: 'pinterest',
      accountId: 'YOUR_ACCOUNT_ID',
      platformSpecificData: {
        title: '5-Minute Breakfast Recipe',
        boardId: 'YOUR_BOARD_ID',
        link: 'https://myrecipes.com/quick-breakfast'
      }
    }],
    publishNow: true
  })
});
response = requests.post(
    'https://getlate.dev/api/v1/posts',
    headers={'Authorization': 'Bearer YOUR_API_KEY'},
    json={
        'content': 'Quick recipe tutorial 🍳',
        'mediaItems': [
            {'url': 'https://example.com/recipe.mp4'}
        ],
        'platforms': [{
            'platform': 'pinterest',
            'accountId': 'YOUR_ACCOUNT_ID',
            'platformSpecificData': {
                'title': '5-Minute Breakfast Recipe',
                'boardId': 'YOUR_BOARD_ID',
                'link': 'https://myrecipes.com/quick-breakfast'
            }
        }],
        'publishNow': True
    }
)

Video Cover Image

Add a custom cover for video Pins:

{
  "platformSpecificData": {
    "coverImageUrl": "https://example.com/cover.jpg",
    "coverImageKeyFrameTime": 5
  }
}
PropertyDescription
coverImageUrlCustom cover image URL
coverImageKeyFrameTimeAuto-extract frame at N seconds

Pin Title

PropertyRequirement
Max Length100 characters
DefaultFirst line of content
Fallback"Pin"
{
  "platformSpecificData": {
    "title": "My Pin Title (max 100 chars)"
  }
}

Board Selection

Specify which board to pin to:

{
  "platformSpecificData": {
    "boardId": "board_123456"
  }
}

If omitted, the first available board is used.

Get Board IDs

Use the Pinterest accounts endpoint to list available boards for a connected account.

Add a clickable link to your Pin:

{
  "platformSpecificData": {
    "link": "https://example.com/landing-page"
  }
}
  • Must be a valid URL
  • Opens when users click the Pin
  • Important for driving traffic

GIF Support

Pinterest supports animated GIFs:

  • Auto-play in feed
  • Max 32 MB
  • Treated as image (not video)
  • Recommend keeping under 10 MB for fast loading

Common Issues

"Image too small"

Minimum dimensions are 100 × 100 px, but Pinterest recommends at least 600 px wide for good quality.

Pin not showing in feed

  • Pinterest may take time to index new Pins
  • Ensure board is not secret/archived
  • Check if account is in good standing

Video processing failed

  • Ensure format is MP4 or MOV
  • Check duration (4 sec - 15 min)
  • Verify file size (≤2 GB)
  • Use H.264 codec

Wrong aspect ratio display

Pinterest crops images to fit. Use 2:3 ratio for best results:

  • 1000 × 1500 px
  • 600 × 900 px (minimum)
  • Ensure URL is valid and accessible
  • Use https:// (not http://)
  • Avoid URL shorteners that may be blocked