Skip to main content
On a self-hosted PostQueen the TikTok app is yours. Add Channel has two TikTok tiles, and each needs its own app: TikTok uses Login Kit and the Content Posting API on TikTok for Developers, and TikTok Business uses TikTok’s Business API. Set up TikTok first. TikTok Business is optional and covered at the end of this page.

Before you start

PostQueen checks all six scopes when an account connects. A missing one stops the connect.

Create the app

1

Connect an app

Sign in to TikTok for Developers, open your profile menu and choose Manage apps, then Connect an app. In Select the app owner, pick your organization or your own account and choose Confirm.
2

Fill in the app details

In App details, enter the App icon (1024 x 1024 px), App name, Category and Description, plus your Terms of Service URL and Privacy Policy URL. Under Platforms, select Web and enter your website. TikTok shows the name and description on its authorization screen, and reviews all of them.
3

Add Login Kit

In Products, choose Add products and add Login Kit. In its settings, add the Redirect URI for the Web platform.The redirect URI is where the network sends the browser back after someone approves PostQueen. It is your FRONTEND_URL + /integrations/social/ + the network’s identifier, for example https://postqueen.example.com/integrations/social/pinterest.Most networks need exactly one URI, with no trailing slash. Two exceptions: TikTok Business needs the trailing slash (/integrations/social/tiktok-business/), and a Google web client that also serves Google Business Profile lists both /integrations/social/youtube and /integrations/social/gmb. Channel developer apps lists every network’s ending.For the TikTok tile the URI has no trailing slash. TikTok Business is the exception and needs one: see TikTok Business.
TikTok accepts only https redirect URIs with no query string. That is why PostQueen wraps a plain http address through redirectmeto.com: register the wrapped address, character for character.
4

Add the Content Posting API

Choose Add products again and add the Content Posting API. Turn on Direct Post: PostQueen publishes directly by default, and uses the inbox upload only when a post asks for it.
5

Add the six scopes

In Scopes, add user.info.basic, user.info.profile, user.info.stats, video.list, video.upload and video.publish. Add no others: each scope you request has to be shown in your review video.
6

Verify the domain your media comes from

TikTok fetches photos from their URL, and only from domains you verified. Choose URL properties at the top of the app page, make sure Production is selected, choose Verify properties and verify by Domain or URL prefix. Verify the host your uploads are served from: your FRONTEND_URL host with local storage, or your public bucket’s domain with Cloudflare R2.Videos on the TikTok tile are uploaded by PostQueen itself, so they do not depend on this step.
7

Copy the client key and secret

The Client key and Client secret are under Credentials in App details.

Set the variables

Add the two keys to your environment:
Recreate the app container so it reads the new variables. A plain docker restart or docker compose restart keeps the old container and its old environment. In the folder that holds docker-compose.yaml, recreate only the postqueen service:
The database, Redis and Temporal keep running. Avoid docker compose down for a settings change: on a host that runs other Compose services in the same project, it stops them too. Then open PostQueen, go to Channels, choose Add Channel and pick this network. You are sent to its login to authorize PostQueen, and the channel appears in the Channels list once you accept.
The channel is in the Channels list with its avatar and name.
Add Channel does not check whether your variables are set. A missing or misspelled key shows up as a broken authorization page on the network’s side rather than a helpful message in PostQueen, so if the login page itself looks wrong, check the keys before anything else.
Pick TikTok, not TikTok Business, and approve every permission.

App review

TikTok has two separate gates, and passing the first does not open the second.
1

Test in a sandbox

Before review, only a sandbox can connect. Switch the toggle next to the app’s name to Sandbox, choose Create Sandbox, and add the TikTok accounts you will connect as target users. An app can have up to 5 sandboxes with up to 10 target users each. Use the client key and secret shown while Sandbox is selected, and switch to the Production pair once the app is live.
2

Submit the app for review

Switch to Production, complete the App review section and upload 1 to 5 demo videos (up to 50 MB each) showing the connect, the consent screen with the six scopes, and a post going out. Choose Submit for review. The status under Production moves from Draft to In review, then to Live or Not approved. Once the app is live, any TikTok account can connect.
3

Pass the Content Posting API audit

Until your app passes TikTok’s Content Posting API audit, TikTok publishes every post as private, and at most 5 people can post through your app in any 24 hours. Being live does not lift this. Submit the audit once your integration works.
Until the audit passes, choose Self only as the audience in each post. Any other audience is refused at publish time with: “This TikTok app has not passed TikTok’s review yet, so it can only publish with the “Self only” privacy level. Choose Self only, or submit the app for review in the TikTok developer portal.”

TikTok Business (optional)

The TikTok Business tile talks to TikTok’s Business API instead of the Content Posting API. It needs a separate app, registered on the TikTok API for Business developer portal, with its own keys:
In the composer, the audience picker is loaded through a call only the TikTok tile implements, so a direct post on a TikTok Business channel cannot get its audience from the editor. Posts sent through the API or an AI agent set privacy_level themselves.
To move existing channels from one tile to the other, MIGRATE_PROVIDERS="tiktok:tiktok-business" sends a reconnect of the old tile through the new tile’s login and keeps the channel and its posts, and HIDDEN_PROVIDERS="tiktok" takes the old tile out of Add Channel. Both are in the configuration reference.

Troubleshooting

The redirect URI PostQueen sent is not the one registered in Login Kit. Check the trailing slash (none on TikTok, one on TikTok Business) and, when FRONTEND_URL is http, register the redirectmeto.com form from step 3.
One of the six scopes is missing from the app or was declined on the consent screen. Check the list in step 5, then connect again and approve everything.
More than 5 people posted through your unaudited app in 24 hours, and TikTok disconnected the channel. Reconnect it later, or pass the Content Posting API audit.
TikTok could not fetch the photo because its domain is not a verified URL property of the app. Verify the domain your uploads are served from, as in step 6.
The app is not live yet. Add the account as a target user of the sandbox, or submit the app for review.
Last modified on September 23, 2026