Skip to main content

1. Overview

Pinterest publishing uses the Pinterest API v5 against your connected Pinterest account. Every Pin needs a destination board and an image, there is no text-only or link-only post type. SocialAPI also exposes board management endpoints so you can create, rename, or remove boards without leaving the API. Pinterest’s Developer Terms of Service prohibit storing information accessed through the API. Boards and Pins are never persisted: every read hits Pinterest live, on every request, with no cache and no TTL.

2. Create a Pin

Use POST /v1/posts with a target pointing at a Pinterest account. media must contain exactly one image, Pinterest has no text-only Pin type.

Target field

board_id must be a top-level field on the target, not inside platform_data: Pinterest has no default board, so a target with neither board_id nor page_id set returns 400 validation.board_id_required, and setting board_id inside platform_data returns 400 validation.use_board_id.

Platform data fields

Limits

  • Exactly one image in media. Pinterest Pins are image-only through this endpoint.
  • Title: 100 characters. Description: 800 characters. Alt text: 500 characters. Link: 2,048 characters, and must be a valid http or https URL.

Scheduling


3. Update and delete a Pin

Update is not supported. Pinterest’s PATCH /pins endpoint is still in beta and not available to every app, so PATCH /v1/posts/:pid returns a not_supported error for Pinterest targets. Pin media is also immutable once created: even with beta access, only title, description, link, and board placement could change. To change the image, delete the Pin and create a new one.

4. List boards

Response:
Boards are fetched live from Pinterest on every call. SocialAPI stores neither the board name nor its privacy setting, so there is no cache and no lag: a name change on Pinterest shows up on the next request.

5. Create board

Returns 201 with the created board. There is no default board: every publish target must set board_id explicitly.

6. Update board

name, description, and privacy are pushed to Pinterest. boardId accepts either the internal board handle or the raw Pinterest board id. Privacy cannot be set to PROTECTED via update. Pinterest’s update schema only accepts PUBLIC or SECRET on PATCH /boards/{id}, unlike create, which also accepts PROTECTED. If a board is already PROTECTED, its privacy cannot be changed at all through this endpoint: recreate the board instead.

7. Delete board

Deleting a board permanently deletes every Pin saved to it, and this cannot be undone. There is no soft-delete or recovery path on Pinterest’s side. Returns 204 on success.

8. Get account summary

Returns the connected account’s public profile counts (username, profile image, followers, pins, boards, monthly views), fetched live from Pinterest on every call.

9. List pins

Response:
Pins are fetched live from Pinterest on every request and are never stored by SocialAPI. limit is optional, defaults to 50, and caps at 50. If Pinterest cannot be reached, the request fails rather than returning a stale or empty list.

10. Required OAuth scopes

Add boards:read_secret and pins:read_secret if the user’s secret boards and Pins should be accessible. To verify which scopes your connected account has granted, call GET /v1/accounts/:id/limits.