Authenticate, connect Pinterest, publish. Retries and webhooks are handled for you.
https://api.pinbridge.io/v1X-API-Key header on every request.idempotency_key so a retried publish is safe by default.Create an API key in your dashboard, then send it as X-API-Key on every call. Each key is scoped to a single workspace and revokable from the dashboard.
# Verify your key against the rate-meter curl https://api.pinbridge.io/v1/rate-meter \ -H "X-API-Key: $PINBRIDGE_KEY"
Send the user through managed OAuth. PinBridge stores and rotates their tokens. You never touch Pinterest credentials.
# Returns a Pinterest consent URL to redirect the user to curl https://api.pinbridge.io/v1/pinterest/oauth/start \ -H "X-API-Key: $PINBRIDGE_KEY"
POST a Pin. PinBridge publishes it asynchronously with per-account rate handling and automatic retries.
curl -X POST https://api.pinbridge.io/v1/pins \ -H "X-API-Key: $PINBRIDGE_KEY" \ -H "Content-Type: application/json" \ -d '{ "board_id": "b_78f2a9", "image_url": "https://cdn.shop/img/1.jpg", "title": "Summer styles 2026", "idempotency_key": "launch-123" }'
from pinbridge import PinBridge pb = PinBridge(api_key=PINBRIDGE_KEY) pin = pb.pins.create( board_id='b_78f2a9', image_url='https://cdn.shop/img/1.jpg', title='Summer styles 2026', ) print(pin.status) # queued
Register a webhook once. PinBridge sends signed pin.published and pin.failed events. Delivery retries with exponential backoff until your endpoint returns 200.
{
"event": "pin.published",
"pin_id": "pin_8fa2",
"board_id": "b_78f2a9",
"status": "published"
}An official, typed client. pip install pinbridge
Drop PinBridge into any n8n canvas next to your existing HTTP Request and IF nodes.
Let a Claude or agentic workflow publish Pins directly through the Model Context Protocol.
Playground is free forever. Enough headroom to wire publishing end to end before you spend a cent.