Everything an AI agent can do with the Pinterest API.

A reference guide for building AI agents: every method, how to authenticate, and the permissions each one needs.

Endpoints27
API versionv5
Last updated23 June 2026
Orientation

How the Pinterest API works.

The Pinterest API is how an app or AI agent works with a Pinterest account: creating a Pin, organising boards and board sections, reading the signed-in user account, searching that user's Pins and boards, and pulling analytics. Access is granted through an OAuth access token, and the token carries scopes such as pins:read, boards:write, and user_accounts:read that set which areas a call can read or write. New apps start on a trial access tier with low daily caps and request standard access for higher per-minute limits.

27Endpoints
6Capability groups
16Read
11Write
5Permissions
Authentication
Pinterest authenticates with OAuth 2.0. A user-context app runs the authorization-code flow to get an access token tied to a person, which a call sends as a Bearer token; refresh tokens keep it alive without re-prompting. Tokens carry a fixed set of scopes chosen at authorization time. Granting a scope on its own does not grant access, the signed-in user must also have the right role on the board or account being touched.
Permissions
Each scope is a read or write grant on one area, like pins:read, pins:write, boards:read, boards:write, or user_accounts:read. Separate read_secret and write_secret scopes (pins:read_secret, boards:write_secret) reach a person's secret Pins and boards, which the standard scopes do not. Advertising data needs ads:read or ads:write, and these advanced scopes require Pinterest app approval.
Rate limits
Every endpoint belongs to a rate-limit category, and limits apply per app and per user. On trial access the ceiling is roughly 1,000 requests per day across all requests; on standard access it is 100 requests per second per user per app, with per-minute category limits on top. Going over returns HTTP 429, and x-ratelimit-limit, x-ratelimit-remaining, and x-ratelimit-reset headers report the current state.
Versioning
The API carries one major version in the path, v5, the only supported version since v3 was deprecated in June 2023. Pinterest publishes dated minor releases (5.x) in a changelog and OpenAPI description, most additive, some marked as breaking. There is no per-account version pinning, so an integration tracks the changelog and tests breaking minor releases in the sandbox.
Connect & authenticate

Connection & authentication methods.

How an app or AI agent connects to Pinterest determines what it can reach. There is a route for making calls on behalf of a user, and an alpha server that exposes Pinterest advertising data to agents, and each is governed by the access token behind it and the OAuth scopes that token carries.

Ways to connect

REST API

The REST API takes JSON requests, returns JSON, and pages through lists with a bookmark cursor, at https://api.pinterest.com/v5. A call authenticates with an OAuth 2.0 access token sent as a Bearer token, and the token's scopes plus the signed-in user's roles decide what it can reach.

Best forConnecting an app or AI agent to Pinterest.
Governed byThe access token and the OAuth scopes it carries.
Docs ↗

Ads MCP server (alpha)

A first-party Model Context Protocol server, shipped 17 June 2026, exposes Pinterest advertising data to AI agents and LLM clients. It is in alpha with named partners only and is read-only at launch, giving an agent read access to campaign performance, analytics, keyword insights, and Taste Graph signals, with any change still routed through a person. It does not cover general content like Pins or boards.

Best forConnecting an AI agent to Pinterest advertising data through MCP.
Governed byThe partner's authorized access and the read-only alpha scope.
Docs ↗
Authentication

OAuth 2.0 (authorization code)

An app sends the user to Pinterest to authorize a chosen set of scopes, gets an authorization code, and exchanges it for an access token and a refresh token. The access token represents the signed-in user and is sent as a Bearer token. Scopes are fixed at authorization time, and the user must also hold the right role on the board or account being touched.

TokenBearer OAuth access token (user context)
Best forActing on behalf of a Pinterest user.
Docs ↗

OAuth 2.0 (client credentials)

A client-credentials flow issues an app-context token without a specific user, used for app-level operations that do not act on one person's content. It authenticates the same way, as a Bearer token, and is limited to what an app-level token is allowed to do.

TokenBearer OAuth access token (app context)
Best forApp-level calls not tied to a single user.
Docs ↗
Endpoint reference

Every Pinterest API method.

Filter by method, access, or permission, or search any path. Select a row for version detail, rate limits, the related webhook event, and the source.

MethodEndpointWhat it doesAccessPermissionVersion

Pins

Methods for listing, reading, creating, updating, and deleting Pins.8

Returns public Pins; pins:read_secret is also needed to include secret Pins.

Acts onpin
Permission (capability)pins:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A secret Pin requires pins:read_secret.

Acts onpin
Permission (capability)pins:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Also reads boards (boards:read) to place the Pin; a secret board needs the secret scopes.

Acts onpin
Permission (capability)pins:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A secret Pin requires pins:write_secret.

Acts onpin
Permission (capability)pins:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Irreversible; a secret Pin requires pins:write_secret.

Acts onpin
Permission (capability)pins:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Also reads and writes the destination board (boards:read, boards:write).

