# TikTok Video & Multi-Photo Posts

Publish or schedule TikTok videos and multi-photo (carousel) posts using the Publer API. This feature supports all TikTok-specific options, including privacy, comments, branded content, and more.

### Overview

Publer enables you to directly post or schedule TikTok videos and multi-photo posts (carousels) from your app or workflow.

{% hint style="info" %}
**You can only post to one TikTok account at a time—TikTok does not allow duplicate content or posting to multiple accounts simultaneously.**
{% endhint %}

* **Video posts:** Upload and schedule single video posts. Supports cover selection, privacy, comment/duet/stitch toggles, and branded content disclosures.
* **Multi-photo posts (carousels):** Upload and schedule up to 35 photos, each with an optional caption, as a single post. Supports music auto-add, privacy, and engagement options.

### Notice: TikTok Video Publishing & Link Availability

When posting a **video** to TikTok, the API does **not** immediately return a URL to the published post.\
TikTok first processes the video after upload and only makes the public link available once processing is complete.

* **After posting a video:**\
  The returned response will not contain the TikTok post URL.
* **To obtain the published TikTok video link:**\
  Retrieve your post later via the [Posts](/docs/api-reference/posts.md).\
  Once TikTok finishes processing, the link will be included in the post data.

### How It Works

To schedule or publish a TikTok post, use the [Immediate Publishing](/docs/posting/create-posts/publishing-methods/immediate-publishing.md) or [Manual Scheduling](/docs/posting/create-posts/publishing-methods/manual-scheduling.md) API endpoint with a `networks.tiktok` object describing your post.

#### Key Rules

* **No recurring or recycled videos:** TikTok does not allow duplicate content.
* **Watermarks:** Not supported due to TikTok API limits.
* **Privacy and engagement:** Options are synced from TikTok and may vary by account type, check your account details from [Accounts](/docs/api-reference/accounts.md).
* **Thumbnails (Videos):** You can select a cover frame when posting automatically.

### Video Post Example

```json
{
  "bulk": {
    "state": "scheduled",
    "posts": [
      {
        "accounts": [
          {
            "id": "tiktok_account_123",
            "scheduled_at": "2025-08-26T12:00:00Z"
          }
        ],
        "networks": {
          "tiktok": {
            "type": "video",
            "text": "Check out our new product launch! #launch #tiktok",
            "media": [
              {
                "id": "media_video_001",
                "path": "https://storage.com/launch-video.mp4",
                "default_thumbnail": 2,
                "thumbnails": [
                  {
                    "real": "https://storage.com/thumb1.jpg",
                    "small": "https://storage.com/thumb1_small.jpg"
                  },
                  {
                    "real": "https://storage.com/thumb2.jpg",
                    "small": "https://storage.com/thumb2_small.jpg"
                  },
                  {
                    "real": "https://storage.com/thumb3.jpg",
                    "small": "https://storage.com/thumb3_small.jpg"
                  }
                ]
              }
            ],
            "details": {
              "privacy": "PUBLIC_TO_EVERYONE",
              "comment": true,
              "duet": true,
              "stitch": true,
              "promotional": false,
              "paid": false,
              "reminder": false
            }
          }
        }
      }
    ]
  }
}
```

### Multi-Photo Post (Carousel) Example

```json
{
  "bulk": {
    "state": "scheduled",
    "posts": [
      {
        "accounts": [
          {
            "id": "tiktok_account_123",
            "scheduled_at": "2025-08-26T14:00:00Z"
          }
        ],
        "networks": {
          "tiktok": {
            "type": "photo",
            "title": "Summer Vibes ☀️",
            "text": "Nothing beats a perfect summer day! What's your favorite summer activity? 🏖️ #summer #lifestyle #photography",
            "media": [
              { "id": "img1", "path": "https://storage.com/summer1.jpg", "caption": "Beach day" },
              { "id": "img2", "path": "https://storage.com/summer2.jpg", "caption": "Sunset views" },
              { "id": "img3", "path": "https://storage.com/summer3.jpg", "caption": "Ice cream time" }
            ],
            "details": {
              "privacy": "PUBLIC_TO_EVERYONE",
              "auto_add_music": true,
              "comment": true,
              "promotional": false,
              "paid": false,
              "reminder": false
            }
          }
        }
      }
    ]
  }
}
```

### TikTok-Specific Parameters

#### Video Post Parameters

