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.

pinterest-upload.ts
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

Request — cURL
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'
Response — 200 OK
{
  "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

1

Create your account

Sign up for Upload-Post and grab your API key from the dashboard.

2

Connect Pinterest

Authorize your Pinterest account once — we handle the OAuth and Pinterest API access for you.

3

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 Account

Prefer an AI agent? Use the Pinterest Claude Code skill or the Pinterest MCP server.