Developer Docs

n8n Node

Post to Instagram, TikTok, YouTube, X, Facebook and LinkedIn 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)

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).

  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
  • 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.