Automate TikTok posting at scale: what breaks when you move past one account
TikTok's Content Posting API is built for single-app publishing. Here's what happens when you try to automate across multiple creator accounts, and how to handle token expiry, daily limits, and content moderation at scale.
TikTok is the hardest platform to automate
Every social platform has friction. Instagram requires Facebook Business verification. LinkedIn needs chunked video uploads with ETag tracking. Pinterest makes you poll S3 for processing status.
TikTok has all of that, plus requirements no other platform imposes: a multi-week app audit, mandatory UX compliance checks, 24-hour token expiry, per-creator daily post caps, and post-publish content moderation that can silently remove content after your API returns success.
If you are publishing to one TikTok account from a script you run manually, most of this is manageable. When you are automating publishing across multiple creator accounts — for a SaaS product, an agency, or a content operation — these constraints compound into operational problems that the API documentation does not prepare you for.
The token refresh problem
TikTok access tokens expire every 24 hours. Refresh tokens last 365 days, but the refresh itself requires an HTTP call, error handling, and token storage.
For a single account, this is a cron job. For 50 accounts, it is infrastructure.
Every connected creator account needs its own token lifecycle. If a refresh fails — because the user revoked access, because TikTok’s auth server is slow, because your refresh token expired — that account goes silent. No error on the next publish attempt; the token is simply invalid.
What this means in practice:
- You need a token store with per-account expiry tracking
- You need a background process that refreshes tokens before they expire, not when they fail
- You need alerting for accounts where refresh fails, so someone can re-authorize
- You need graceful handling when a publish is attempted with a stale token
None of this is unique to TikTok conceptually. But the 24-hour window makes it the most aggressive refresh cadence of any major platform. LinkedIn tokens last 60 days. Instagram tokens last 60 days. Pinterest gives you 30 days. TikTok gives you one day.
Per-creator daily limits
TikTok caps the number of posts per day per creator account at approximately 15. The exact limit is not exposed via the API and can vary by account. You discover the limit by hitting it.
For a single account posting a few times a day, this is irrelevant. For a content operation that publishes short-form video across many accounts on a schedule, it requires tracking.
You need to:
- Count successful publishes per account per day
- Queue posts that would exceed the limit for the next day
- Handle the edge case where TikTok’s daily limit resets at a different time than your tracking expects
There is also a daily active creator cap set during your app audit. TikTok asks you to estimate how many unique creators will publish through your app per day and sets a limit based on that. If your product grows beyond the estimate, you need to contact TikTok to increase the cap.
The creator info requirement
Before every TikTok post, you must query the creator info endpoint. This returns the creator’s username, avatar, available privacy levels, and interaction settings.
This is not optional. TikTok’s app audit process verifies that your app shows this information to the user before publishing. The API enforces it too — your post request must use a privacy_level value from the creator info response. If the creator’s account settings changed since your last query, the post fails.
At scale, this means every publish is actually two API calls: one to get creator info, one to initialize the post. Both are rate-limited independently (20/min for creator info, 6/min for post init). With a burst of posts across accounts, you can hit these ceilings quickly.
Caching the creator info response is tempting but risky. Privacy level options can change when a creator modifies their account settings. If you cache and the settings change, publishes fail silently — the request returns an error, not a success.
Asynchronous publishing and ghost failures
TikTok publishing is asynchronous. When you initialize a post, TikTok returns a publish_id and starts processing in the background. You poll a status endpoint to learn the outcome.
This creates a category of failure that synchronous APIs do not have: the post that succeeds in the API but fails in reality.
A PUBLISH_COMPLETE status means TikTok accepted and processed the video. It does not mean the video stays published. TikTok runs content moderation after publishing. A video that was live for an hour can be removed — no webhook, no status change, no notification through the API.
For automated systems, this means your publishing pipeline can report success while the content is gone. The only way to detect it is to check the video’s status periodically after publishing, which requires storing the publish_id and running a separate monitoring loop.
At scale, this is a real operational burden. You need to decide: do you monitor every published video for removal? For how long? What happens when moderation removes a video — do you retry, alert the creator, or log it and move on?
Multi-account architecture decisions
When you automate TikTok for multiple accounts, the architecture decisions become non-trivial.
Token storage. Each creator account has its own access token and refresh token. You need encrypted storage with per-account access, plus a refresh scheduler that handles failures gracefully.
Rate limit isolation. TikTok’s rate limits are per user access token, not per app. But the daily active creator cap is per app. You need to track both dimensions.
Failure isolation. If one account’s token expires, other accounts should not be affected. If one post fails, queued posts for other accounts should continue.
Status tracking. With asynchronous publishing, you need to poll status for every in-flight post. At 30 requests per minute per token, a burst of 20 posts across 10 accounts means 200 status polls running concurrently.
Retry logic. When a post fails because of a privacy level mismatch, retrying with the same parameters will fail again. You need to re-query creator info, then retry with updated values. When a post fails because of rate limiting, you need exponential backoff per account.
Content repurposing pitfalls
Most TikTok automation happens in the context of cross-platform publishing: the same video goes to Instagram Reels, YouTube Shorts, and TikTok. Each platform has rules that affect how you repurpose content.
Watermarks. TikTok explicitly prohibits brand logos, watermarks, or promotional text added to content by your app. If you are adding an overlay to videos before publishing across platforms, you need to strip it for TikTok.
Captions. TikTok’s caption field is 2,200 characters, but photo posts split into title (90 characters) and description (4,000 characters). Instagram captions max at 2,200 characters. YouTube Shorts descriptions go to 5,000. A single caption will not work across platforms without adaptation.
Aspect ratios. TikTok recommends 9:16 but accepts horizontal video. If you are repurposing landscape content, TikTok will accept it, but the viewing experience is degraded on mobile.
Audio. If your video uses copyrighted music, TikTok may mute or remove the audio. This is a platform-level moderation decision that happens after publishing — another case where the API returns success but the published content is modified.
For teams repurposing content at scale, each of these rules needs to be encoded into the publishing pipeline. Platform-specific transformations before the API call are as important as the API call itself.
How Postproxy handles TikTok automation
Postproxy has a completed TikTok app audit with video.publish scope approved. When you publish through Postproxy, the TikTok-specific operational complexity stays inside Postproxy’s infrastructure.
curl -X POST "https://api.postproxy.dev/api/posts" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "post": { "body": "New product walkthrough — 60 seconds, no fluff." }, "profiles": ["tiktok", "instagram", "youtube"], "media": ["https://example.com/video.mp4"] }'One request. Three platforms. Postproxy handles what is different about TikTok behind the scenes:
- Token management. Postproxy refreshes TikTok tokens continuously. You never think about 24-hour expiry windows.
- Creator info queries. Every TikTok publish runs a fresh creator info query and uses the current privacy levels. No stale cache, no mismatched values.
- Status polling. Postproxy polls for publish completion and reports per-platform outcomes. When TikTok is still processing, you see it in the post status.
- Rate limit backoff. Postproxy tracks per-account rate limits and queues requests that would exceed them.
- Daily limit tracking. Postproxy monitors daily post counts per creator and handles scheduling around limits.
For multi-account use cases, Postproxy’s profile management handles per-account connections without you building token storage, refresh logic, or failure isolation.
When to build it yourself
If you publish to a single TikTok account on a fixed schedule, the native API is workable. The audit is a one-time cost, the token refresh is a single cron job, and daily limits will not matter.
If you are building a product where users connect their own TikTok accounts, or you manage content for multiple creators, or you publish across platforms — the operational surface area of TikTok’s API becomes the dominant engineering cost. Not the initial integration, but the ongoing maintenance of token lifecycles, rate limit tracking, creator info freshness, and post-publish monitoring.
That ongoing cost is what Postproxy eliminates.
Connect your TikTok accounts and start publishing through the Postproxy API. For the raw API reference, see the TikTok integration guide. For an overview of unified publishing APIs, start with the developer guide.