Pinterest API Post & Schedule Pins Programmatically
The Pinterest publishing API without the OAuth headache. One REST endpoint to post image Pins and video Pins to any board — with titles, descriptions, alt text, destination links and scheduling.
import { UploadPost } from 'upload-post';
const uploader = new UploadPost('your-api-key');
await uploader.upload('pin.mp4', {
title: 'My Pinterest Pin',
platforms: ['pinterest'],
pinterest_board_id: '987654321098765432'
}); Pinterest Posting API — Everything Included
A complete API to automate your Pinterest content
Pinterest Pin API
Publish image Pins to any board with one REST call — set a title, description, alt text and a destination link from code.
Video Pins
Upload native video Pins and control the cover — supply a cover image URL or pick a frame by time with a key-frame timestamp.
Target Any Board
Send each Pin to a specific board with pinterest_board_id. List every board — public and secret — through the boards endpoint.
Destination Links & Alt Text
Drive traffic with a pinterest_link on every Pin and add pinterest_alt_text for accessible, discoverable content.
Schedule & Queue
Schedule Pins with scheduled_date or drop them into your auto-publishing queue with add_to_queue.
One API, Every Network
The same POST /api/upload publishes to Pinterest, Instagram, TikTok, YouTube and more — cross-post from a single call.
Post a Pin to Pinterest via API
One POST request to /api/upload — send a file or a public URL
curl -X POST https://api.upload-post.com/api/upload \
-H 'Authorization: Apikey your-api-key-here' \
-F 'user=my-profile' \
-F 'platform[]=pinterest' \
-F 'video=@/path/to/pin.mp4' \
-F 'pinterest_board_id=987654321098765432' \
-F 'pinterest_title=Summer recipe ideas' \
-F 'pinterest_description=15-minute weeknight dinners' \
-F 'pinterest_link=https://example.com/recipes' {
"success": true,
"results": {
"pinterest": {
"success": true,
"url": "https://pinterest.com/pin/..."
}
},
"usage": { "count": 12, "limit": 100 }
} Need your board ID first? Call the Get Pinterest Boards endpoint to list every board. Full reference in the Upload Video API docs.
Posting an image Pin instead? Use the
Upload Photo API
with the same pinterest_board_id parameter.
Pro tip: fetch your board ID before you post
Every Pinterest Pin has to target a board, so pinterest_board_id is
required on every upload. Call the boards endpoint
(GET /api/uploadposts/pinterest/boards) once to list every board — public and
secret — with its id and name, then cache the IDs you use.
Rule of thumb: map each content type to a board up front (recipes, product shots, tutorials) so your
automation always sends the right pinterest_board_id — a Pin without a valid board
is rejected.
Pinterest API Parameters
The most-used fields for posting Pins via the upload endpoint
| Parameter | Type | Required | Description |
|---|---|---|---|
| pinterest_board_id | String | Yes | Board ID the Pin is published to. Fetch it from the boards endpoint. Required for every Pinterest Pin. |
| pinterest_title | String | No | Specific title for the Pin. Falls back to the global title field. |
| pinterest_description / description | String | No | Populates the Pin description. If omitted, the global title is reused. |
| pinterest_alt_text | String | No | Alt text for the image or video Pin, for accessibility and discovery. |
| pinterest_link | String | No | Destination link the Pin points to. |
| pinterest_cover_image_url | String | No | URL of an image to use as the video Pin cover. |
| pinterest_cover_image_key_frame_time | Integer | No | Time in milliseconds of the video frame to use as the cover. |
| pinterest_cover_image_data / _content_type | String | No | Supply a video cover as base64 image data plus its content type (e.g. image/jpeg) instead of a URL. |
Image Pins share the same parameters (minus the video cover fields). See the complete list in the API documentation.
Start Posting to Pinterest in Minutes
Three steps to integrate the Pinterest API
Create your account
Sign up for Upload-Post and grab your API key from the dashboard.
Connect Pinterest
Authorize your Pinterest account once — we handle the OAuth and Pinterest API access for you.
Post a Pin
POST to /api/upload with platform[]=pinterest, your media file and your pinterest_board_id. Done.
Pinterest API — FAQ
Common questions about posting to Pinterest programmatically
Is there an API to post to Pinterest?
Yes. Upload-Post exposes a Pinterest API through a single REST endpoint (POST /api/upload). You send an image or video with platform[]=pinterest and a pinterest_board_id, and we publish the Pin to your connected Pinterest account. You avoid building your own Pinterest developer app, requesting access and managing OAuth tokens.
Does Pinterest have a posting API?
Pinterest has an official content-publishing API, but using it directly means registering a developer app, requesting access and managing OAuth tokens yourself. Upload-Post runs that integration for you, so you connect your account once and post Pins with one call — no developer app to build.
Can I schedule Pins via API?
Yes. Add a scheduled_date (ISO-8601, up to 365 days in the future) to schedule the Pin — the API returns 202 Accepted with a job_id — or use add_to_queue to drop it into your next available auto-publishing slot.
How do I post a Pin to Pinterest via API?
Send a multipart POST request with your API key in the Authorization header, user (your profile), platform[]=pinterest and pinterest_board_id. Video Pins go to https://api.upload-post.com/api/upload with the video field; photo Pins go to /api/upload_photos with photos[]. Add pinterest_title, pinterest_description and pinterest_link to control the Pin.
How do I get my Pinterest board ID?
Call the boards endpoint (GET /api/uploadposts/pinterest/boards) to list every board — public and secret — on the connected account, each with its id and name. Pass that id as pinterest_board_id when you post. Every Pinterest Pin has to target a board.
Can I post video Pins, not just images?
Yes. Send a video file with platform[]=pinterest to publish a native video Pin. You can set the cover with pinterest_cover_image_url, or pick a frame by time with pinterest_cover_image_key_frame_time.
Can I get Pinterest analytics through the API?
Yes. Upload-Post also exposes analytics for connected accounts, so you can track impressions, saves and clicks on your Pins alongside posting — no separate Pinterest analytics integration to build.
Do I need a Pinterest developer app?
No. Upload-Post operates the Pinterest API integration, so you connect your Pinterest account once and start posting programmatically — no developer app to register, no access request, and no OAuth tokens to manage yourself.
How much does the Pinterest API cost?
You can create an account and an API key for free with no credit card. Connecting Pinterest and posting Pins at scale is covered by the paid plans. See the pricing page for current limits and tiers.
Ready to automate your Pinterest?
Start posting and scheduling Pins to Pinterest programmatically today. No credit card required.
Create Free AccountPrefer an AI agent? Use the Pinterest Claude Code skill or the Pinterest MCP server.