n8n
Automate Nimply from n8n — with the community node or plain HTTP nodes
Two ways to use Nimply from n8n workflows: the dedicated community node (nicest experience, self-hosted n8n only) or n8n's built-in HTTP Request + Webhook nodes (works everywhere, including n8n Cloud).
Both use an API key from Nimply → Settings → Developers (scopes explained here).
The @nimply/n8n-nodes-nimply package gives you typed operations across posts (including bulk), channels, media, and analytics — plus a trigger node with verified webhook deliveries. Platform-specific operations (Create YouTube Video, Create TikTok Post, Create Pinterest Pin, Create LinkedIn Post) expose each platform's full option set, with live dropdowns for Pinterest boards and TikTok privacy levels.
Availability: the package is being published to npm as
@nimply/n8n-nodes-nimply. If it's not installable yet, use the HTTP Request tab — everything works that way too.
Install
Settings → Community nodes → Install → enter @nimply/n8n-nodes-nimply. (Community nodes require self-hosted n8n.)
Credentials
Create a Nimply API credential with your API key. The built-in credential test calls GET /v1/workspace, so a green check means you're fully connected.
Nodes
- Nimply — Post (create, create bulk, get, get many, update, delete, schedule, unschedule, publish), Channel (get many, get schedule), Media (upload from URL, upload binary from a previous node, get many), Analytics (workspace, channel, post).
- Nimply Trigger — subscribes to any of the 10 webhook events and verifies the HMAC signature of each delivery before your workflow runs; forged or replayed calls are rejected with 401.
Starter workflow
Requires the @nimply/n8n-nodes-nimply package. Paste onto the canvas (Ctrl/Cmd+V), attach your Nimply API credential, and fill in the post fields.
Workflow ideas
- Cron → RSS Read → Nimply: Create Post (next free slot).
- Nimply Trigger: post.failed → Telegram alert with the error.
- Spreadsheet batch → Nimply: Create Bulk → filter failed items into a review list.
Troubleshooting
- Trigger inactive — the webhook is registered when the workflow is activated; make sure the workflow is ON.
- Signature failures in logs — the webhook secret rotated (toggle the workflow off/on to re-register) or something altered the request body in transit.
No installation needed — n8n's built-in nodes talk to the API directly. Works on n8n Cloud and self-hosted alike.
Starter workflow — paste and go
A complete flow — list channels → upload media from a URL → create a draft post — with the node wiring and expressions already done:
Click into the n8n canvas and paste (Ctrl/Cmd+V), then replace nim_live_YOUR_KEY in each node.
Credential (reusable)
Create a Header Auth credential once and attach it to every Nimply HTTP Request node:
- Name:
Authorization - Value:
Bearer nim_live_YOUR_KEY
Actions with the HTTP Request node
Create a post:
- Method:
POST· URL:https://api.nimply.io/v1/posts - Authentication: Generic → Header Auth (the credential above)
- Body (JSON):
{
"channelIds": ["{{ $json.channelId }}"],
"content": "{{ $json.caption }}",
"schedule": "next_slot"
}Other useful calls, same pattern: GET /v1/channels (find channel ids), POST /v1/media with {"url": "..."} (import media, use the returned id in mediaIds), POST /v1/posts/bulk (up to 50 with per-item results). Full list in the API reference.
Tip: set a unique Idempotency-Key header (e.g. {{ $execution.id }}) on create calls so n8n retries can't double-post.
Triggers with the Webhook node
- Add a Webhook node (method POST) and copy its production URL.
- Register it with Nimply once (from any terminal):
curl -X POST https://api.nimply.io/v1/webhooks \
-H "Authorization: Bearer nim_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "n8n workflow", "url": "<your webhook node URL>", "events": ["post.published", "post.failed"]}'- Save the returned
secretif you want to verify signatures (recommended — see the webhook receiver recipe for the exact HMAC check, which you can run in a Code node). - Each delivery arrives as
{ id, type, createdAt, workspaceId, data }— branch on{{ $json.body.type }}.
Test the wiring anytime with POST /v1/webhooks/{id}/test.
Troubleshooting
- 401 from the API — the header value must be the full string
Bearer nim_live_.... - Webhook node receives nothing — the workflow must be active for the production URL to listen; the test URL only listens while you're executing manually.