<!-- Generated from the canonical OpenPost public page. Do not edit this build artifact. -->

Title: TikTok
Description: Configure TikTok Login Kit and Content Posting API for video and photo posts.
Canonical: https://openpo.st/docs/self-hosting/integrations/tiktok
Source: [https://openpo.st/docs/self-hosting/integrations/tiktok](https://openpo.st/docs/self-hosting/integrations/tiktok)

# TikTok

OpenPost connects a TikTok account through Login Kit. Direct Post publishes through TikTok's Content Posting API; Upload sends a video to the creator's TikTok inbox for completion there.

## Before you start

- Set `OPENPOST_APP_URL` to the public HTTPS origin of your instance.
- Make `OPENPOST_MEDIA_URL` a public HTTPS media address that TikTok can fetch. For URL-based publishing, verify its domain or URL prefix in TikTok's developer portal.
- Have a [TikTok for Developers](https://developers.tiktok.com/) account and a TikTok account for testing. TikTok app review and Content Posting API access are separate from OAuth setup.

## Configure the TikTok app

1. In [TikTok for Developers](https://developers.tiktok.com/apps/), create an app. Add **Login Kit** and **Content Posting API**. TikTok calls the app's client ID a **Client Key**.
2. In Login Kit, register this **Redirect URI**:

   ```text
   https://post.example.com/api/v1/accounts/tiktok/callback
   ```

3. In the Content Posting API settings, enable the posting modes you need. Request access to `video.publish` for Direct Post and `video.upload` for inbox upload. OpenPost also requests `user.info.basic`, `user.info.profile`, `user.info.stats`, and `video.list`. Complete the portal's URL ownership verification for media fetched by URL.
4. Submit the app and its scopes for review where TikTok requires it. Copy the **Client Key** and **Client Secret** from the app settings.

TikTok documents [app registration](https://developers.tiktok.com/docs/en/getting-started-create-an-app), [Direct Post setup](https://developers.tiktok.com/docs/en/content-posting-api-get-started), and [media URL verification](https://developers.tiktok.com/docs/en/content-posting-api-media-transfer-guide).

![TikTok Connect an app dialog with OpenPost as the example app name](https://openpo.st/docs/assets/screenshots/integrations/tiktok-create-app.png)

Give the TikTok developer app a name you will recognize.

## Save the app in OpenPost

Use this provider entry when [saving your app credentials](https://openpo.st/docs/self-hosting/integrations#save-your-provider-credentials). Replace the example domain with your OpenPost address.

```json
[
  {
    "provider": "tiktok",
    "client_id": "your-tiktok-client-key",
    "client_secret": "your-tiktok-client-secret",
    "redirect_uri": "https://post.example.com/api/v1/accounts/tiktok/callback"
  }
]
```

## Connect and test

1. In **Settings → Workspace → Social accounts**, select **TikTok** and grant the requested permissions.
2. Create a publication with one video. Choose **Direct Post** for publishing or **Upload** to finish the video in TikTok. Confirm the result in OpenPost and in the TikTok account.
3. Test photo posts separately if your app has photo-post access. Photo posts use public HTTPS media URLs. An unaudited TikTok client may restrict Direct Post visibility to private even after a successful connection.

## If it does not work

- **OAuth fails:** Compare the Login Kit redirect URI with the JSON and `OPENPOST_APP_URL` exactly. Check app status and requested scopes.
- **TikTok cannot fetch media:** Open a specific uploaded file URL under `OPENPOST_MEDIA_URL` from outside your network, confirm HTTPS, and check that the URL falls under the verified domain or prefix.
- **Posting is denied or private:** Check Content Posting API product access, the approved `video.publish` or `video.upload` scope, account consent, and TikTok audit status. Reconnect after adding scopes.
