Connect TikTok to Fondoo

Live7 min readUpdated

Connecting TikTok lets Fondoo post your real videos and photo posts to your business's TikTok account. Your AI agent can write captions, plan posts into time slots and publish them once approved. Fondoo then collects basic post stats.

You don't create a TikTok developer app or API keys. Fondoo posts through its own account with Upload-Post, a social posting service whose TikTok app is already approved. You sign in to TikTok once on a secure page and approve access.

What Fondoo can do with it

  • Draft captions. draft_social_posts writes a caption from your idea, a site page or release notes. save_social_draft saves text you wrote yourself. Drafts are never sent.
  • Schedule and publish. schedule_social_posts places a post in a free slot within your posting windows. The background job publish_due_social_posts sends posts when they are due.
  • Post types: a video, a single photo or a photo carousel. TikTok has no text-only posts. On photo posts, Fondoo uses the first 90 characters as the title and the full text as the description.
  • Privacy level. The owner can choose who sees posts with configure_social_account. See step 7 below.
  • Stats. sync_social_stats saves metrics every hour, and you read them with get_social_stats. If TikTok doesn't report a metric, Fondoo leaves it empty.
  • Not supported from Fondoo: turning duets, stitches or comments off, TikTok's commercial content disclosure (paid partnership or brand promotion), and the AI-generated label. Fondoo doesn't send these settings. Post branded content from the TikTok app instead.

What needs your approval:

  • approve_social_posts is marked destructive when TikTok's approval setting is review (the default) or manual. Agent posts wait under Needs your OK on Home until you click Approve (this runs decide_approval).
  • With approval: "auto", agent posts are scheduled without asking. Automated batches of more than 20 posts a day still need your OK.
  • cancel_post is destructive, so the agent needs your approval to cancel.
  • Only the owner can change posting rules (update_distribution_rules) or the privacy setting (configure_social_account).

Before you start

  • A TikTok account you can sign in to. Upload-Post's docs don't limit this to a particular account type. This may differ for your account.
  • Private accounts can't post publicly. TikTok decides which privacy levels each account may use (Upload-Post TikTok guide).
  • Real media. Fondoo only accepts real screenshots and videos, never generated media. Upload files with register_social_media: PNG, JPEG, WebP, MP4 or WebM, up to 20 MiB per file. Upload-Post lists JPG, JPEG and WebP for TikTok photos, so PNG photos may be rejected. TikTok videos must run 3 to 600 seconds, be at least 360 px on the shortest side and play at 23 to 60 fps (Upload-Post upload video).
  • Costs. You don't need your own Upload-Post plan. The current code adds no per-post charge for TikTok. AI drafts use one AI post unit per idea from your plan's allowance. Scheduling text you wrote yourself uses none. How many social sets you get (one account per network each) depends on your plan.
  • About TikTok's review rule. TikTok makes posts from apps it hasn't reviewed private-only (TikTok Content Posting API). Upload-Post says its app is already approved, so this shouldn't affect you.

Step by step: authorize your account

  1. Ask your agent to connect TikTok, or call connect_social yourself (see below). You get a url and a connectionId.
  2. Open the url. It is an Upload-Post page titled "Connect ". Upload-Post documents these links as valid for 48 hours (Upload-Post: user profile integration).
  3. Choose TikTok. You'll see TikTok's normal login and permission screen. It may name Upload-Post rather than Fondoo.
  4. Sign in to the TikTok account you want Fondoo to post to, and check it's the right one. Approve the permissions it lists, including posting content for you. The exact wording may differ.
  5. Go back to Fondoo. You never paste a password or token into Fondoo or chat. Upload-Post stores the authorization.
  6. Ask your agent to run refresh_social_accounts with the connectionId.
  7. Optional, owner only: set the privacy level with configure_social_account { "siteId": "<site-id>", "accountId": "<account-id>", "settings": { "privacy_level": "SELF_ONLY" } }. The values are PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR and SELF_ONLY. If you leave it out, TikTok uses the account's default. Note that settings replaces any settings already stored for that account.

Connect it in Fondoo

To get the setup steps as a link, your agent can call connect_service({provider:"tiktok", siteId}) (REST: POST /v1/ops/connect_service). It returns a signed link, valid for 15 minutes, plus a QR code and these setup steps. That link only shows instructions. The page where you actually sign in to TikTok comes from connect_social, below.

(a) In the dashboard. Go to Connections. Under Available, find Connect TikTok in the Social group, or search in Find a tool. Fondoo shows Continue connecting and a Connect securely button. That opens a signed setup link with these steps, which expires after 15 minutes. The TikTok sign-in page itself comes from connect_social, so asking your agent is quickest. Once connected, TikTok appears under Connected with a Reconnect button. The Social page's composer only sends text, so use your agent to post TikTok videos and photos.

