Developer Docs

n8n Node

Post to Instagram, TikTok, YouTube, X, Facebook, LinkedIn and Bluesky from any n8n workflow.

n8n-nodes-chat33
npm

1. Install

In your n8n instance go to Settings → Community Nodes → Install and enter the package name:

package name
n8n-nodes-chat33

Requires n8n with community nodes enabled (self-hosted or n8n Cloud with verified community nodes).

2. Create the credential

  1. In Chat33, open Settings → API Keys and create a key (default scopes are enough: accounts:read, posts:read, posts:write, media:write).
  2. In n8n, add a Chat33 API credential: leave Base URL as https://chat33.io and paste the API key.
  3. Click Test. It verifies the key against GET /api/v1/accounts.

3. Resources & operations

ResourceOperationsNotes
AccountGet ManyLists your connected channels; also powers the account dropdowns
PostCreate, Validate, Get, Get Many, Delete, Duplicate, Get LogsCreate/Validate select accounts from a live dropdown; Validate is a dry run (nothing is published)
MediaUploadBinary 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, Bluesky 300MB)

Configure Platform Settings (node 0.2.0+): the account dropdown stores channel IDs, so the node can't tell which platforms you picked. Tick them here and only those collections appear. Every platform also takes a Caption that overrides the shared text for that network alone, so one node can send a different message to each.

YouTube Settings: tick YouTube on every YouTube post. Made for Kids is mandated by YouTube/FTC and the post is rejected without it. Privacy defaults to public, so set it if you want unlisted or private. Also carries title, description, tags, category and subscriber notification. Scheduled posts ignore the privacy choice: they upload as private and YouTube flips them at the scheduled time.

TikTok Settings: leave TikTok unticked and the video lands in the account's drafts instead of publishing. Set Publish Mode to Direct Post to publish, which also requires a privacy level. Options you don't set are left alone, so comments, duets and stitches stay enabled unless you turn them off. Commercial disclosure and the AI-generated label map to TikTok's Content Posting API compliance fields for you.

Instagram Settings: First Comment is posted immediately after publishing, where hashtags usually go so they stay out of the caption.

X Settings: Post as Thread splits the text on a separator and chains each chunk as a reply, plus reply permissions.

LinkedIn Settings: 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.

Every option the API accepts now has a typed field, so Additional Options → Platform Config (JSON) is only needed for anything added to the API after the node; schema in the OpenAPI explorer.

4. Example: publish a video from a webhook

Three nodes: Webhook → Chat33 (Media Upload) → Chat33 (Post Create).

  1. Webhook: method POST, receives JSON { "videoUrl": "...", "caption": "..." }.
  2. Chat33 → Media → Upload: Input Type URL, File URL ={{ $json.body.videoUrl }}. Returns a hosted media URL.
  3. 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:

bash
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, Bluesky 300MB
  • Files over 500MB destined for TikTok upload via chunked transfer automatically, with 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, Bluesky at 2MB
  • 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.