Bug Report
Description
TikTok slideshow posts via the API using content_posting_method: UPLOAD with privacy_level: SELF_ONLY stopped delivering to TikTok inbox as of March 25, 2026. Posts are accepted by Postiz (return a postId) but remain stuck in QUEUE state indefinitely. Manual posting from the Postiz web UI also fails.
Two bugs identified by Postiz support bot:
1. Missing privacy_level in UPLOAD mode (root cause)
- File:
libraries/nestjs-libraries/src/integrations/social/tiktok.provider.ts, lines 498-506
privacy_level is only included in the request body for DIRECT_POST mode (line 473), but is completely omitted for UPLOAD mode
- TikTok recently tightened API validation and now rejects/silently fails requests without
privacy_level
2. Infinite polling loop with no timeout
- File:
libraries/nestjs-libraries/src/integrations/social/tiktok.provider.ts, lines 385-444
- After sending the request to TikTok, Postiz polls indefinitely for confirmation
- If TikTok responds with an unexpected status (e.g. due to the malformed request), Postiz has no timeout — post stays in QUEUE forever
Steps to Reproduce
- Connect a TikTok account
- Create a post via API with
content_posting_method: UPLOAD and privacy_level: SELF_ONLY
- Post is accepted (returns postId) but never delivers to TikTok inbox
- Post remains in QUEUE state indefinitely
- Switching to
DIRECT_POST also fails (same QUEUE state)
- Manual posting from Postiz web UI also fails
Expected Behavior
privacy_level should be included in UPLOAD mode requests to TikTok
- Posts should either deliver to TikTok inbox or fail with a clear error
- Polling should have a timeout so posts don't get stuck in QUEUE forever
Environment
- Postiz Cloud (postiz.com)
- TikTok integration ID: cmmtgprj700exox0ydby1hp5a
- Content type: PNG slideshow images (not video)
- Worked perfectly for 7+ days, broke mid-day March 25, 2026
Code References (from Postiz support)
tiktok.provider.ts lines 498-506: UPLOAD mode missing privacy_level
tiktok.provider.ts lines 463-496: DIRECT_POST mode correctly includes privacy_level at line 473
tiktok.provider.ts lines 385-444: infinite polling loop
post.workflow.v1.0.1.ts lines 176-187: publishes success notification regardless of actual TikTok status
Bug Report
Description
TikTok slideshow posts via the API using
content_posting_method: UPLOADwithprivacy_level: SELF_ONLYstopped delivering to TikTok inbox as of March 25, 2026. Posts are accepted by Postiz (return a postId) but remain stuck in QUEUE state indefinitely. Manual posting from the Postiz web UI also fails.Two bugs identified by Postiz support bot:
1. Missing privacy_level in UPLOAD mode (root cause)
libraries/nestjs-libraries/src/integrations/social/tiktok.provider.ts, lines 498-506privacy_levelis only included in the request body forDIRECT_POSTmode (line 473), but is completely omitted forUPLOADmodeprivacy_level2. Infinite polling loop with no timeout
libraries/nestjs-libraries/src/integrations/social/tiktok.provider.ts, lines 385-444Steps to Reproduce
content_posting_method: UPLOADandprivacy_level: SELF_ONLYDIRECT_POSTalso fails (same QUEUE state)Expected Behavior
privacy_levelshould be included in UPLOAD mode requests to TikTokEnvironment
Code References (from Postiz support)
tiktok.provider.tslines 498-506: UPLOAD mode missing privacy_leveltiktok.provider.tslines 463-496: DIRECT_POST mode correctly includes privacy_level at line 473tiktok.provider.tslines 385-444: infinite polling looppost.workflow.v1.0.1.tslines 176-187: publishes success notification regardless of actual TikTok status