Acts onpin
Permission (capability)pins:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onpin_analytics
Permission (capability)pins:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only; limited to a set of Pin ids per call.

Acts onpin_analytics
Permission (capability)pins:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Boards

Methods for listing, reading, creating, updating, and deleting boards.6

Returns public boards; boards:read_secret is needed to include secret boards.

Acts onboard
Permission (capability)boards:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A secret board requires boards:read_secret.

Acts onboard
Permission (capability)boards:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A secret board requires boards:write_secret.

Acts onboard
Permission (capability)boards:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A secret board requires boards:write_secret.

Acts onboard
Permission (capability)boards:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Irreversible; removes the board's Pins. A secret board requires boards:write_secret.

Acts onboard
Permission (capability)boards:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Also reads Pins (pins:read); a secret board needs the secret scopes.

Acts onpin
Permission (capability)boards:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Board sections

Methods for working with the sections inside a board.5

A secret board requires boards:read_secret.

Acts onboard_section
Permission (capability)boards:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A secret board requires boards:write_secret.

Acts onboard_section
Permission (capability)boards:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A secret board requires boards:write_secret.

Acts onboard_section
Permission (capability)boards:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A secret board requires boards:write_secret.

Acts onboard_section
Permission (capability)boards:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Also reads Pins (pins:read); a secret board needs the secret scopes.

Acts onpin
Permission (capability)boards:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Media

Methods for registering and tracking media uploads for video Pins.3

Registers the upload; the file is then sent to the returned location and referenced by media_id at Pin creation.

Acts onmedia_upload
Permission (capability)pins:write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onmedia_upload
Permission (capability)pins:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only; used to check that a video has finished processing before creating the Pin.

Acts onmedia_upload
Permission (capability)pins:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply
Methods for searching the signed-in user's own Pins and boards.2

Also reads boards (boards:read); secret content requires the secret read scopes.

Acts onpin
Permission (capability)pins:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Secret boards require boards:read_secret.

Acts onboard
Permission (capability)boards:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

User account & analytics

Methods for reading the signed-in user account, its followers, and its analytics.3

Read-only.

Acts onuser_account
Permission (capability)user_accounts:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onuser_account_analytics
Permission (capability)user_accounts:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onfollower
Permission (capability)user_accounts:read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply
No endpoints match those filters.
Webhooks

Webhook events.

Pinterest does not offer a general webhook system for content events like a Pin being created. An app learns about new activity by calling the API, and lead-ad and conversion features have their own narrow delivery mechanisms.

EventWhat it signalsTriggered by
No events match that search.
Rate limits & pagination

Rate limits, pagination & request size.

Pinterest limits how fast an app can call, by sorting every endpoint into a rate-limit category and capping calls per app and per user. The ceiling depends on whether the app is on trial access or standard access.

Request rate

Pinterest sorts every endpoint into a rate-limit category and applies limits per app and per user, not by a per-method point cost. The overall ceiling depends on the access tier: a trial-access app is capped at roughly 1,000 requests per day across all requests, while a standard-access app gets 100 requests per second per user per app, with separate per-minute limits per category (for example ads:read at 1,000 per minute, org_write at 100 per minute). Going over returns HTTP 429, and the response carries x-ratelimit-limit, x-ratelimit-remaining, and x-ratelimit-reset headers so a caller can pace itself. Limits are subject to change.

Pagination

List endpoints are cursor-based. A page_size parameter sets how many items come back, defaulting to 25 and capping at 250. The response includes a bookmark string, and a caller passes that bookmark back on the next request to fetch the following page; an empty bookmark means there are no more pages.

Request size

A single page returns at most 250 items, the maximum value of page_size. Media for video Pins is uploaded out of band: an app registers an upload, receives a media_id and storage location, uploads the file there, then references the media_id when creating the Pin.

Errors

Status codes & error handling.

The status codes an agent should handle, and what to do about each.

StatusCodeMeaningWhat to do
400Bad RequestThe request was malformed: a parameter is missing, has the wrong type, or fails validation.Read the error message, fix the parameters, and resend. The request is not retryable as-is.
401UnauthorizedNo valid access token was provided, or the token has expired.Refresh the access token with the refresh token, or re-run the OAuth flow, then resend.
403ForbiddenThe token is valid but lacks the scope for this call, or the user lacks the role on the board or account being touched.Re-authorize with the needed scope, or have the user granted the right role, then resend.
404Not FoundThe requested object does not exist or is not visible to this token, for example a secret Pin without a secret scope.Verify the object id and confirm the token has the scope and role to see it.
409ConflictThe request conflicts with the current state of the resource, for example a duplicate or competing operation.Re-fetch the resource, reconcile the state, and retry the operation.
429Too Many RequestsA rate-limit category was exceeded for the app or the user.Back off using the x-ratelimit-reset header, then retry. Apply for standard access for higher limits.
500Internal Server ErrorAn error on Pinterest's side. It is rare.Retry with backoff, and contact Pinterest support if it persists.
Versioning & freshness

