PinBridge n8n node reference
Every resource, operation, parameter, and endpoint in the PinBridge node (n8n-nodes-pinbridge v1.2.12). Parameter names are the exact node field names. Endpoints are appended to the credential Base URL (default https://api.pinbridge.io).
For setup, start with PinBridge for n8n and Set up your PinBridge credential.
Dropdowns that load from the API
Two fields load their options live:
- Connection (
accountId) loads fromGET /v1/pinterest/accounts. Present on Board, Term, Pin, Schedule, and Rate Meter operations. On Connection → Revoke the same picker is named Connection (connectionId). - Board (
boardId) loads fromGET /v1/pinterest/boards?account_id=<selected>. It returns nothing until you pick a Connection first.
Shared parameters
These appear across multiple operations:
| Parameter | Field name | Notes |
|---|---|---|
| Return All | returnAll |
Boolean, default true. Shown on List / List Imports for boards, connections, pins, schedules, webhooks. |
| Limit | limit |
Number 1 to 1000, default 50. Shown only when Return All is off. |
| Media Source | imageSource |
asset = Uploaded Asset (default), url = Public Image URL. |
| Image URL | imageUrl |
Shown when Media Source = Public Image URL. |
| Asset ID | assetId |
Shown when Media Source = Uploaded Asset. Default ={{$json["id"]}}. |
| Title | title |
Max 100 characters. |
| Description | description |
Max 800 characters. |
| Link URL | linkUrl |
Max 2048 characters. |
| Video Cover Source | coverImageSource |
none (API default), url, asset. |
| Cover Image URL | coverImageUrl |
Shown when Video Cover Source = url. |
| Cover Image Asset ID | coverImageAssetId |
Shown when Video Cover Source = asset. Default ={{$json["id"]}}. |
| Binary Property | binaryPropertyName |
File source for uploads and CSV import. Default data. |
Asset
| Operation | Value | Endpoint | Parameters |
|---|---|---|---|
| Get | get |
GET /v1/assets/{assetLookupId} |
Asset ID (assetLookupId, default ={{$json["id"]}}) |
| Upload Image | uploadImage |
POST /v1/assets/images (multipart) |
Binary Property (binaryPropertyName) |
| Upload Video | uploadVideo |
POST /v1/assets/videos (multipart) |
Binary Property (binaryPropertyName) |
Board
| Operation | Value | Endpoint | Parameters |
|---|---|---|---|
| Create | create |
POST /v1/pinterest/boards |
Connection (accountId), Board Name (boardName), Board Description (boardDescription), Board Privacy (boardPrivacy: `/PUBLIC/PROTECTED/SECRET`) |
| Delete | delete |
DELETE /v1/pinterest/boards/{boardId}?account_id=... |
Connection (accountId), Board (boardId) |
| List | list |
GET /v1/pinterest/boards?account_id=... |
Connection (accountId), Return All, Limit |
Board → List uses client-side Limit (see the quirk below).
Connection
| Operation | Value | Endpoint | Parameters |
|---|---|---|---|
| Complete OAuth Callback | completeOAuth |
GET /v1/pinterest/oauth/callback?code=&state= |
OAuth Code (oauthCode), OAuth State (oauthState) |
| List | list |
GET /v1/pinterest/accounts |
Return All, Limit |
| Revoke | revoke |
DELETE /v1/pinterest/accounts/{connectionId} |
Connection (connectionId) |
| Start OAuth | startOAuth |
GET /v1/pinterest/oauth/start |
(none) |
Connection → List uses client-side Limit (see the quirk below).
Pin
| Operation | Value | Endpoint | Parameters |
|---|---|---|---|
| Publish | publish |
POST /v1/pins |
Connection (accountId), Board (boardId), Media Source + Image URL/Asset ID, Title, Description, Link URL, Alt Text (altText, max 500), Related Terms (relatedTerms, comma-separated), Dominant Color (dominantColor, hex), Video Cover Source + cover fields, Idempotency Key (idempotencyKey, default ={{$execution.id + "-" + $itemIndex}}) |
| Get | get |
GET /v1/pins/{pinId} |
Pin ID (pinId, default ={{$json["id"]}}) |
| Get Status | getStatus |
GET /v1/jobs/{pinId} |
Pin ID (pinId) |
| Delete | delete |
DELETE /v1/pins/{pinId} |
Pin ID (pinId) |
| List | list |
GET /v1/pins |
Return All, Limit |
| Import JSON | importJson |
POST /v1/pins/imports/json |
(none; reads incoming items as the row array) |
| Import CSV | importCsv |
POST /v1/pins/imports/csv (multipart) |
Binary Property (binaryPropertyName) |
| Get Import | getImport |
GET /v1/pins/imports/{importJobId} |
Import Job ID (importJobId, default ={{$json["id"]}}) |
| List Imports | listImports |
GET /v1/pins/imports |
Return All, Limit, Import Status (importStatus: /`queued`/`processing`/`completed`/`completed_with_errors`/`failed`), Import Source (`importSourceType`:/json/csv) |
Publish runs item by item, so each input item produces one pin with its own idempotency key. See Publish your first pin and Bulk import pins.
Rate Meter
| Operation | Value | Endpoint | Parameters |
|---|---|---|---|
| Get | get |
GET /v1/rate-meter?account_id=... |
Connection (accountId) |
Returns the per-account and global token-bucket state. Requires a connected account, or it returns 404.
Schedule
| Operation | Value | Endpoint | Parameters |
|---|---|---|---|
| Create | create |
POST /v1/schedules |
Connection (accountId), Board (boardId), Run At (runAt, dateTime, ISO 8601 with offset), Media Source + Image URL/Asset ID, Title, Description, Link URL, Video Cover Source + cover fields |
| Get | get |
GET /v1/schedules/{scheduleId} |
Schedule ID (scheduleId, default ={{$json["id"]}}) |
| Cancel | cancel |
POST /v1/schedules/{scheduleId}/cancel |
Schedule ID (scheduleId) |
| List | list |
GET /v1/schedules |
Return All, Limit |
Schedule → Create has no Alt Text, Related Terms, or Dominant Color fields (those are Publish-only). See Schedule pins.
Term
| Operation | Value | Endpoint | Parameters |
|---|---|---|---|
| List Related | listRelated |
GET /v1/pinterest/terms/related?account_id=&terms=&exact_match= |
Connection (accountId), Terms (termsInput, comma-separated), Exact Match (exactMatch, boolean) |
Webhook
| Operation | Value | Endpoint | Parameters |
|---|---|---|---|
| Create | create |
POST /v1/webhooks |
Webhook URL (webhookUrl), Webhook Secret (webhookSecret, min 16), Webhook Events (webhookEvents, default pin.published,pin.failed), Enabled (webhookEnabled) |
| Get | get |
GET /v1/webhooks/{webhookId} |
Webhook ID (webhookId, default ={{$json["id"]}}) |
| Update | update |
PATCH /v1/webhooks/{webhookId} |
Webhook ID, Webhook URL (Optional) (webhookUrlUpdate), Webhook Secret (Optional) (webhookSecretUpdate), Webhook Events (Optional) (webhookEventsUpdate), Enabled (Optional) (webhookEnabledUpdate: `/true/false`) |
| List | list |
GET /v1/webhooks |
Return All, Limit |
| Delete | delete |
DELETE /v1/webhooks/{webhookId} |
Webhook ID (webhookId) |
Webhook → List uses client-side Limit (see the quirk below). See Receive pin events with a webhook.
The Limit quirk (boards, connections, webhooks)
Pagination is not uniform across resources:
- Pin → List, Pin → List Imports, and Schedule → List use real server-side paging (limit and offset). Setting Limit actually reduces how much the API returns.
- Board → List, Connection → List, and Webhook → List fetch the full collection from the API and then slice to your Limit on the client. The Limit trims the node’s output, but it does not reduce the API call or the data fetched. On a large account, expect the full list to load regardless of Limit. See Troubleshooting for the practical impact.
Notes
- Auth header is
X-API-Keyon every call. - The node has one version (
version: 1); there are no versioned node variants. - Idempotency is defined only on Pin → Publish. No other operation sends an idempotency key.
