Post to TikTok from n8n
n8n has no official TikTok node. Call ShortSync's API from the HTTP Request node instead: upload a video from a link, then post or schedule it to TikTok with privacy, duet and stitch settings, and send it to YouTube Shorts, Reels and 14 more platforms in the same request.
n8n HTTP Request node · Free plan · Official TikTok API
Community TikTok nodes or ShortSync?
n8n on its own
- n8n has no official TikTok node. Community packages exist, but they need your own TikTok developer app.
- Until TikTok audits your app, TikTok's API only lets it post to private accounts.
n8n with ShortSync
- Connect TikTok to ShortSync once and post through ShortSync's audited TikTok app.
- Post videos or photo posts (up to 35 images), now or at a scheduled time.
- Send the same video to YouTube Shorts, Instagram Reels and 14 more platforms in one request.
- Get a webhook when the post is live or fails.
Set it up in n8n
Connect TikTok to ShortSync once, then two HTTP requests per post. Publish now, schedule it, or save a draft to check first.
- 1
Create a ShortSync API key
In ShortSync, connect the account once, then open Settings → API & MCP, click Create API key and pick the workspace. In n8n, add a Header Auth credential with the name Authorization and the value Bearer followed by your key.
- 2
Find your TikTok connection id
Run an HTTP Request node once with GET on the connections endpoint and copy the id of your TikTok account.
GET https://api.shortsync.app/v1/connections
- 3
Upload the video
Add an HTTP Request node: method POST, the uploads URL, Header Auth credential. Send source_url as a public direct-download link, for example {{ $json.video_url }} from an earlier node. Add an Idempotency-Key header so a retry doesn't import the file twice. If the file is already binary data in n8n, call POST /uploads with an empty body and PUT the file to the returned presigned_url instead.
POST https://api.shortsync.app/v1/uploads { "source_url": "https://example-bucket.s3.amazonaws.com/clips/recipe.mp4" } - 4
Create the TikTok post
Add a second HTTP Request node with POST on the posts URL. Map the upload_id, write the caption (up to 2,200 characters, hashtags inline) and set TikTok's options in the target. Use publish_mode immediate, scheduled with scheduled_for, or draft.
POST https://api.shortsync.app/v1/posts { "upload_id": "{{ $json.upload_id }}", "publish_mode": "scheduled", "scheduled_for": "2026-11-10T17:00:00Z", "caption": "5-minute miso soup #recipe #easyrecipes", "targets": [ { "connection_id": "<TikTok connection id>", "platform_options": { "tiktok": { "privacy_level": "PUBLIC_TO_EVERYONE", "disable_duet": false, "is_aigc": false } } } ] } - 5
React when it's live
Start a second workflow with a Webhook node (POST), add its Production URL as a webhook in Settings → API & MCP with post.published and post.failed, and click Send test event. Failed posts carry data.post.error with TikTok's reason, such as the account's daily posting cap.
TikTok settings you can send
Put these in platform_options.tiktok on the TikTok target.
| Field | What it does |
|---|---|
| privacy_level | PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR or SELF_ONLY; defaults to the first level your account allows. |
| post_mode | direct (publish) or draft (send to the TikTok inbox to finish in the app). |
| disable_comment, disable_duet, disable_stitch | Turn comments, duets or stitches off. |
| is_aigc | Label the post as AI-generated. |
| commercial_content_disclosure, is_branded_content, is_your_brand | TikTok's branded content disclosure. |
| auto_add_music | Photo posts only: TikTok picks background music. |
TikTok workflows to build
Post new clips from a Google Drive folder
Google Drive trigger on a new file in a folder, then POST /uploads with an empty body, PUT the file to presigned_url, and post it to TikTok and YouTube Shorts together.
Schedule TikToks from a Google Sheet
Google Sheets trigger on a new row with a video link, caption and time, then the upload and post requests with publish_mode scheduled.
Write captions and hashtags with AI
Send the topic to an OpenAI or Anthropic node, use its answer as the caption, and create a draft to check in ShortSync first.
Alert on failed posts
Webhook node on post.failed, then a Slack, Discord or email node with data.post.error.message.
Good to know
- TikTok limits how often one account can post through the API. ShortSync starts at most 5 TikTok uploads a minute per account and retries automatically when TikTok asks to slow down.
- TikTok doesn't support a first comment through its API.
- Photo posts take 2 to 35 images; group uploads with POST /uploads/carousel-group first.
- Works the same on n8n Cloud and self-hosted n8n. Webhooks need n8n reachable over https.
Frequently asked questions
Post to TikTok from n8n
Free plan, API key in a minute, official platform APIs.
Official APIs and approved publishing partners
Prefer a walkthrough? Book a demo with Hilma