Version history.

Pinterest carries one major API version in the path, v5, and ships dated, mostly additive releases tracked by a minor version number rather than minting a new major version for each change.

Version history

What changed, and when

Latest versionv5
v5Current version
v5 (current major version)

v5 is the only supported major version of the Pinterest API, with v3 deprecated in June 2023. It carries the version in the path and ships dated minor releases (5.x) through the changelog and the published OpenAPI description, most additive and some marked breaking. The OpenAPI description was at version 5.28.0 when last verified.

What changed
  • All current Pins, boards, board sections, user account, search, media, analytics, and ads endpoints live under v5.
  • Minor releases are tracked by a 5.x number rather than a new major version.
  • There is no per-account version pinning; integrations track the changelog.
2025-12-11Requires migration
Minor releases 5.20.0 to 5.23.0

A batch of advertising-focused minor releases published together, several flagged as breaking on ads, ad-group, audience, and ad-account endpoints.

What changed
  • Ad groups: AUDIENCE_INCLUDE and AUDIENCE_EXCLUDE minimum item count lowered from 100 to 0 (breaking).
  • Ad accounts: the list response body type changed and added 400, 401, 403, 404, and 429 error responses.
  • Ads: new creative_type enum values COLLAGE, MAX_WIDTH_REGULAR_COLLECTION, and MAX_WIDTH_VIDEO_COLLECTION.
  • Audiences: event_data currency and line_items restructured to schema references.
2025-08-18Feature update
Minor release 5.18.0

An additive release across bulk operations and catalogs.

What changed
  • Bulk: LABEL added to bulk download entity types; labels added to bulk upsert create and update.
  • Catalogs: new PinMedia schemas added to catalog item media; new feed processing warnings.
2025-08-14Feature update
Minor release 5.17.0

An additive release on ad-group conversion reporting.

What changed
  • Ad groups: reporting_event property added to conversion tag v3 goal metadata on get, create, and update.

Build against v5 and follow the changelog for additive and occasionally breaking minor releases.

Pinterest API changelog ↗
Questions

Pinterest API, answered.

How does an app authenticate with the Pinterest API?+
Pinterest uses OAuth 2.0. An app sends the user to Pinterest to authorize a chosen set of scopes, receives an authorization code, and exchanges it at the token endpoint for an access token and a refresh token. The access token is sent as a Bearer token on each call and represents the signed-in user. The refresh token is used to obtain a new access token when the old one expires, so the user is not prompted again.
What is the difference between trial access and standard access?+
A new app starts on trial access, which is meant for testing and is capped at roughly 1,000 requests per day across all requests. To raise that ceiling to standard access, around 100 requests per second per user per app plus per-minute category limits, an app applies to Pinterest for review. Some scopes, such as the advertising scopes, require approval before they can be granted at all.
What are the secret scopes (read_secret, write_secret)?+
Pinterest separates public content from secret content. The pins:read and boards:read scopes see only public Pins and boards, while pins:read_secret and boards:read_secret are needed to see a person's secret ones; the same split applies to pins:write_secret and boards:write_secret for changing them. Requesting only the public scopes keeps an agent away from secret content entirely.
Does Pinterest send webhooks for new Pins or boards?+
No. Pinterest does not offer a general webhook system that pushes an event when a Pin or board is created or changed. An app learns about new content by calling the API and comparing what it finds. Some advertising features, like lead-ad delivery and conversion reporting, have their own narrow delivery mechanisms, but they do not cover general content events.
How does an agent create a video Pin?+
Video is uploaded out of band. The agent registers a media upload, which returns a media_id and an upload location, uploads the video file to that location, waits for it to finish processing, then creates the Pin and references the media_id. An image Pin can instead point straight at an image URL, with no separate upload step.
Is there an official Pinterest MCP server?+
Pinterest shipped a first-party Ads MCP server on 17 June 2026, in alpha with named partners only. It gives an AI agent read access to advertising data, including campaign performance, analytics, keyword insights, and Taste Graph signals; it is read-only at launch, so any change still routes through a person. It does not cover general content like creating Pins or boards, which go through the REST API.
Related

More social API guides for agents

What is Bollard AI?

Control what every AI agent can do in Pinterest.

Bollard AI sits between a team's AI agents and Pinterest. Grant each agent exactly the access it needs, read or write, area by area, and every call is checked and logged.

  • Set read, write, or full access per agent, never a shared Pinterest token.
  • Denied by default, so an agent reaches only what has been explicitly allowed.
  • Every call recorded in plain English: who, what, where, and the decision.
Pinterest
Content Agent
Read Pins ResourceOffReadFull use
Create Pins ActionOffReadFull use
Boards ResourceOffReadFull use
Delete boards ActionOffReadFull use
Account analytics ResourceOffReadFull use
Per-agent access, set in Bollard AI, not in Pinterest