Disclosure up front: I built the thing in this post and I sell it. I am posting it here because the build details are the useful part, and a few of them cost me weeks.
If you want to publish to Pinterest from n8n today there is no core node. What exists on npm is a couple of community nodes that authenticate with a session cookie against Pinterest’s internal API. Those work until Pinterest changes something, and they mean putting your own logged-in session into a workflow. I wanted the official v5 API instead, which needs an OAuth app, token storage and a server to hold them, so I built that and wrapped it in a node.
What is published:
- the node,
n8n-nodes-pinbridgeon npm - five templates on n8n.io under the
pinbridgecreator: bulk publish from Sheets, WordPress posts, Shopify products, an OpenAI pin writer, and multi-account scheduling - the API behind it,
api.pinbridge.io
The parts I did not expect:
A video pin is not one call. An image pin is a single POST with a URL. Video is register the media, upload to the bucket you are handed, poll until Pinterest finishes processing, then create the pin with the media id and a cover image. Built by hand in n8n that is four nodes and a wait loop, and the polling step has no fixed duration you can plan around.
Pinterest hands you a new refresh token on every refresh. The access token lasts 30 days and the refresh token 60. Store the new access token but not the new refresh token and everything works for a month, then stops. I wrote that one up separately because it is not Pinterest-specific and it catches people on other providers too.
Most of my “auth” failures were not auth. Of 352 failures across the accounts I watch, 201 were board permission problems arriving as something that reads like a token error. Someone connects an account, picks a board they do not own or that has been deleted, and the message sends them off to reconnect instead of fixing the board. The node surfaces the real error code now with a remediation line.
Rate limits are per connected account, not per app. One global queue is the wrong shape. It has to be partitioned per account, each with its own in-flight count and backoff.
Idempotency belongs in the API, not the workflow. A retried execution re-sends the publish call, and with no key the second one is a duplicate pin. Every publish takes an idempotency key and the node sets one, so a retry is a no-op instead of a double post.
Beyond publishing, the node does schedules you can edit in place, batch publishing, CSV import, board access checks, asset uploads, analytics and webhooks for publish results. It also works as a tool for the AI Agent node.
Happy to answer anything on the Pinterest side. The thing I would most like to hear back: if you are publishing to Pinterest from n8n right now, what are you doing about the video flow? That is the part I still think is too hard, including in my own version.