Publishing
Publishing posts to TikTok via the Vibescaling API
Publish a Post
Publish a draft post directly to TikTok:
POST /api/v1/posts/:id/publishRequest body
{
"tiktok_account_id": "uuid-of-connected-account",
"mode": "direct",
"privacy_level": "PUBLIC_TO_EVERYONE",
"disable_comment": false,
"disable_duet": false,
"disable_stitch": false,
"brand_content_toggle": false,
"brand_organic_toggle": false
}| Field | Type | Required | Description |
|---|---|---|---|
tiktok_account_id | uuid | Yes | TikTok account to publish to |
mode | string | No | "direct" (default) or "inbox" |
privacy_level | string | Yes | PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, or SELF_ONLY |
disable_comment | boolean | No | Disable comments (default false) |
disable_duet | boolean | No | Disable duet (default false) |
disable_stitch | boolean | No | Disable stitch (default false) |
brand_content_toggle | boolean | No | Branded content disclosure (default false) |
brand_organic_toggle | boolean | No | Own brand promotion disclosure (default false) |
Response
{
"data": {
"publish_id": "tiktok_publish_id"
}
}The post status will be updated to posted and posted_at will be set.
Scheduling
Schedule a post for automatic publishing:
PATCH /api/v1/posts/:idRequest body
{
"status": "scheduled",
"scheduled_at": "2026-03-15T14:00:00Z",
"tiktok_account_id": "uuid-of-connected-account",
"privacy_level": "PUBLIC_TO_EVERYONE",
"disable_comment": false,
"disable_duet": false,
"disable_stitch": false,
"brand_content_toggle": false,
"brand_organic_toggle": false
}Scheduled posts are published automatically by a background job that runs every 5 minutes. The scheduled time must be at least 5 minutes in the future.
Privacy Levels
privacy_level is required (no default). TikTok supports:
PUBLIC_TO_EVERYONE— visible to all usersMUTUAL_FOLLOW_FRIENDS— visible to mutual followersFOLLOWER_OF_CREATOR— visible to the creator's followersSELF_ONLY— only visible to the poster
Check Publish Status
After publishing, you can poll for TikTok's processing status:
GET /api/v1/posts/:id/publish-statusResponse
{
"data": {
"publish_id": "tiktok_publish_id",
"status": "processing",
"tiktok_status": "PROCESSING_UPLOAD"
}
}This is especially useful for video posts, which TikTok processes asynchronously. Returns 404 if the post has no publish record.
Dispatch Logs
Every publish attempt is logged. View dispatch history in the Analytics page or query the database directly.