MCP (streamable HTTP) or REST API · TikTok

Automate TikTok posts in n8n, with approval for each one

Teams that produce a lot of short video often keep finished clips in cloud storage. n8n can watch that folder, write a caption, import the video into SocialHandoff by URL, and create a TikTok draft. The workflow never publishes: each post waits in the approval inbox, where the reviewer sees TikTok's consent text and the visibility chosen in Connections. You get the throughput of automation and a person on every post.

Prompt

(AI Agent node system prompt) Write one TikTok caption for a short video. Use the filename and the description field. First line is a hook under 60 characters, then one sentence, then 4 hashtags. Output only the caption.

How to do it

  1. Connect TikTok and mint a key In https://app.socialhandoff.com, open Connections, connect TikTok, then open TikTok settings on the account and choose visibility, comment/duet/stitch, and commercial disclosure. Then create an agent key named n8n scoped to TikTok with draft permission.
  2. Set up the trigger Start with a trigger such as a new file in a Google Drive or S3 folder, take the shared link to the file, and write the caption with an AI Agent node.
  3. Import media by URL Add an HTTP Request node: POST https://app.socialhandoff.com/v1/media/import with JSON {"url": public https link, "alt": description} for the video or up to 35 photos. No multipart needed. Keep the id it returns for the next step.
  4. Create the post Add an HTTP Request node: POST https://app.socialhandoff.com/v1/posts with a bearer header and JSON body {"body": caption, "networks": ["tiktok"], "mode": "submit", "mediaIds": [the uploaded ids]}. The post lands in the approval inbox.
  5. Approve with the consent text The approval screen shows the visibility and interaction settings chosen in Connections and TikTok's consent text. Approve, and it publishes; a video is sent to TikTok in chunks.

Example draft

This is what 1,000 orders look like on packing day.

Friday afternoons, 4 of us, and a very loud tape gun.

#smallbusiness #packingorders #behindthescenes #ecommerce

[Video: MP4 from the watched folder, vertical, uploaded as binary by the HTTP Request node]

Gotchas

  • Put the video link in the import request, not in the post body. A link pasted into the caption is just text; only ids from POST /v1/media/import attach the video.
  • TikTok refuses text-only posts. The agent can draft the caption first, but approval and scheduling are refused until a video or photos are attached.
  • The import URL must be public https. A cloud storage link that needs sign-in fails the import; use a shared link or a presigned URL in the expression.
  • Until TikTok audits your developer app, every post is private (visible only to the account), the posting account must be private, and only 5 accounts can post per day.
TikTok
  • Media: Every post needs one video or up to 35 photos. Text-only posts are not possible.
  • Video upload: Videos upload in chunks of 5 to 64 MB; smaller files go in one piece. Maximum duration depends on the creator account.
  • Photo posts: Up to 35 JPEG or WebP images, a title up to 90 characters, and a description up to 4,000 characters.
  • Required choices: TikTok requires a visibility setting with no default, comment/duet/stitch toggles, and a commercial content disclosure.
TikTok scheduler with approval and TikTok's required choices

Frequently asked questions

Why are my TikTok posts private?
TikTok limits unaudited developer apps to private posts. Submit your app for TikTok's audit to lift the restriction; until then, posts are visible only to the account.
Can I use the MCP Client Tool instead of HTTP Request?
Yes. The MCP Client Tool exposes attach_media and draft_post to the AI Agent node. The HTTP Request node is simpler when the workflow, not the model, decides which file to attach.
Can I post photos instead of a video?
Yes. A TikTok photo post takes up to 35 images. The domain serving them must be verified in the TikTok developer portal.

Let your agents post. Keep the final say.

Connect your first agent in minutes. Every draft waits in your inbox until you approve it.

14 days free. No card required.

The hosted version is opening soon

Leave your email and we will send one message when hosted accounts open, with your 14-day trial ready. Want it today? Self-host it free from the repo.

Start free trial