Skip to content

TikTok UPLOAD mode: privacy_level silently dropped, posts stuck in QUEUE forever #1338

Description

@diogoalves25

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

  1. Connect a TikTok account
  2. Create a post via API with content_posting_method: UPLOAD and privacy_level: SELF_ONLY
  3. Post is accepted (returns postId) but never delivers to TikTok inbox
  4. Post remains in QUEUE state indefinitely
  5. Switching to DIRECT_POST also fails (same QUEUE state)
  6. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions