Documentation

Ship your first Pin in five minutes.

Authenticate, connect Pinterest, publish. Retries and webhooks are handled for you.

Base URL
https://api.pinbridge.io/v1
Authentication
Send your key in the X-API-Key header on every request.
Idempotency
Pass an idempotency_key so a retried publish is safe by default.
1

Authenticate

Create an API key in your dashboard, then send it as X-API-Key on every call. Each key is scoped to a single project (inside your organization) and revocable from the dashboard. See the authentication guide for tokens, API keys, and password flows.

verify.sh
# Verify your key — list connected Pinterest accounts
curl https://api.pinbridge.io/v1/pinterest/accounts \
  -H "X-API-Key: $PINBRIDGE_API_KEY"
2

Connect a Pinterest account

Send the user through managed OAuth. PinBridge stores and rotates their tokens. You never touch Pinterest credentials.

oauth.sh
# Returns a Pinterest consent URL to redirect the user to
curl https://api.pinbridge.io/v1/pinterest/oauth/start \
  -H "X-API-Key: $PINBRIDGE_API_KEY"
3

Publish a Pin

A Pin needs an account_id (from GET /v1/pinterest/accounts) and a board_id (from GET /v1/pinterest/boards?account_id=...), plus an idempotency_key you choose. Then POST the Pin — PinBridge publishes it asynchronously with per-account rate handling and automatic retries.

cURL
curl -X POST https://api.pinbridge.io/v1/pins \
  -H "X-API-Key: $PINBRIDGE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "account_id": "acc_xxx",
    "board_id": "board_xxx",
    "image_url": "https://cdn.shop/img/1.jpg",
    "title": "Summer styles 2026",
    "idempotency_key": "summer-2026-001"
  }'
Python SDK
# pip install pinbridge-sdk
from pinbridge_sdk import PinbridgeClient
from pinbridge_sdk.models import PinCreate

client = PinbridgeClient(api_key=PINBRIDGE_API_KEY)

pin = client.pins.create(PinCreate(
    account_id=ACCOUNT_ID,
    board_id=BOARD_ID,
    title='Summer styles 2026',
    image_url='https://cdn.shop/img/1.jpg',
    idempotency_key='summer-2026-001',
))
print(pin.status)  # queued
4

Get notified with webhooks

Register a webhook once. PinBridge sends signed pin.published and pin.failed events. Delivery retries with exponential backoff until your endpoint returns 200.

webhook payload
{
  "event": "pin.published",
  "pin_id": "pin_8fa2",
  "board_id": "b_78f2a9",
  "status": "published"
}
API reference

The endpoints you will use.

API keys
POST/v1/api-keysCreate a key
GET/v1/api-keysList keys
DEL/v1/api-keys/{id}Revoke a key
Pinterest
GET/v1/pinterest/oauth/startBegin OAuth
GET/v1/pinterest/accountsList connected accounts
GET/v1/pinterest/boardsList boards
Pins
POST/v1/pinsPublish a Pin
GET/v1/pins/{id}Retrieve a Pin
GET/v1/pinsList Pins
Schedules
POST/v1/schedulesSchedule a Pin
POST/v1/schedules/{id}/cancelCancel a schedule
GET/v1/schedulesList schedules
Webhooks & usage
POST/v1/webhooksRegister a webhook
GET/v1/webhooksList webhooks
GET/v1/rate-meterLive rate-limit status

Open the full interactive API reference →

SDKs & integrations

Call it however you build.

Python SDK

An official, typed client. pip install pinbridge-sdk

n8n nodes

Drop PinBridge into any n8n canvas next to your existing HTTP Request and IF nodes.

MCP server

Let Claude, Codex, or any agentic workflow publish Pins through the Model Context Protocol. Setup guide →

Grab a key. Start building.

Playground is free forever. Enough headroom to wire publishing end to end before you spend a cent.