Package Information
Documentation
PostPulse n8n Node
Official n8n integration for PostPulse — schedule and publish content to multiple social networks from your n8n workflows.
- Auth: OAuth2 (auto refresh)
- Core actions: Accounts → Media Upload → Schedule Post(s) (+ Telegram Chats lookup)
- Targets today: Instagram, TikTok, YouTube, Threads, LinkedIn, Telegram, X, Bluesky
- Use cases: One-click multi-destination posting, media pipeline, automated campaigns
Table of contents
- Prerequisites
- Install
- Authenticate
- Quick start
- Operations
- Data model
- Platform settings
- Media & text validations
- Rate limits & API keys
- Error handling & troubleshooting
- Examples
- FAQ
- Support
- Versioning & License
Prerequisites
- Sign up at https://post-pulse.com/login
- Connect your social accounts in the web app: https://post-pulse.com/app/accounts
- Request API credentials: email support@post-pulse.com to obtain
client_idandclient_secretand share with us redirect URL generated by n8n - (Telegram only) Add the official PostPulse bot to your channels you plan to post to.
Use the same email in n8n OAuth as your PostPulse account email.
Install
- From npm (recommended):
npm install @postpulse/n8n-nodes-postpulse - Restart n8n and enable the node in Settings → Community Nodes if required.
Authenticate
Create Credentials → PostPulse OAuth2 API in n8n:
- OAuth Redirect URL: share this value in email to support@post-pulse.com
- Client ID / Secret: obtained from support
This node extends n8n’s oAuth2Api so tokens are refreshed automatically.
Quick start
- Accounts → Get Many
Retrieve your connected accounts. Save theidof targets you’ll post to. - Telegram → Get Connected Chats (only if posting to Telegram)
Input:idfrom step 1 (platform must beTELEGRAM). Output containsidper channel/chat. - Media → Upload (for any media)
Upload files (even if you have public URLs). Some platforms (e.g., TikTok/Instagram) require media hosted on post-pulse.com. Save the returnedpath. - Posts → Schedule
Build onePostSchedulewith one or morePublications.- Set
scheduledTime(past/now = queue immediately) - For now, prefer
isDraft: false(update APIs will come later).
- Set
Operations
Accounts: Get Many
- Output: Array of accounts:
{ id, platform, handle, ... } - Use: Pick
idfor each destination.
Telegram: Get Connected Chats
- Input:
{ id }(must be a Telegram account) - Output: Array:
{ id, title }— passchatIdinto Telegram posts.
Media: Upload
- Input: File
- Output:
{ path }— use inattachmentPathsof posts.
Posts: Schedule
- Input:
PostSchedule(see Data model) - Behavior: Schedules one or multiple publications for the same time.
- Recommended:
isDraft: false(until update endpoints are exposed in node).
Data model
PostSchedule
{
"scheduledTime": "2025-08-17T14:03:00",
"isDraft": false,
"publications": [ /* Publication[] */ ]
}
Publication
Represents “one publication in user’s mind” that may map to one or many platform posts.
{
"socialMediaAccountId": 442,
"posts": [ /* Post[] */ ],
"platformSettings": { /* see below */ }
}
- One publication → multiple posts is useful when:
- Telegram account posts to several channels (one post per channel)
- Telegram account posts with large text or more than 10 media (one post per message that will be published)
- Instagram storyline (multiple stories in one conceptual set)
Post
{
"attachmentPaths": [
"6354d8d2-e0f1-702b-af6c-62e28e377ec7/c6c2b826-8aca-4eae-8549-515325012ab4.jpeg"
],
"content": "Your caption or description",
"chatId": "1234567890" // Telegram only
/* "thumbnailPath": "..." — coming soon */
}
Note: For YouTube/TikTok,
contentis used as description (titles are set inplatformSettings).
Platform settings
Each Publication must include platformSettings with a required discriminator: type.
{ "type": "INSTAGRAM", "publicationType": "REELS" }
Supported shapes:
{
"type": "INSTAGRAM",
"publicationType": "FEED" | "REELS" | "STORY"
}
{
"type": "LINKEDIN",
"visibility": "PUBLIC" | "CONNECTIONS" | "GROUP"
}
Threads
{
"type": "THREADS",
"topicTag": "your-topic-tag"
}
TikTok
{
"type": "TIK_TOK",
"title": "My video title",
"privacyLevel": "PUBLIC_TO_EVERYONE" | "FOLLOWER_OF_CREATOR" | "MUTUAL_FOLLOW_FRIENDS" | "SELF_ONLY",
"disableDuet": false,
"disableComments": false,
"disableStitch": false,
"brandContent": false,
"brandOrganic": true,
"hasUsageConfirmation": true
}
YouTube
{
"type": "YOUTUBE",
"title": "My video title",
"privacyStatus": "PUBLIC" | "UNLISTED" | "PRIVATE",
"category": "FILM_ANIMATION" | "AUTOS_VEHICLES" | "MUSIC" | "PETS_ANIMALS" | "SPORTS" | "TRAVEL_EVENTS" | "GAMING" | "PEOPLE_BLOGS" | "COMEDY" | "ENTERTAINMENT" | "NEWS_POLITICS" | "HOWTO_STYLE" | "EDUCATION" | "SCIENCE_TECHNOLOGY"
}
Media & text validations
PostPulse Web enforces rich, platform-specific validations.
API clients must currently validate themselves. (Server-side validations for API clients are planned.)
| Validation area | PostPulse Web | PostPulse API (current) |
|---|---|---|
| X: Standard users can post up to 280 characters per tweet | UI warning | You must validate |
| X: Supported image formats are JPG, PNG, and WEBP | Enforced | You must validate |
| X: Image size should be less than or equal 5MB | Enforced | You must validate |
| X: Video size should be less than or equal 512MB | Enforced | You must validate |
| X: Maximum 4 media attachments | Enforced | You must validate |
| X: Video duration must be between 0.5 sec and 140 sec | Enforced | You must validate |
| X: Media aspect ratio between 1:3 and 3:1 | Enforced | You must validate |
| Threads: Users can post up to 500 characters | Enforced | You must validate |
| Threads: Topic tag should be less than 100 characters | Enforced | You must validate |
| Threads: When no topic tag is specified in the platform settings and the content contains a word with # - the first word with # will be used as a topic tag (expept cases with numbers, like #1) | UI warning | You must validate |
| Threads: Image size should be less than or equal 8MB | Enforced | You must validate |
| Threads: Media aspect ratio between 0,01:1 and 10:1 | Enforced | You must validate |
| Threads: Video duration must be less than 5 min | Enforced | You must validate |
| Threads: Supported video format is MP4 | Enforced | You must validate |
| YouTube: Title should be less than 100 characters | Enforced | You must validate |
| YouTube: Description should be less than 5000 characters | Enforced | You must validate |
| TikTok: Title should be less than 2200 characters for video post | Enforced | You must validate |
| TikTok: Title should be less than 90 characters for image post | Enforced | You must validate |
| TikTok: Description should be less than 4000 characters for image post | Enforced | You must validate |
| TikTok: Image size should be less than or equal 20MB | Enforced | You must validate |
| TikTok: Supported image formats are JPG, PNG, and WEBP | Enforced | You must validate |
| TikTok: Supported video formats are MP4, MOV, and WebM | Enforced | You must validate |
| TikTok: Video duration as per individual limits (typically 1 hour) | Enforced | You must validate |
| TikTok: One post is either 1 video or up to 10 images | Enforced | You must validate |
| TikTok: Video should have no more between 360 and 4096 pixels for both height and width | To Do | You must validate |
| LinkedIn: User can post up to 3000 characters | Enforced | You must validate |
| LinkedIn: One post can contain either 1 video or up to 9 images (or no media at all) | Enforced | You must validate |
| LinkedIn: Supported video format is MP4 | Enforced | You must validate |
| LinkedIn: Video size should be less than or equal 500MB | Enforced | You must validate |
| LinkedIn: Video duration must be between 3 sec and 30 min | Enforced | You must validate |
| Instagram: User can post up to 2200 characters | Enforced | You must validate |
| Instagram: Supported image formats are JPG and PNG | Enforced | You must validate |
| Instagram: Image size should be less than or equal 8MB | Enforced | You must validate |
| Instagram: Feed post can contain up to 10 media (carousel) | Enforced | You must validate |
| Instagram: Feed post media aspect ratio between 1.91:1 and 4:5 | Enforced | You must validate |
| Instagram: Supported video formats are MP4 and MOV | Enforced | You must validate |
| Instagram: Video size should be less than or equal 300MB | Enforced | You must validate |
| Instagram: Feed and Story post video duration must be between 3 sec and 15 min | Enforced | You must validate |
| Instagram: Reels video duration must be between 3 sec and 90 sec | Enforced | You must validate |
| Instagram: Reels and Story post media aspect ratio between 0.01:1 and 10:1 | Enforced | You must validate |
| Instagram: Reels and Story recommended aspect ratio is 9:16 | UI Warning | You must validate |
| Instagram: Video should have no more than 1920 horizontal pixels | To Do | You must validate |
| Bluesky: Users can post up to 300 characters | Enforced | You must validate |
| Bluesky: Post may contain up to 4 images | Enforced | You must validate |
| Telegram: Users can post up to 4096 characters | Enforced | You must validate |
| Telegram: Standard user can post up to 1024 characters if post contains media as well | Enforced | You must validate |
| Telegram: One post may contain up to 10 media | Enforced | You must validate |
| Telegram: Supported image formats are JPG, PNG, and WEBP | Enforced | You must validate |
| Telegram: Supported video formats is MP4 | Enforced | You must validate |
Follow updates at https://post-pulse.com/releases — we’ll announce when API-side validations roll out.
Rate limits & API keys
- Authentication uses OAuth2; tokens are auto-refreshed by n8n.
- PostPulse runs on AWS API Gateway usage plans. Typical plans:
- Standard: 20 RPS burst, 200 RPS steady, 50k req/month
- Agency: higher limits on request
Examples
Minimal single-destination post (Reel)
{
"scheduledTime": "2025-08-17T14:03:00",
"isDraft": false,
"publications": [
{
"socialMediaAccountId": 442,
"platformSettings": {
"type": "INSTAGRAM",
"publicationType": "REELS"
},
"posts": [
{
"attachmentPaths": [
"6354d8d2-e0f1-702b-af6c-62e28e377ec7/c6c2b826-8aca-4eae-8549-515325012ab4.jpeg"
],
"content": "New drop is live! #fashion"
}
]
}
]
}
Telegram to multiple channels in one publication
{
"scheduledTime": "2025-08-17T14:03:00",
"isDraft": false,
"publications": [
{
"socialMediaAccountId": 501, // Telegram account id
"platformSettings": { "type": "TELEGRAM" },
"posts": [
{ "chatId": "-100123", "content": "Hello Channel A", "attachmentPaths": ["u1/p1.jpg"] },
{ "chatId": "-100456", "content": "Hello Channel B", "attachmentPaths": ["u1/p1.jpg"] }
]
}
]
}
TikTok with title & privacy
{
"scheduledTime": "2025-08-17T14:03:00",
"isDraft": false,
"publications": [
{
"socialMediaAccountId": 777,
"platformSettings": {
"type": "TIK_TOK",
"title": "Top 5 tips",
"privacyLevel": "PUBLIC_TO_EVERYONE",
"hasUsageConfirmation": true
},
"posts": [
{ "attachmentPaths": ["u1/v1.mp4"], "content": "Full guide in bio" }
]
}
]
}
FAQ
Do I have to upload media to PostPulse even if I have a public URL?
Yes. Platforms like TikTok/Instagram can validate source URLs; we require hosting under post-pulse.com.
Can I draft then update later via the node?
In v1 of the node, we recommend isDraft: false. Update endpoints will be exposed in a later version.
How do I post to multiple accounts at once?
Create one PostSchedule with multiple Publication objects (one per account).
How do I set YouTube or TikTok titles?
Titles live in platformSettings (see schemas above). content becomes description.
Support
- Email: support@post-pulse.com
Versioning & License
- Semantic Versioning:
MAJOR.MINOR.PATCH - License: MIT
Security notes
- Store secrets in n8n Credentials only; don’t hardcode in workflows.