Pinterest Image Pin API
Publish image Pins with a title and description through one REST request.
Pinterest is a visual search engine, not a feed - a single Pin keeps surfacing in search and driving referral traffic for months after you publish it. PostZen posts image Pins to your boards through one simple endpoint, so you can focus on building your product.
No credit card required
import PostZen from '@postzen/node';
const postzen = new PostZen();
await postzen.posts.createPost({
body: {
content: 'A quiet workspace for focused afternoons.',
mediaItems: [{ url: 'https://cdn.example.com/pin.jpg' }],
publishNow: true,
platforms: [{
platform: 'pinterest',
accountId: 'your-pinterest-account-id',
settings: { boardId: 'your-board-id', title: 'A calm workspace' },
}],
},
});WHY POSTZEN?
Pinterest API brings its own authentication, rate limits, media rules, and maintenance. PostZen replaces it with one predictable integration.

2.3M+ posts
2,000+ developersFEATURES
One complete API for Pinterest formats, controls, and scheduled publishing

Publish image Pins with a title and description through one REST request.
Send every Pin to a specific board using its Pinterest board identifier.
Set clear Pin titles and descriptions alongside the media in the same request.
Drive traffic with destination links and add accessible alt text to every Pin.
Publish a Pinterest variant with Instagram, Facebook, X, and other supported platforms.
Schedule Pins for a precise time or place them into your automatic publishing queue.
Three steps to integrate the Pinterest Upload API

Sign up for PostZen and grab your API key from the dashboard.

Authorize your Pinterest account once. We manage OAuth, permissions, and publishing access for you.

POST to /v1/posts with Pinterest selected and your content or media. Done.
CODE EXAMPLE
One POST request to /v1/post — send a file or a public URL
const response = await fetch("https://api.postzen.dev/v1/posts", {
method: "POST",
headers: {
"Authorization": "Bearer POSTZEN_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
platforms: [{
platform: "pinterest",
accountId: "your-pinterest-account-id",
settings: {
boardId: "your-board-id",
title: "Fall color palette guide",
link: "https://example.com/blog/fall-colors"
}
}],
content: "12 warm palettes for autumn brand refreshes",
mediaItems: [{ url: "https://cdn.example.com/fall-palette.jpg", title: "Autumn color palette board cover" }],
scheduledFor: "2026-06-15T19:00:00Z",
tags: ["design", "pinterest"]
})
});
const result = await response.json();
console.log("Scheduled successfully:", result.post._id);Still have questions?
Yes. Pinterest publishing requires a Pinterest business account, which you connect through our one-click OAuth flow. You can convert a personal account to a free business account in your Pinterest settings, and PostZen refreshes the OAuth token for you so the connection stays live.
Yes. Set a scheduledFor timestamp in your API call and PostZen pins at the exact time. You can also cross-post to Instagram, Facebook, X, and other supported platforms in the same request.
Not yet. Each Pin publishes a single image today, and animated GIFs are coming soon. Video Pins are on our roadmap.
Each Pin uses exactly one image up to 32 MB, an optional title of up to 100 characters, a description of up to 500 characters, and optional alt text of up to 500 characters. PostZen validates all of this before publishing.
Yes. Choose the destination board by its board ID and set a click-through link so every Pin sends people to the page you want. Board selection is required; the title, description, and link are optional.
Pinterest's API is free once your developer app passes access review, but the integration costs weeks of engineering for OAuth, token refresh, and board management. PostZen is free up to 2 accounts and pay only for what you use beyond that.
Join the 2,000+ developers who chose PostZen over building around disconnected platform tools. Same reliability, 10x less code.