TikTok
TikTok publishing is asynchronous: the Direct Post API accepts a upload and
returns a publish_id, then notifies us via webhook when the video actually
goes live (or fails). post.buzz handles the pending state and reconciles the
post automatically.
Capabilities
| Publish | ✅ Video, Photo mode |
| Insights | ✅ |
| Fetch comments | ➖ |
| Reply to comments | ✅ |
| Like comments | ✅ |
| Send DM | ➖ |
| Delete post | ➖ |
| Comment automation | ✅ (reply) |
Post types & media limits
Videos
| Constraint | Value |
|---|---|
| Files | 1 video (required) |
| Max size | 1 GB |
| Resolution | 360×360 to 4096×4096 |
| Aspect ratio | 0.01:1 to 10:6 |
| Duration | max 10 min (600 s) |
Images (Photo Mode)
| Constraint | Value |
|---|---|
| Files | 1–10 images |
| Format | JPG/JPEG/WebP only |
| Max size | 20 MB each |
| Max width | 1920 px |
warning
PNG is not valid for TikTok Photo Mode and will be rejected. Convert PNG assets before targeting a TikTok photo post.
Text limits
text: 2,200 characters.
How data arrives
TikTok sends Content Posting API completion/failure events to
/api/tiktok/webhook. The handler verifies the TikTok-Signature
(HMAC-SHA256 over <timestamp>.<rawBody> keyed with the client secret), flips
the matching pending_completion schedule to its terminal state, and
reconciles the parent post. The endpoint is idempotent; TikTok retries for 72 h
on non-200. See Webhooks.
Connect notes
- Configure the callback URL
<APP_ORIGIN>/api/tiktok/webhookin the Developer Portal under your app's Webhooks product. - See Connect a channel.