n8n Node
Post to Instagram, TikTok, YouTube, X, Facebook and LinkedIn from any n8n workflow.
1. Install
In your n8n instance go to Settings → Community Nodes → Install and enter the package name:
n8n-nodes-chat33Requires n8n with community nodes enabled (self-hosted or n8n Cloud with verified community nodes).
2. Create the credential
- In Chat33, open Settings → API Keys and create a key (default scopes are enough: accounts:read, posts:read, posts:write, media:write).
- In n8n, add a Chat33 API credential: leave Base URL as https://chat33.io and paste the API key.
- Click Test — it verifies the key against GET /api/v1/accounts.
3. Resources & operations
| Resource | Operations | Notes |
|---|---|---|
| Account | Get Many | Lists your connected channels; also powers the account dropdowns |
| Post | Create, Validate, Get, Get Many, Delete, Duplicate, Get Logs | Create/Validate select accounts from a live dropdown; Validate is a dry run (nothing is published) |
| Media | Upload | Binary file from the workflow (up to 500MB) or public URL ingestion (videos up to 4GB for TikTok; YouTube 2GB, X 512MB, Instagram/Facebook 1GB, LinkedIn 200MB) |
TikTok Settings (Post → Create): publish mode (Direct Post or Draft), privacy level, allow comments/duet/stitch, commercial disclosure, AI-generated label — mapped to TikTok's Content Posting API compliance fields for you.
YouTube Settings: Made for Kids (required by YouTube/COPPA) and title.
LinkedIn Settings (node 0.1.3+): visibility (anyone on LinkedIn, or connections only), an article URL to share as a link card, and media title/description. Posts go to the member's own profile — Company Pages aren't supported yet.
Anything not covered by these can go into Additional Options → Platform Config (JSON) — schema in the OpenAPI explorer.
4. Example: publish a video from a webhook
Three nodes: Webhook → Chat33 (Media Upload) → Chat33 (Post Create).
- Webhook: method POST, receives JSON { "videoUrl": "...", "caption": "..." }.
- Chat33 → Media → Upload: Input Type URL, File URL ={{ $json.body.videoUrl }}. Returns a hosted media URL.
- Chat33 → Post → Create: pick accounts from the dropdown, Text ={{ $('Webhook').item.json.body.caption }}, Media URLs ={{ $json.url }}, Additional Options → Media Type video, plus TikTok/YouTube settings as needed.
Trigger it:
curl -X POST https://your-n8n.example.com/webhook/my-path \
-H "Content-Type: application/json" \
-d '{"videoUrl": "https://example.com/video.mp4", "caption": "Hello from n8n 🚀"}'The response contains the created post(s) with status QUEUED — Chat33 publishes within a minute. Add a Post → Get node or set a callbackUrl to track the final status.
Media limits
- Videos: up to 4GB via URL ingestion for TikTok (mp4, mov, webm); other platforms cap lower at publish time — YouTube 2GB, X 512MB, Instagram/Facebook 1GB, LinkedIn 200MB
- Files over 500MB destined for TikTok upload via chunked transfer automatically — no URL/domain involvement, just a slower publish.
- Images: up to 20MB (jpeg, png, webp, gif) — Instagram/Facebook cap at 8MB, LinkedIn at 10MB, X at 5MB
- Binary uploads from the workflow itself: up to 500MB (node 0.1.2+, which uploads straight to storage instead of through the API). Above that, host the file anywhere public (https) and use URL mode.
- Scheduled posts keep a copy. When you schedule a post whose media sits on your own host, Chat33 copies the file into its storage shortly after the post is created — so a post scheduled weeks out still publishes even if your original link expires or the file is deleted. Immediate posts skip this: they publish within about two minutes, so the link is fetched while it's certainly still there.
Troubleshooting
Insufficient scope — recreate the API key with default scopes, or add the missing scope in Settings → API Keys.
TikTok DIRECT_POST requires a privacy level — add TikTok Settings on the Post Create node and pick a privacy level the account allows.
File too large — see media limits above; compress the video or use URL mode.