Skip to content

Pinterest API

Postproxy creates image and video Pins on a connected Pinterest account. Every Pin requires media and a destination board.

Every request below uses the base URL https://api.postproxy.dev and an Authorization: Bearer YOUR_API_KEY header. Replace YOUR_API_KEY and the example IDs with your own.

Platform IDpinterest
Formatspin
Character limit500 (description); title 100
MediaRequired
PlacementsBoards — selected with board_id
CommentsNo
Direct messagesNo
Post chainsNo
ParameterTypeRequiredDescription
board_idstringYesBoard to pin to — fetch from placements
titlestringNoPin title (max 100 characters)
destination_linkstringNoDestination URL (max 2,048 characters)
cover_url / cover_filestring / fileNoCover image (video Pins only)
thumb_offsetintegerNoThumbnail offset in seconds (video Pins only)
MediaMax sizeFormatsCountDuration
Image32 MBjpg, gif, png, webp1
Video2 GBmp4, mov14 s – 15 min
  • Media is required. The post body becomes the Pin description.
Terminal window
# Image Pin with a destination link
curl -X POST "https://api.postproxy.dev/api/posts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"post": { "body": "10 Tips for Better Photography" },
"profiles": ["prof_abc123"],
"media": ["https://example.com/image.jpg"],
"platforms": {
"pinterest": {
"title": "10 Tips for Better Photography",
"board_id": "987654321",
"destination_link": "https://example.com/blog/photography-tips"
}
}
}'
Terminal window
# Video Pin with a cover image
curl -X POST "https://api.postproxy.dev/api/posts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"post": { "body": "Watch: editing a photo in 30 seconds" },
"profiles": ["prof_abc123"],
"media": ["https://example.com/video.mp4"],
"platforms": {
"pinterest": {
"title": "30-Second Edit",
"board_id": "987654321",
"cover_url": "https://example.com/cover.jpg",
"destination_link": "https://example.com/tutorials"
}
}
}'

A Pinterest profile pins to one of its boards. List them with the placements endpoint — each board’s id is the board_id you pass when creating a Pin. board_id is always required.

Terminal window
# List boards (placements)
curl "https://api.postproxy.dev/api/profiles/prof_abc123/placements" \
-H "Authorization: Bearer YOUR_API_KEY"

Not supported through the API.

Not supported.

Subscribe with the Webhooks API:

Terminal window
curl -X POST "https://api.postproxy.dev/api/webhooks" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/webhooks/postproxy",
"events": ["platform_post.published", "platform_post.failed", "platform_post.insights"]
}'

Events relevant to Pinterest:

EventWhen
post.processedA post is ready to publish
platform_post.publishedA post was published to the platform
platform_post.failedA post failed to publish (retries exhausted)
platform_post.failed_waiting_for_retryA publish attempt failed; will retry
platform_post.insightsNew analytics snapshot
profile.connected / .disconnectedConnection state changed
profile.statsNew profile stats snapshot
media.failedA media attachment failed to process
  • board_id and media are both required on every Pin.
  • cover_url / cover_file and thumb_offset apply to video Pins only.
  • Add a destination_link to drive traffic from the Pin to your site.