gitroomhq/postiz-app · error · BadBody
TikTok refused to publish your post
Error message
TikTok refused to publish your post
What it means
The synchronous post() wrapper polls postPending status every 20s; if the loop breaks out without reaching a terminal success state it throws 'TikTok refused to publish your post'. This is a polling-exhaustion failure on top of a pending direct post.
Source
Thrown at libraries/nestjs-libraries/src/integrations/social/tiktok.business.provider.ts:781
id: response.id,
releaseURL: check.releaseURL,
postId: String(check.postId),
status: 'success',
},
];
}
// Cap below the 10-minute activity timeout of the old workflows using
// this method: failing here (non-retryable) is safe, timing the activity
// out is not - a retried activity would publish the post again.
if (Date.now() - started > 8 * 60 * 1000) {
break;
}
await timer(20000);
}
throw new BadBody(
'tiktok-business-error-upload',
JSON.stringify({}),
Buffer.from(JSON.stringify({})),
'TikTok refused to publish your post'
);
}
// The trending list has no text search parameter - genre / country / date
// range are the only filters - so the UI filters the returned list locally.
@Tool({
description:
'Load commercial music library tracks that can be attached to a post via the "music" setting',
dataSchema: [
{
key: 'genre',
type: 'string',
description:
'Genre to filter the tracks by (for example POP, ROCK, ELECTRONIC), leave empty for all genres',View on GitHub (pinned to 0f1647f749)
Solutions
- Query the direct-post status endpoint manually with the share_id to see the real state
- Retry the post if the status truly never completed
- Reduce media size to speed TikTok processing
Defensive patterns
Strategy: retry
Try / catch
try { await provider.post(...); } catch (e) { if (/refused to publish/.test(e.message)) { const st = await queryDirectPostStatus(shareId); if (st !== 'PUBLISHED') scheduleRetry(post); } throw e; } Prevention
- Always confirm the direct-post status via share_id before retrying
- Compress media to reduce processing time
- Add alerting on polling-exhaustion failures
When it happens
Trigger: The status poll exits its loop (attempt cap or condition break) while the direct post is still pending or stuck, without an explicit FAILED status being observed.
Common situations: TikTok processing stalls, transient status endpoint errors shortening the loop, or slow moderation queues exceeding the poll budget.
Related errors
- Threads took too long to process the media, please try again
- Video generation timed out
- 'checkPostStatus is not implemented for this provider'
- LinkedIn took too long to process the media, please try agai
- The media took too long to process, please try again
AI-assisted analysis of gitroomhq/postiz-app@0f1647f749 (2026-08-27).
Data as JSON: /api/errors/c6408e7b55f51f91.
Report an issue: GitHub.