Pinterest is covered by Managed Keys - connect accounts and publish pins without a Pinterest developer app. Bring your own app (BYOK) only if you want full white-labelling.
Pinterest is covered by Managed Keys: your subscription includes Outstand's own Pinterest app, so you can connect Pinterest accounts and publish pins through Outstand's unified social media API without registering anything yourself. The Bring Your Own Key (BYOK) section at the end of this page is optional - follow it only if you want your own Pinterest app on the connection screen.
Managed Keys are included with your subscription and cover Pinterest. We handle the OAuth app setup for you, so there is no developer portal, no Pinterest access-tier upgrade and no app credentials to manage. Everything up to Bring Your Own Pinterest App (BYOK) applies to both Managed Keys and BYOK. Contact support@outstand.so if you have questions about your Managed Keys setup.
OAuth Scopes
Whether you use Managed Keys or BYOK, Outstand requests these scopes when an account connects:
| Scope | Purpose |
|---|---|
pins:read | Read pins and pin analytics |
pins:write | Create and delete pins |
boards:read | List the account's boards |
boards:write | Create boards |
user_accounts:read | Read the profile and account analytics |
Connect a Pinterest Account
Connect from the Outstand Dashboard, or generate an authentication URL through the API and redirect your user to it:
curl -X POST https://api.outstand.so/v1/social-networks/pinterest/auth-url \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"redirect_uri": "https://yourapp.com/pinterest/connected",
"tenant_id": "customer_123"
}'Both fields are optional:
redirect_uri- where the user is sent after the connection completes (for white-label flows)tenant_id- associates the connected account with one of your own customers, so you can filter withGET /v1/social-accounts?tenantId=...
See Get social network authentication URL for the full request and response.
Discover and Create Boards
Every pin is published to a board. After connecting an account, list its boards to find a board_id:
curl https://api.outstand.so/v1/pinterest/accounts/{accountId}/boards \
-H "Authorization: Bearer YOUR_API_KEY"Response:
{
"success": true,
"data": [
{
"id": "123456789",
"name": "Summer Collection",
"description": "Our summer products",
"pin_count": 42,
"privacy": "PUBLIC"
}
],
"count": 1
}The endpoint returns every board the account owns in one response. To create a board, POST to the same path with a name and optionally a description and privacy (PUBLIC, PROTECTED or SECRET - defaults to PUBLIC):
curl -X POST https://api.outstand.so/v1/pinterest/accounts/{accountId}/boards \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Travel inspiration", "privacy": "PUBLIC" }'GET /v1/pinterest/accounts/{accountId}/profile returns the account's Pinterest profile (username, board, pin and follower counts, monthly views).
Creating Pinterest Posts
Pinterest requires a board_id for every pin. Pass it in the top-level pinterest object when creating a post:
curl -X POST https://api.outstand.so/v1/posts \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"accounts": ["YOUR_PINTEREST_ACCOUNT_ID"],
"containers": [
{
"content": "Beautiful summer dresses now available",
"media": [
{
"url": "https://example.com/dress.jpg",
"filename": "dress.jpg"
}
]
}
],
"pinterest": {
"board_id": "123456789",
"title": "Summer Dresses 2026",
"link": "https://example.com/summer-collection",
"alt_text": "A model wearing a red summer dress"
}
}'The container's content becomes the pin description.
Pinterest Configuration Fields
| Field | Required | Description |
|---|---|---|
board_id | Yes | The ID of the board to pin to |
title | No | Pin title, max 100 characters. Defaults to the first 100 characters of the content |
link | No | Destination URL when the pin is clicked |
alt_text | No | Accessibility text for images, max 500 characters |
cover_image_url | No | Cover image for a video pin. See Video |
content | No | Pin description used for Pinterest instead of the post's shared content |
Supported Features
| Feature | Supported | Notes |
|---|---|---|
| Single image pin | Yes | One image in media |
| Multi-image pin (carousel) | Yes | Several images in media |
| Video pin | Yes | Video first in media; uploaded and processed by Pinterest before the pin is created |
| Delete pin | Yes | DELETE /v1/posts/{id}/remote removes the pin from Pinterest (DELETE /v1/posts/{id} alone leaves it live) |
| Pin analytics | Yes | Impressions, saves, pin clicks and outbound clicks over the last 90 days |
| Account analytics | Yes | Followers, pin count and account-level impressions, saves and clicks for a date range |
| Board management | Yes | List and create boards (see above) |
| Comments/replies | No | Pinterest API v5 has no comments endpoint |
| Repost/repin | No | Not available through the API |
Media Requirements
Pins are created through the Pinterest API v5. See the official Create Pin and register media upload references.
At least one image or video is required for every pin. Text-only pins are not supported.
Images
| Requirement | Specification |
|---|---|
| Formats | BMP, JPEG, PNG, TIFF, WEBP (per Pinterest's Pin specs) |
| Maximum size | 20 MB |
| Aspect ratio | 2:3 recommended |
| Delivery | Publicly accessible HTTPS URL - Pinterest fetches the image directly |
One image creates a standard pin. Two or more images create a multi-image (carousel) pin.
Video
| Requirement | Specification |
|---|---|
| Container | MP4 or MOV |
| Codecs | H.264 or HEVC video, AAC audio |
| Duration | 4 seconds to 5 minutes |
| Maximum size | 2 GB |
| Resolution | Up to 1920 px on the longest edge, up to 60 fps |
| Delivery | Outstand registers the upload with Pinterest (POST /v5/media), streams the file and waits for Pinterest to finish processing before creating the pin |
The video must be the first item in media. A video pin carries one video, and its cover image is chosen in this order:
pinterest.cover_image_url, if set- the second item in
media, if there is one - otherwise the first frame of the video
Outstand checks each video against these limits when the post is created. See Video Processing for how videos that miss them are handled.
Token Management
Pinterest access tokens expire after 30 days. Outstand's token refresher runs daily and refreshes each connected Pinterest account about 7 days before its access token expires - roughly every 23 days - so you do not need to do anything.
Pinterest issues a continuous refresh token: it expires after 60 days, but every refresh returns a new one, so it can be renewed indefinitely. Because Outstand refreshes on a ~23-day cadence, the refresh token is always rotated well inside its 60-day window and never lapses on an account that stays connected. Pinterest no longer issues the legacy 365-day (non-renewable) refresh token.
If a refresh fails permanently - for example because the account holder revoked access in Pinterest - Outstand marks the social account inactive so the dashboard prompts a reconnect, and fires an account.token_expired webhook to any subscribed endpoint.
See Pinterest's authentication and authorization guide for the underlying token rules.
Limitations
- Every pin must be assigned to a board (
board_idis required) - Pin titles are limited to 100 characters. A
titlelonger than that is rejected; the default title taken from the content is truncated to 100 characters - Pin descriptions are limited to 800 characters. Longer content is truncated to 800 characters
- A pin cannot mix images and video
- Pinterest has no comments/replies API
- Repinning is not available through the API
Bring Your Own Pinterest App (BYOK)
Most customers can skip this section. It only applies if you want your own Pinterest app, and your own brand, on the connection screen instead of Outstand's. With Managed Keys, Outstand's Pinterest app already has the access Pinterest requires for publishing, and none of the steps or limits below apply to you.
Prerequisites
- A Pinterest business account - Pinterest requires one to register an app
- An app registered in Pinterest's Developer Portal
- Standard access for that app (see Access Tiers and Rate Limits)
- The app's App ID and App secret
Step 1: Add Outstand's Redirect URI
In your Pinterest app's settings, add this redirect URI:
https://www.outstand.so/app/api/socials/pinterest/callbackPinterest sends users here after they authorize your app. If it is missing, Pinterest rejects the connection with a redirect URI mismatch.
Step 2: Add Your Credentials to Outstand
Add the App ID and App secret in the dashboard under Settings → Social Networks, or through the API:
curl -X POST https://api.outstand.so/v1/social-networks \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"network": "pinterest",
"client_key": "YOUR_PINTEREST_APP_ID",
"client_secret": "YOUR_PINTEREST_APP_SECRET"
}'Then connect accounts as usual. Connections now use your app.
If your Pinterest app was created before 25 September 2025, you do not need to change anything for continuous refresh tokens: Outstand sends continuous_refresh=true on every refresh, which opts older apps in. Newer apps issue them by default.
Access Tiers and Rate Limits
Pinterest limits what an app can do by its access tier:
| Access tier | What it allows | Rate limit basis |
|---|---|---|
| Trial | Pins and boards are created as sandbox entities, visible only to their creator | Calls per day, per app |
| Standard | Real, public pins | Calls per minute, per user, per app |
New apps start on Trial. Outstand publishes through Pinterest's production API, so your app needs Standard access before it can publish pins through Outstand. Apply for the upgrade in the Developer Portal. Pinterest asks for a video recording of your app completing an action with the Pinterest API.
With Standard access, limits are counted per connected Pinterest account, so one busy account does not use up another's allowance. Each endpoint belongs to a rate-limit category, the current allowance is reported in the x-ratelimit-limit, x-ratelimit-remaining and x-ratelimit-reset response headers, and exceeding it returns HTTP 429.
See Pinterest's access tiers and rate limits documentation.
Troubleshooting
- "Missing Pinterest App credentials for organization" - no Pinterest credentials are stored for your organization. Add them as in Step 2.
- Redirect URI mismatch - the redirect URI in your Pinterest app must match
https://www.outstand.so/app/api/socials/pinterest/callbackexactly. - Pins fail to publish on a new app - check the app's access tier. Trial apps cannot publish real pins.