<table><thead><tr><th width="241.89862060546875">Field</th><th width="84.29022216796875">Type</th><th width="106.814208984375">Required</th><th>Description</th></tr></thead><tbody><tr><td><code>type</code></td><td>string</td><td>Yes</td><td>Must be <code>"video"</code>.</td></tr><tr><td><code>text</code></td><td>string</td><td>Yes</td><td>Video description text (max 2,200 chars).</td></tr><tr><td><code>media[]</code></td><td>array</td><td>Yes</td><td><strong>Single</strong> video object (see below).</td></tr><tr><td><code>media[].id</code></td><td>string</td><td>Yes</td><td>Media ID if using stored media.</td></tr><tr><td><code>media[].path</code></td><td>string</td><td>No</td><td>URL to the video file.</td></tr><tr><td><code>media[].default_thumbnail</code></td><td>integer</td><td>No</td><td>(Optional) Index of the selected thumbnail (0-based).</td></tr><tr><td><code>media[].thumbnails[]</code></td><td>array</td><td>Yes</td><td>Array of thumbnails with <code>real</code> and <code>small</code> URLs.</td></tr><tr><td><code>media[].thumbnails[].real</code></td><td>string</td><td>No</td><td>Full-size thumbnail image URL.</td></tr><tr><td><code>media[].thumbnails[].small</code></td><td>string</td><td>No</td><td>Small-size thumbnail image URL.</td></tr><tr><td><code>details</code></td><td>object</td><td>Yes</td><td>TikTok-specific options (see below).</td></tr><tr><td><code>details.privacy</code></td><td>string</td><td>No</td><td>Who can view: <code>"PUBLIC_TO_EVERYONE"</code>, <code>"MUTUAL_FOLLOW_FRIENDS"</code>,<br><code>"FOLLOWER_OF_CREATOR"</code>, <code>"SELF_ONLY"</code></td></tr><tr><td><code>details.comment</code></td><td>boolean</td><td>No</td><td>Allow comments (default: false).</td></tr><tr><td><code>details.duet</code></td><td>boolean</td><td>No</td><td>Allow duets (default: true).</td></tr><tr><td><code>details.stitch</code></td><td>boolean</td><td>No</td><td>Allow stitching (default: true).</td></tr><tr><td><code>details.promotional</code></td><td>boolean</td><td>No</td><td>Mark as promotional/brand organic content (cannot be private, default: false).</td></tr><tr><td><code>details.paid</code></td><td>boolean</td><td>No</td><td>Mark as paid partnership (cannot be private, default: false).</td></tr></tbody></table>

#### Carousel (Multi-Photo) Post Parameters

<table><thead><tr><th width="214.22021484375">Field</th><th width="114.392333984375">Type</th><th width="107.015869140625">Required</th><th>Description</th></tr></thead><tbody><tr><td><code>type</code></td><td>string</td><td>Yes</td><td>Must be <code>"photo"</code>.</td></tr><tr><td><code>title</code></td><td>string</td><td>Yes</td><td>Carousel post title (max 90 chars).</td></tr><tr><td><code>text</code></td><td>string</td><td>Yes</td><td>Description text (max 4,000 chars).</td></tr><tr><td><code>media[]</code></td><td>array</td><td>Yes</td><td>Up to <strong>35</strong> photo objects (see below).</td></tr><tr><td><code>media[].id</code></td><td>string</td><td>Yes</td><td>Media ID if using stored media.</td></tr><tr><td><code>media[].path</code></td><td>string</td><td>No</td><td>(Optional) URL to the photo file.</td></tr><tr><td><code>media[].caption</code></td><td>string</td><td>No</td><td>(Optional) Caption for each photo.</td></tr><tr><td><code>details</code></td><td>object</td><td>Yes</td><td>TikTok-specific options (see below).</td></tr><tr><td><code>details.privacy</code></td><td>string</td><td>No</td><td>Who can view: <code>"PUBLIC_TO_EVERYONE"</code>, <code>"MUTUAL_FOLLOW_FRIENDS"</code>,<br><code>"FOLLOWER_OF_CREATOR"</code>, <code>"SELF_ONLY"</code></td></tr><tr><td><code>details.comment</code></td><td>boolean</td><td>No</td><td>Allow comments (default: false).</td></tr><tr><td><code>details.auto_add_music</code></td><td>boolean</td><td>No</td><td>Auto-add music to slideshow (default: false).</td></tr><tr><td><code>details.promotional</code></td><td>boolean</td><td>No</td><td>Mark as promotional/brand organic content (cannot be private, default: false).</td></tr><tr><td><code>details.paid</code></td><td>boolean</td><td>No</td><td>Mark as paid partnership (cannot be private, default: false).</td></tr><tr><td><code>details.reminder</code></td><td>boolean</td><td>No</td><td>Upload-only mode (user must publish manually, default: false).</td></tr></tbody></table>

### Tips & Limitations

* **No GIF/video mixing:** Carousel posts cannot mix photos, GIFs, or videos.
* **Privacy:** "Everyone" is only available if the TikTok account is public.
* **Branded content:** Cannot be private. Once posted, branded content is permanently labeled.
* **No recurring or recycled posts:** TikTok blocks duplicate content.
* **Watermarks:** Not supported.
* **Links:** Not supported in TikTok posts.

### Related Topics

* [Twitter/X Long-Form Posts](/docs/posting/create-posts/content-types/platform-specific-formats/twitter-x-long-form-posts.md)
* [Content Types Overview](/docs/posting/create-posts/content-types.md)

<br>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://publer.com/docs/posting/create-posts/content-types/platform-specific-formats/tiktok-video-and-multi-photo-posts.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