(b) Ask your agent. Example prompt:

Connect our TikTok account and send me the link. After I approve, refresh accounts. Then upload this real product video and schedule it for TikTok tomorrow with a short caption.

The agent calls:

  1. connect_social with { "siteId": "<site-id>", "provider": "upload_post", "network": "tiktok", "redirectUrl": "https://example.com/connected", "set": 1 }. Don't send an idempotencyKey, because it is rejected.
  2. refresh_social_accounts with { "siteId": "<site-id>", "connectionId": "<connectionId>" }.
  3. register_social_media with type: "video/mp4", filename, alt, provenance: "real_video" and confirmedReal: true. The file goes in base64 or a site storageKey.
  4. schedule_social_posts with { "siteId": "<site-id>", "variants": [{ "accountId": "<account-id>", "text": "<caption>", "format": "video", "mediaIds": ["<media-id>"] }] }.

Turn TikTok on for posting (human owner only). Read the current rules with get_distribution_rules, then call update_distribution_rules, which replaces the whole set. Example rule: { "network": "tiktok", "cadence": 1, "windows": [{ "days": [0,1,2,3,4,5,6], "start": 960, "end": 1200 }], "formats": ["video", "carousel", "image"], "approval": "review" }. Put a media format first: AI drafts use the first format listed, and the rule's default is text, which TikTok rejects.

REST equivalent:

curl -X POST https://api.getfondoo.com/v1/ops/connect_social \
  -H "Authorization: Bearer $FONDOO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"siteId":"<site-id>","provider":"upload_post","network":"tiktok","redirectUrl":"https://example.com/connected"}'

MCP agents (https://api.getfondoo.com/mcp) use find_tools and call_tool.

Test that it works

  1. list_social_accounts shows TikTok as active.
  2. For a safe first post, set privacy_level to SELF_ONLY (step 7) so only you can see it.
  3. Schedule one short real video. Agents can add "dryRun": true to schedule_social_posts to preview first.
  4. Watch get_social_calendar or get_post. TikTok publishes in the background, and the post link can take about 3 minutes to appear (Upload-Post upload video). Then check the post in the TikTok app. When you're done testing, change privacy_level back with configure_social_account.

Troubleshooting

  • "Format not supported by this adapter/network": TikTok needs media. Use video, image or carousel and attach media. A carousel needs at least two images.
  • "Enable tiktok in distribution rules first" or "Format disabled by distribution rules": the owner adds or edits the TikTok rule.
  • Post marked failed, but a draft appears in your TikTok inbox: when TikTok's daily active-user cap is hit, Upload-Post may save the post as a draft instead ("fallback to inbox"). Fondoo treats that as a failure and alerts you, so publish the draft from the TikTok app. Paste the caption in yourself, because captions don't carry over to video drafts. Upload-Post says reconnecting the account moves it to its newer publishing route, which this doesn't affect (Upload-Post: reached active user cap).
  • Privacy errors (tiktok_privacy_unavailable): the account can't use that level, for example a private account asking for PUBLIC_TO_EVERYONE. Choose another level or remove privacy_level.
  • Media rejected: TikTok refused the file because of its format, length, frame rate, resolution or size. Fix the file, since resending the same one will fail again (Upload-Post TikTok guide).
  • "Social account is disconnected" or the account vanished: reconnect through a new connect_social link, then run refresh_social_accounts. Upload-Post says TikTok sessions last about 60 days and refresh when used regularly (Upload-Post FAQ).

Limits, data and security

  • Caption: up to 2,200 characters. Links in captions are not clickable on TikTok, even though Fondoo still tracks them.
  • Photos: up to 35 images, 20 MB each, within Fondoo's 20 MiB upload limit.
  • Daily cap: Fondoo's default is 15 TikTok posts per account per UTC day. Upload-Post also limits each account to 15 posts per rolling 24 hours and 6 per minute (Upload-Post upload limits). Unless the owner changes the rules, the default is one post a day between 09:00 and 17:00 UTC. get_publishing_capacity shows what's left today.
  • Failures: Fondoo retries with growing waits. If a post keeps failing or stays unconfirmed for 24 hours, Fondoo marks it failed and alerts you. It never resends blindly.
  • What Fondoo stores: account ID, name and settings, post text and media, tracked links and hourly metric snapshots. Fondoo never sees your TikTok password or access token, because Upload-Post holds the authorization.
  • Deleting posts: Fondoo can't delete a published TikTok post. Delete it in the app. cancel_post works only before a post goes out.
  • Disconnect: in the TikTok app, open Settings and privacy and look under Security or Security & permissions for the app permissions list. Remove the connected app there. Labels vary by app version. Then run refresh_social_accounts, after cancelling any scheduled TikTok posts. There are no keys to rotate.