Overview
Schedule and automate Pinterest Pins with image pins, video pins, boards, and destination links.
Schedule and automate Pinterest Pins with image pins, video pins, boards, and destination links.
Quick Reference
| Property | Value |
|---|---|
| Title limit | 100 characters |
| Description limit | 800 characters |
| Images per pin | 1 |
| Videos per pin | 1 |
| Image formats | JPEG, PNG, WebP, GIF |
| Image max file size | 32 MB |
| Video formats | MP4, MOV |
| Video max file size | 64 MB through Onepostly |
| Video duration | 4 seconds - 15 minutes |
| Scheduling | Yes, with IANA timezone |
| Editing published pins | Not supported |
| Inbox / Comments | No |
| Analytics | No |
Before You Start
Pinterest is a search engine, not a social feed. Pins are discovered through search and browse, not by followers. SEO (title, description, board name) matters more than posting time. Pins have a months-long lifespan, unlike hours on other platforms.
Additional requirements:
boardIdis required. Create a board in Pinterest or via the Boards API- Media is required. There are no text-only pins
- The
linkfield on each pin drives traffic to your destination
Connect
Complete the Pinterest consent screen. Onepostly requests all scopes below in a single OAuth flow.
const { connections: list } = await connections.listConnections();
const pin = list.find((c) => c.platform === "pinterest");
// pin.id is your accountIdIf you later get a permission error on an action that should work, reconnect Pinterest once.
OAuth Scopes
| Scope | What it enables |
|---|---|
user_accounts:read | Account identity (id, username, avatar) |
boards:read | List boards for pin targeting |
boards:write | Create boards via the API |
pins:read | Read pins (permalinks, analytics) |
pins:write | Create and delete pins |
Token Lifetime
| Token | Lifetime | Behavior |
|---|---|---|
| Access token | ~30 days | Refreshed automatically by Onepostly |
| Refresh token | Rotated on refresh | Reconnect the account after expiry or revocation |
Boards
Every pin belongs to a board. List the boards on a connected account, or create a new one directly through the API (no reconnect needed; the boards:write scope is part of every Pinterest connection).
List Boards
import { Configuration, ConnectionsApi } from "@onepostly/sdk";
const connectionsApi = new ConnectionsApi(
new Configuration({ apiKey: process.env.ONEPOSTLY_API_KEY })
);
const response = await connectionsApi.listPinterestBoards({
id: "a1b2c3d4-e5f6-4a7b-8c9d-e0f1a2b3c4d5",
});
console.log(response);{
"accountId": "a1b2c3d4-e5f6-4a7b-8c9d-e0f1a2b3c4d5",
"platform": "pinterest",
"boards": [
{
"id": "1234567890123456789",
"name": "Summer ideas"
}
],
"defaultBoardId": "1234567890123456789",
"sandbox": false,
"fetchedAt": "2026-08-25T10:00:00.000Z"
}Create A Board
Returns the new board's id, which you can use immediately as boardId when creating a pin.
import { Configuration, ConnectionsApi } from "@onepostly/sdk";
const connectionsApi = new ConnectionsApi(
new Configuration({ apiKey: process.env.ONEPOSTLY_API_KEY })
);
const response = await connectionsApi.createPinterestBoard({
id: "a1b2c3d4-e5f6-4a7b-8c9d-e0f1a2b3c4d5",
body: {
"name": "Summer ideas",
"description": "My summer inspiration board"
},
});
console.log(response);{
"accountId": "a1b2c3d4-e5f6-4a7b-8c9d-e0f1a2b3c4d5",
"platform": "pinterest",
"board": {
"id": "1234567890123456789",
"name": "Summer ideas"
},
"sandbox": false,
"createdAt": "2026-08-25T10:00:00.000Z"
}Pinterest rejects duplicate board names on the same account. Board creation errors from Pinterest are surfaced with the original message.
Capabilities
| Action | Supported | Notes |
|---|---|---|
| Image pin | Yes | Single image URL |
| Video pin | Yes | One video URL, up to 64 MB through Onepostly |
| Title / description / link | Yes | Per-pin fields on the destination |
| Schedule | Yes | Cancel any time before it publishes |
| Remote delete | Yes | Removes the pin from the board |
| Analytics / comments | No | Pinterest does not expose them through this API |
| Text-only post | No | Pinterest requires media |
What You Can't Do
These features are not available through Pinterest's API:
- Idea Pins (multi-page stories)
- Multi-image or carousel pins
- Rich Pins (requires meta tags on your website)
- Change a published pin's media, destination link, or board
- Inbox or direct messages
- Comments on pins
Known Limitations
- Video pins may keep processing on Pinterest after the destination flips to
published - Title is capped at 100 characters, description at 800
- Pinterest has no API-accessible inbox or comments