How to Schedule Pinterest Pins with an API (2026 Guide)


Pinterest is the only major social platform where content acts more like a search engine result than a feed post. Pins surface for months or years after publishing, driven by keyword relevance, board context, and seasonal search trends. That makes Pinterest uniquely valuable for developers building content pipelines — and it also means scheduling and SEO metadata matter more here than on any other platform.
This guide covers two approaches to scheduling pins programmatically: the native Pinterest API v5 and PostEverywhere's unified REST API. I will walk through authentication, pin creation, board assignment, rich pins, scheduling, and the trade-offs between the two.
Table of Contents
- Why Schedule Pinterest Pins via API?
- Option 1: Pinterest API v5 (Native)
- Pinterest API Authentication
- Creating a Pin
- Board Assignment
- Scheduling Pins Natively
- Rich Pins and SEO Metadata
- Native API Limitations
- Option 2: PostEverywhere's Unified API
- Comparison: Pinterest API v5 vs PostEverywhere API
- Pinterest-Specific Considerations for Developers
- FAQs
Why Schedule Pinterest Pins via API?
Pinterest rewards consistency. The algorithm favours accounts that publish regularly, and seasonal content needs to go live 30 to 45 days before the relevant season or event. If you are managing multiple Pinterest accounts or building a tool that includes Pinterest publishing, manual pinning does not scale.
Common use cases for API-based scheduling:
- E-commerce platforms that automatically create pins from new product listings
- Content management systems that publish blog posts and create corresponding pins
- Agency tools scheduling pins across dozens of client boards
- AI content pipelines generating pin images, titles, and descriptions programmatically
- Marketing teams building cross-posting workflows that distribute content to Pinterest alongside other platforms
Pinterest is also one of the few platforms that natively supports scheduling through its API — a significant advantage over platforms like Threads, TikTok, or LinkedIn where you need to build your own queue.
Option 1: Pinterest API v5 (Native)
The Pinterest API v5 is a well-documented REST API that covers pin creation, board management, analytics, and scheduling. It is more developer-friendly than most social platform APIs, with clear documentation and predictable behaviour.
Pinterest API Authentication
Pinterest uses standard OAuth 2.0. Here is the flow:
- Create a Pinterest App — register at developers.pinterest.com
- Set up redirect URI — configure your callback URL in the app settings
- Request authorization — redirect users to Pinterest's authorization endpoint
- Exchange the code for tokens — standard OAuth code exchange
The authorization URL:
https://www.pinterest.com/oauth/
?client_id=YOUR_APP_ID
&redirect_uri=YOUR_REDIRECT_URI
&response_type=code
&scope=boards:read,pins:read,pins:write,boards:write
Exchange the authorization code for an access token:
curl -X POST "https://api.pinterest.com/v5/oauth/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=authorization_code" \
-d "code=AUTH_CODE" \
-d "redirect_uri=YOUR_REDIRECT_URI" \
-d "client_id=YOUR_APP_ID" \
-d "client_secret=YOUR_APP_SECRET"
Pinterest access tokens are long-lived — they last 30 days by default. Refresh tokens are provided and can be used to get new access tokens without re-authorization:
curl -X POST "https://api.pinterest.com/v5/oauth/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=refresh_token" \
-d "refresh_token=YOUR_REFRESH_TOKEN" \
-d "client_id=YOUR_APP_ID" \
-d "client_secret=YOUR_APP_SECRET"
The scopes you will need for scheduling pins:
pins:readandpins:write— create and manage pinsboards:readandboards:write— list and create boardsuser_accounts:read— access user profile information
Creating a Pin
Pin creation is a single POST request to the /v5/pins endpoint. Unlike Instagram or Threads, there is no two-step container flow.
Create a basic image pin:
curl -X POST "https://api.pinterest.com/v5/pins" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"board_id": "BOARD_ID",
"title": "10 Home Office Setup Ideas for 2026",
"description": "Transform your workspace with these practical and stylish home office layouts. From standing desks to cosy reading nooks.",
"link": "https://example.com/home-office-ideas",
"media_source": {
"source_type": "image_url",
"url": "https://example.com/pin-image.jpg"
}
}'
Key fields:
board_id(required) — every pin must be assigned to a boardtitle— up to 100 characters, critical for Pinterest searchdescription— up to 500 characters, include keywords naturallylink— the destination URL when users click the pin. This is what makes Pinterest a traffic drivermedia_source— image URL, base64 data, or a reference to a previously uploaded media item
Pinterest accepts JPEG, PNG, WEBP, and GIF images. Recommended aspect ratio is 2:3 (1000 x 1500 pixels). Images wider than they are tall tend to get compressed in the feed.
Create a video pin:
curl -X POST "https://api.pinterest.com/v5/pins" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"board_id": "BOARD_ID",
"title": "Quick Home Office Tour",
"description": "30-second walkthrough of our redesigned workspace.",
"link": "https://example.com/office-tour",
"media_source": {
"source_type": "video_id",
"cover_image_url": "https://example.com/cover.jpg",
"media_id": "VIDEO_MEDIA_ID"
}
}'
Video pins require a separate media upload step first. Upload the video file, wait for processing, then reference the media_id in the pin creation request.
Board Assignment
Every Pinterest pin belongs to a board. This is not optional — the API will reject pin creation without a board_id. Boards serve as topic categories and play a significant role in how Pinterest's algorithm distributes your content.
List available boards:
curl -X GET "https://api.pinterest.com/v5/boards" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
Create a new board:
curl -X POST "https://api.pinterest.com/v5/boards" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Home Office Ideas",
"description": "Workspace layouts, furniture picks, and productivity tips for home offices.",
"privacy": "PUBLIC"
}'
For developers building scheduling tools, you will want to cache board lists and provide a board selector in your UI or API parameters. Board names and descriptions are searchable within Pinterest, so keyword-rich board metadata improves content discoverability.
Board sections are also available via the API. They let you organise pins within a board — useful for e-commerce brands with product categories:
curl -X POST "https://api.pinterest.com/v5/boards/BOARD_ID/sections" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Standing Desks"
}'
Scheduling Pins Natively
Here is where Pinterest stands apart from most social APIs. The Pinterest API v5 supports native scheduling — you can set a future publish time when creating a pin.
curl -X POST "https://api.pinterest.com/v5/pins" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"board_id": "BOARD_ID",
"title": "Spring Garden Planning Checklist",
"description": "Everything you need to start your garden this spring. Soil prep, seed selection, and planting timelines.",
"link": "https://example.com/spring-garden",
"media_source": {
"source_type": "image_url",
"url": "https://example.com/garden-pin.jpg"
},
"publish_at": "2026-05-01T10:00:00Z"
}'
The publish_at parameter accepts an ISO 8601 timestamp. The pin will be created as a draft and automatically published at the specified time. A few constraints:
- The scheduled time must be at least 10 minutes in the future
- The maximum scheduling window is 30 days ahead
- Scheduled pins can be updated or deleted before they publish
- The pin will appear as a draft in the user's Pinterest dashboard until the scheduled time
This native scheduling support means you do not need to build your own cron system for Pinterest — unlike TikTok, Threads, or X where you would need to queue posts and trigger publishing yourself.
Rich Pins and SEO Metadata
Rich pins automatically pull metadata from the destination URL and display it on the pin. There are three types:
- Product pins — show real-time pricing, availability, and purchase links
- Recipe pins — display ingredients, cooking times, and serving sizes
- Article pins — show the headline, author, and description from the source
Rich pins are not set via the API directly. Instead, they are activated by adding Open Graph or Schema.org markup to the destination URL. When Pinterest crawls the link, it enriches the pin automatically.
For developers, this means your link parameter should point to a page with proper meta tags:
<meta property="og:title" content="10 Home Office Setup Ideas for 2026" />
<meta property="og:description" content="Transform your workspace..." />
<meta property="og:image" content="https://example.com/og-image.jpg" />
<meta property="og:type" content="article" />
If you are building an e-commerce integration, structured data on your product pages will trigger product rich pins automatically. This is unique to Pinterest — no other social platform dynamically enriches posts based on link metadata in this way.
Native API Limitations
The Pinterest API v5 is one of the better social platform APIs, but it has constraints:
- Rate limits — standard rate limits are 300 requests per minute per user and 1,000 write operations per day. For bulk pin creation, you will need to implement request throttling
- Media upload complexity — video uploads require a multi-step process: initiate upload, send video chunks, wait for processing, then create the pin with the media ID
- 30-day scheduling cap — you cannot schedule pins more than 30 days in advance. For seasonal content that needs 45+ days of lead time, you will need a secondary queue
- No bulk creation endpoint — there is no batch endpoint for creating multiple pins in a single request. Each pin is a separate API call
- Board requirement — every pin must have a board. If you are building a scheduling tool, you need to handle board selection and creation in your workflow
- OAuth complexity — while simpler than Meta's flow, you still need to manage OAuth 2.0 authorization, token storage, and refresh cycles for every connected account
- App review — production access requires a review process. Standard access provides limited rate limits; partner access unlocks higher limits but requires an application
Building a Pinterest scheduling integration? PostEverywhere's API handles OAuth, token management, and scheduling across Pinterest and seven other platforms. Explore the developer docs.
Option 2: PostEverywhere's Unified API
If you are building a tool that schedules content across multiple platforms — or you want to avoid managing Pinterest's OAuth flow and token lifecycle — PostEverywhere's REST API is the faster path.
Schedule a pin with PostEverywhere:
curl -X POST "https://app.posteverywhere.ai/api/v1/posts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "10 Home Office Setup Ideas for 2026 — Transform your workspace with these practical and stylish layouts.",
"platforms": ["pinterest"],
"media_url": "https://example.com/pin-image.jpg",
"link": "https://example.com/home-office-ideas",
"platform_options": {
"pinterest": {
"board_id": "BOARD_ID",
"title": "10 Home Office Setup Ideas for 2026"
}
},
"scheduled_at": "2026-05-01T10:00:00Z"
}'
One request. The API handles Pinterest's OAuth, board assignment, media formatting, and publishes at the scheduled time. The platform_options object lets you pass Pinterest-specific parameters (like board_id and title) while keeping the core payload platform-agnostic.
Schedule a pin alongside posts on other platforms:
curl -X POST "https://app.posteverywhere.ai/api/v1/posts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "New blog post: 10 home office setup ideas for 2026.",
"platforms": ["pinterest", "instagram", "linkedin", "facebook"],
"media_url": "https://example.com/pin-image.jpg",
"link": "https://example.com/home-office-ideas",
"platform_options": {
"pinterest": {
"board_id": "BOARD_ID",
"title": "10 Home Office Setup Ideas for 2026"
}
},
"scheduled_at": "2026-05-01T14:00:00Z"
}'
PostEverywhere automatically adapts content for each platform — the full description goes to Pinterest, a shorter caption to Instagram, a professional version to LinkedIn. The link parameter becomes a clickable destination on Pinterest while being handled differently on platforms that do not support link previews in posts.
Why a Unified API for Pinterest
Pinterest's native API is decent, but it is still a single-platform integration. If your product publishes to Pinterest alongside Instagram, LinkedIn, and X, you are maintaining four separate OAuth flows, four token refresh cycles, four error handling patterns, and four sets of rate limits.
PostEverywhere's API gives you:
- API key authentication — no OAuth flows to build or maintain
- No scheduling cap — schedule posts weeks or months in advance, not limited to 30 days
- Cross-platform publishing — one request publishes to Pinterest and up to seven other platforms
- Pinterest-specific options — board assignment, titles, and descriptions via
platform_options - Media handling — presigned URL uploads with automatic resizing and format conversion
- AI content generation — generate SEO-optimized pin titles and descriptions via the API
- Webhook callbacks — get notified when pins publish or fail
For a complete overview of how scheduling APIs work across all platforms, see the social media scheduling API guide.
Want to add Pinterest scheduling to your product? PostEverywhere's API is free to test — no credit card required for the 7-day trial. Get your API key.
Comparison: Pinterest API v5 vs PostEverywhere API
| Feature | Pinterest API v5 | PostEverywhere API |
|---|---|---|
| Authentication | OAuth 2.0 | API key |
| App review required | Yes | No |
| Native scheduling | Yes (up to 30 days) | Yes (no time limit) |
| Pin creation | Single endpoint | Single endpoint |
| Board assignment | Required (separate lookup) | Via platform_options |
| Video pins | Yes (multi-step upload) | Yes (single request) |
| Rich pin support | Via destination URL metadata | Via destination URL metadata |
| Bulk creation | No (one pin per request) | No (one post per request) |
| Cross-platform posting | Pinterest only | 8 platforms |
| Token management | Manual refresh every 30 days | Handled for you |
| Rate limits | 1,000 writes/day per user | 10,000 requests/day |
| AI content generation | No | Yes |
| Webhook callbacks | Limited | Yes |
| Pricing | Free (rate limited) | Starts at $19/mo (7-day free trial) |
If you only need Pinterest and your requirements are straightforward, the native API is solid. For multi-platform scheduling, the unified approach saves engineering time.
Pinterest-Specific Considerations for Developers
Pinterest is fundamentally different from other social platforms. If you are building a Pinterest scheduling tool or integrating Pinterest into a broader product, these considerations matter.
SEO-First Content Strategy
Pinterest is a visual search engine. Pin titles and descriptions are not just captions — they are search queries. When you create pins via the API, treat the title and description fields like you would treat page titles and meta descriptions for web SEO.
- Title — include the primary keyword, keep it under 100 characters, make it descriptive
- Description — 500 characters maximum. Include secondary keywords, call to action, and context
- Board names — keyword-rich board names improve discoverability for all pins in that board
If you are generating pin content programmatically, your content pipeline should include keyword research — not just generic captions.
Seasonal Lead Time
Pinterest users search for seasonal content weeks before the event. The platform recommends publishing seasonal pins 30 to 45 days in advance:
- Holiday content — publish by early November for Christmas, late January for Valentine's Day
- Back to school — pins should go live in June
- Summer recipes/travel — start pinning in April
For developers building a Pinterest scheduler, this means your scheduling system needs to handle long lead times. If you are using the native Pinterest API, the 30-day scheduling cap can be a constraint — you would need to queue pins in your own system and create them closer to the target date. PostEverywhere's API does not have this cap.
Board Strategy
Boards are not just organisational — they are distribution channels. Pinterest's algorithm uses board context to understand what a pin is about and who to show it to. When building Pinterest scheduling features:
- Map content categories to boards — if your users publish recipes, home decor, and fashion, they should have dedicated boards for each
- Support board creation via your tool — do not assume users have already set up their board structure
- Consider board sections — for e-commerce, sections within boards (e.g., "Summer Dresses" within a "Women's Fashion" board) improve organisation and SEO
Image Dimensions and Quality
Pinterest has strong opinions about image formatting:
- Optimal ratio — 2:3 (1000 x 1500 px)
- Minimum size — 600 x 900 px
- Maximum file size — 20 MB for images, 2 GB for video
- Supported formats — JPEG, PNG, WEBP, GIF, MP4 (for video)
- Avoid text-heavy images — Pinterest's algorithm deprioritises pins where more than 20% of the image is text
If your integration generates pin images programmatically, build these constraints into your image generation pipeline. PostEverywhere's media handling automatically validates and resizes images to meet Pinterest's requirements.
Destination URLs Matter
Unlike Instagram or Threads, every Pinterest pin can include a clickable destination URL. This is how Pinterest drives traffic — and it is why marketers value the platform. When creating pins via the API:
- Always include a
linkparameter pointing to a relevant landing page - Ensure the destination page has proper Open Graph tags for rich pin enrichment
- Use UTM parameters to track Pinterest traffic in your analytics
- Avoid broken or redirected URLs — Pinterest may flag pins with poor link quality
For a deeper look at how the Pinterest algorithm handles content distribution, see how the Pinterest algorithm works.
FAQs
Can I schedule Pinterest pins via the native API?
Yes. The Pinterest API v5 supports native scheduling via the publish_at parameter when creating a pin. The scheduled time must be at least 10 minutes in the future and no more than 30 days ahead. The pin is created as a draft and publishes automatically at the specified time.
What scopes do I need for the Pinterest API?
For scheduling pins, you need pins:read, pins:write, boards:read, and boards:write. If you also want to access analytics, add user_accounts:read and analytics:read. These scopes are requested during the OAuth authorization flow.
How do Pinterest rate limits work?
The standard rate limit is 300 requests per minute and 1,000 write operations per day per user. Partner-level access provides higher limits. If you are building a tool that manages many accounts, each authenticated user has their own rate limit budget — but you need to track usage per account.
Do I need to assign every pin to a board?
Yes. The board_id parameter is required when creating a pin via the API. Pinterest does not support boardless pins. If your scheduling tool creates pins programmatically, you need to include board selection in your workflow — either by listing available boards and letting users choose, or by mapping content categories to boards automatically.
Can I create Idea Pins (multi-page pins) via the API?
Idea Pins (formerly Story Pins) have limited API support. The Pinterest API v5 primarily supports standard pins and video pins. If Idea Pin creation is critical to your use case, check the latest Pinterest API documentation for current availability, as support has been expanding.
How do rich pins work with the API?
Rich pins are not set via API parameters. They are activated by adding Open Graph or Schema.org structured data to the destination URL you include in the pin's link field. When Pinterest crawls that URL, it automatically enriches the pin with metadata like pricing (product pins), ingredients (recipe pins), or article information. Your API integration does not need to do anything special — just ensure your destination pages have proper meta tags.
Wrapping Up
Pinterest is one of the more API-friendly social platforms. Native scheduling support, a clean REST API, and predictable authentication make the Pinterest API v5 a solid choice for single-platform integrations. The main friction points are OAuth management, the 30-day scheduling cap, video upload complexity, and the lack of a bulk creation endpoint.
For developers building multi-platform tools — or those who want to skip the OAuth setup and get posting quickly — PostEverywhere's unified API handles Pinterest alongside seven other platforms from a single endpoint. Board assignment, scheduling, media handling, and token management are all built in.
Start with the developer documentation to explore the full API reference. The best Pinterest schedulers guide covers the landscape if you are evaluating existing tools rather than building your own.
For the complete picture of social media scheduling APIs, see the hub guide.

Founder & CEO of PostEverywhere. Writing about social media strategy, publishing workflows, and analytics that help brands grow faster.