TikTok inbox upload vs Direct Post: which API for an AI video?
Inbox upload makes a draft the creator finishes in TikTok; Direct Post publishes with title, privacy and consent set in your app. Compare scope and audit.

Use the inbox upload when a person will review each AI-generated clip and finish the post inside TikTok. Use Direct Post when your app collects the title, privacy level, interaction settings and consent itself and publishes straight away. Direct Post carries more UX duties and an audit; the inbox upload is lighter but ends with a draft.
Sume sits upstream of both: it produces the video file, and your app calls TikTok.
How do the two flows differ?
Everything below is from TikTok's upload guide, Direct Post reference and Content Sharing Guidelines.
| Question | Inbox upload | Direct Post |
|---|---|---|
| Result | A draft the user reviews in TikTok | A post made from your app |
| Who finishes | The user, after clicking the inbox notification | Your app, after the user's choices |
| Scope or setup | video.upload scope | Content Posting API product with Direct Post |
| Metadata in your app | Not required for the draft | Title, privacy (no default), interaction settings, disclosure |
| Unaudited clients | Not stated on the page I read | Posts restricted to private viewing |
Which one fits an AI-video team?
If you produce clips in bulk and a human approves each one, the draft flow matches your process, since the creator sees the video in TikTok before it goes out. It also leaves the AI-generated label decision with the person looking at the final result. Direct Post has an is_aigc field that, when true, shows the AI-generated tag, so a Direct Post integration can set it for the creator once they confirm.
Be careful with the claim about who sets labels in the inbox flow: the upload page I read does not describe label handling, so check the draft editor before you promise anything to your users.
What are the shared steps?
Both begin with a finished file. Generate with Sume, then read the result through jobs and results. Both need MP4 with H.264 for a FILE_UPLOAD and both track progress through the status endpoint, which returns a publish_id you should store. The status path in the upload guide is /v2/post/publish/status/fetch/; the video inbox init is /v2/post/publish/inbox/video/init/.
Photos are a separate init (/v2/post/publish/content/init/) and are URL-based only.
What does Sume not do?
Sume does not register your TikTok app, hold a creator token, or choose a flow for you. It will not tell you whether your audit passes. What it gives you is a file that already meets common limits when you size it deliberately; see our post on video size.
Decision rules
A quick way to choose:
- A person approves every clip: start with the inbox upload.
- Your app serves creators who want one-click publishing: Direct Post, with the UX duties and audit.
- Unsure about audit timing: plan for private-only Direct Post until it clears.
- Either way, store the
publish_idwith the Sume job id.
Sources
Related posts
More in Integrations
- TikTok photo post limits: 20 MB per image, 1080p max, JPEG or WebP
TikTok's media guide caps photo-post images at 1080p and 20 MB each, in WebP or JPEG. Set Sume image output and video stills to match before you upload.
- TikTok publish webhooks vs Sume run webhooks: wire both safely
TikTok sends webhooks for failed, complete, inbox, public and removed posts. Sume signs its own run webhook separately. Keep two receivers and verify Sume's.
- Val Town free 1-minute timeout: a Sume webhook receiver val
Val Town's free plan stops a val at 1 minute and runs crons every 15 minutes at best. Submit Sume jobs async, then take the result by webhook or a slow cron.
- Vercel Workflow createWebhook is token-only: verify Sume first
createWebhook trusts only the URL token. For a Sume callback, verify the sume-v1 signature in your own route, then resume a hook with resumeHook.
Written by Sume