> ## Documentation Index
> Fetch the complete documentation index at: https://www.ayrshare.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# TikTok API

> Các tùy chọn để đăng bài bằng TikTok API

<Info>
  Ayrshare cung cấp [xuất bản trực tiếp video TikTok](https://www.ayrshare.com/blog/introducing-tiktok-direct-publishing-analytics-and-commenting/), quản lý bình luận, và truy xuất phân tích nâng cao cho tài khoản TikTok cá nhân hoặc doanh nghiệp của bạn bằng TikTok API.

  TikTok xử lý video và ảnh không đồng bộ, vì vậy phản hồi JSON sẽ có status: "pending" cho cả bài đăng ngay lập tức và đã lên lịch. Khi TikTok đã hoàn thành xử lý, [webhook Scheduled Action](/apis/webhooks/actions#scheduled-action) đã đăng ký của bạn sẽ được gọi.
</Info>

## Bài đăng video TikTok

JSON cho một bài đăng video TikTok cơ bản được xuất bản trực tiếp:

```json TikTok Video Post theme={"system"}
{
  "post": "The best TikTok \n video ever #bestvideo", // Max 2,200 characters with a line break
  "mediaUrls": ["https://img.ayrshare.com/012/tiktok.mp4"],
  "platforms": ["tiktok"]
}
```

Ví dụ phản hồi JSON của bài đăng:

```json TikTok Video Post Response theme={"system"}
{
  "status": "success",
  "errors": [],
  "postIds": [
    {
      "status": "success",
      "idShare": "video.7088122496758679353.nzLqBWbf",
      "id": "pending",
      "isVideo": true,
      "platform": "tiktok"
    }
  ],
  "id": "lb42orDhySAZmLWtj6b6",
  "refId": "23a9da9e0df1184a7a6a1fc2c60b8023aa9a32a1",
  "post": "The best TikTok video ever #bestvideo"
}
```

<ul class="custom-bullets">
  <li>
    TikTok hiện không hỗ trợ ngắt dòng trong nội dung bài đăng. Các ngắt dòng được bao gồm sẽ bị
    bỏ qua.
  </li>

  <li>
    Có thể xuất bản một video hoặc lên đến 35 hình ảnh. TikTok không hỗ trợ kết hợp
    video và hình ảnh. Vui lòng xem bên dưới để biết thêm chi tiết.
  </li>

  <li>
    Nếu video không kết thúc bằng phần mở rộng đã biết, hãy sử dụng
    [isVideo](/apis/post/overview#video-extension).
  </li>

  <li>
    TikTok cũng hỗ trợ gửi phương tiện mà không có nội dung bài đăng. Nếu bạn không muốn bao gồm nội dung bài đăng, hãy gửi
    một chuỗi rỗng `post: ""`.
  </li>

  <li>
    Xem [TikTok Media Guidelines](/media-guidelines/tiktok) và [TikTok
    Authorization](/dashboard/connect-social-accounts/tiktok) để biết thêm thông tin.
  </li>
</ul>

### Yêu cầu video TikTok

<ul class="custom-bullets">
  <li>Vui lòng xem [Yêu cầu video TikTok](/media-guidelines/tiktok#video).</li>

  <li>
    Video phải kết thúc bằng phần mở rộng video đã biết như mp4. Vui lòng hoặc là reverse proxy URL,
    thêm một [URL vanity với
    CDN](https://www.ayrshare.com/blog/how-to-put-a-cdn-in-front-of-firebase-cloud-storage/), hoặc sử dụng
    endpoint [/media](/apis/media/overview).
  </li>

  <li>Giới hạn ký tự nội dung bài đăng của TikTok là 2.200.</li>
</ul>

<Note>
  TikTok giới hạn xuất bản video qua API 6 video mỗi phút với giới hạn trên là 15 video mỗi
  ngày.
</Note>

## Bài đăng hình ảnh TikTok

JSON cho một bài đăng hình ảnh (ảnh) TikTok cơ bản được xuất bản trực tiếp:

```json TikTok Image Post theme={"system"}
{
  "post": "The best TikTok \n video ever #bestvideo", // Max 2,200 characters with a line break
  "mediaUrls": [
    "https://img.ayrshare.com/012/gb.jpg",
    "https://img.ayrshare.com/random/photo-1.jpg"
  ], // Up to 35 images
  "platforms": ["tiktok"]
}
```

Ví dụ phản hồi JSON:

```json TikTok Image Post Response theme={"system"}
{
  "status": "success",
  "errors": [],
  "postIds": [
    {
      "status": "success",
      "idShare": "p_pub_url~v2.7408974036430047275",
      "id": "pending",
      "isVideo": false,
      "platform": "tiktok"
    }
  ],
  "id": "8815mJ5bWApEebWjE233",
  "tikTokId": "p_pub_url~v2.7408974036430047333",
  "refId": "9abf1426d6ce9122ef11c72bd62e59807c5cc333",
  "post": "Opportunity is missed by most people because it is dressed in overalls and looks like work - Thomas Edison"
}
```

<ul class="custom-bullets">
  <li>
    TikTok hiện không hỗ trợ ngắt dòng trong nội dung bài đăng. Các ngắt dòng được bao gồm sẽ bị
    bỏ qua.
  </li>

  <li>Có thể xuất bản một video hoặc lên đến 35 hình ảnh.</li>

  <li>
    TikTok không hỗ trợ kết hợp video và hình ảnh. Vui lòng xem bên dưới để biết thêm chi tiết.
  </li>

  <li>Hình ảnh phải thuộc loại JPG, JPEG, hoặc WEBP. TikTok không chấp nhận các file phương tiện PNG.</li>

  <li>
    Bạn cũng có thể chọn một trong các hình ảnh làm ảnh bìa với `imageCoverIndex`. Theo mặc định,
    hình ảnh đầu tiên được sử dụng. Vui lòng xem bên dưới để biết chi tiết.
  </li>
</ul>

### Yêu cầu hình ảnh TikTok

<ul class="custom-bullets">
  <li>Vui lòng xem [Yêu cầu hình ảnh TikTok](/media-guidelines/tiktok#images).</li>
  <li>Có thể bao gồm tối đa 35 hình ảnh trong một bài đăng, với 20 MB cho mỗi hình ảnh.</li>
  <li>Hình ảnh phải thuộc loại JPG, JPEG, hoặc WEBP. TikTok không chấp nhận các file phương tiện PNG.</li>
  <li>Giới hạn ký tự nội dung bài đăng của TikTok là 2.200.</li>
</ul>

<Note>
  TikTok giới hạn xuất bản video qua API 6 ảnh mỗi phút với giới hạn trên là 15 ảnh mỗi
  ngày.
</Note>

## Xử lý TikTok

TikTok thực hiện xử lý video và hình ảnh không đồng bộ, vì vậy phản hồi sẽ có trường `id` được đặt thành `"pending"`.
Sau khi TikTok hoàn thành xử lý của họ, thường trong vòng 1 - 2 phút, trường `id` sẽ được cập nhật với `id` video TikTok và một `postUrl` sẽ được thêm vào.

<ul class="custom-bullets">
  <li>
    Bạn có thể truy xuất trạng thái cuối cùng của bài đăng TikTok bằng
    [webhooks](/apis/webhooks/actions#tiktok-publishing-webhook) hoặc endpoint
    [/history](/apis/history/overview) và thường mất tối đa 1-2 phút để có sẵn.
  </li>

  <li>
    Khi người dùng xuất bản video trong ứng dụng TikTok di động, một webhook "scheduled" sẽ được gửi
    với `subAction: "tikTokPublished"`.
  </li>

  <li>
    Một [bình luận đầu tiên](/apis/post/overview#first-comment) trên bài đăng TikTok bị hoãn: nó được đăng
    tự động khi webhook `tikTokPublished` giải quyết `id` video thực, không phải tại thời điểm xuất bản.
    `visibility` của video phải là `public`, nếu không bình luận đầu tiên không thể được đăng và một
    lỗi bình luận được trả về.
  </li>

  <li>
    Nếu xảy ra lỗi, chẳng hạn như TikTok không thể xử lý video hoặc các kiểm tra nội bộ của Ayrshare
    thất bại, trường `id` sẽ được đặt thành "failed" và trường `errors` sẽ chứa chi tiết lỗi.
  </li>

  <li>`idShare` được sử dụng để tham chiếu nội bộ cho video pending.</li>
</ul>

## Tùy chọn TikTok

Khi xuất bản video hoặc hình ảnh TikTok [các tùy chọn bổ sung](/apis/post/social-networks/tiktok#available-tiktok-options) có sẵn.

Ví dụ xuất bản video:

```json TikTok Video Publishing theme={"system"}
{
  "tikTokOptions": {
    "disableComments": true, // Default false. Disable comments on the published video.
    "disableDuet": true, // Default false. Disable duets on the published video.
    "disableStitch": true // Default false. Disable stitches on the published video.
  }
}
```

Ví dụ xuất bản hình ảnh:

```json TikTok Image Publishing theme={"system"}
{
  "tikTokOptions": {
    "imageCoverIndex": 1, // Use the second image in the mediaUrls.
    "title": "Amazing images"
  }
}
```

### Các tùy chọn

Các tùy chọn sau khả dụng cho bài đăng TikTok.
Chúng nên được thêm vào đối tượng `tikTokOptions`.
Vui lòng xem bên dưới để biết thêm chi tiết về mỗi tùy chọn.

```json TikTok Options theme={"system"}
{
  "post": "The best TikTok video ever #bestvideo",
  "mediaUrls": ["https://img.ayrshare.com/012/tiktok.mp4"],
  "platforms": ["tiktok"],
  "tikTokOptions": {
    "autoAddMusic": true,
    "disableComments": true,
    "disableDuet": true,
    "disableStitch": true,
    "draft": true,
    "isAIGenerated": true,
    "isBrandedContent": true,
    "isBrandOrganic": true,
    "imageCoverIndex": 1,
    "title": "Amazing images",
    "thumbNailOffset": 30000,
    "visibility": "public"
  }
}
```

<ParamField body="autoAddMusic" type="boolean" default={false}>
  Có tự động thêm nhạc được đề xuất vào bài đăng hay không.
  Nếu bạn đặt trường này thành `true`, bạn có thể thay đổi nhạc sau trong ứng dụng TikTok.

  Loại phương tiện: image
</ParamField>

<ParamField body="disableComments" type="boolean" default={false}>
  Có tắt bình luận trên bài đăng đã xuất bản hay không.

  Loại phương tiện: video, image
</ParamField>

<ParamField body="disableDuet" type="boolean" default={false}>
  Tắt duets trên video đã xuất bản.

  Loại phương tiện: video
</ParamField>

<ParamField body="disableStitch" type="boolean" default={false}>
  Tắt stitch trên video đã xuất bản.

  Loại phương tiện: video
</ParamField>

<ParamField body="draft" type="boolean" default={false}>
  Có tạo bài đăng nháp hay không.

  Xem [tùy chọn nháp](/apis/post/social-networks/tiktok#tiktok-video-draft-post) để biết thêm thông tin.

  Loại phương tiện: video hoặc image
</ParamField>

<ParamField body="isAIGenerated" type="boolean" default={false}>
  Có bật nút bật/tắt nội dung do AI tạo ra cho bài đăng video hay không.

  Nếu bạn bật, video của bạn sẽ được gắn nhãn là "Creator labeled as AI-generated" khi được đăng và không thể thay đổi.
  Nhãn "Creator labeled as AI-generated" chỉ ra rằng nội dung được tạo ra hoàn toàn bởi AI hoặc được chỉnh sửa đáng kể bằng AI.

  <Note>
    Việc bật cài đặt nội dung do AI tạo ra sẽ không ảnh hưởng đến sự phân phối video của bạn miễn là
    nó không vi phạm [Cộng đồng Nguyên tắc](https://www.tiktok.com/community-guidelines/en/) của TikTok.
  </Note>

  Loại phương tiện: video
</ParamField>

<ParamField body="isBrandedContent" type="boolean" default={false}>
  Có bật nút bật/tắt <a href="https://creatormarketplace.tiktok.com/help#/doc/9493/10008169">Branded Content</a> hay không. Nếu trường này được đặt thành `true`, video sẽ được gắn nhãn là Branded Content, cho biết bạn đang trong quan hệ đối tác trả phí với một thương hiệu. Một nhãn "Paid partnership" sẽ được gắn với video.

  Loại phương tiện: video, image
</ParamField>

<ParamField body="isBrandOrganic" type="boolean" default={false}>
  Có bật nút bật/tắt Brand Organic Content hay không. Nếu trường này được đặt thành `true`, video sẽ được gắn nhãn là Brand Organic Content, cho biết bạn đang quảng bá bản thân hoặc doanh nghiệp của riêng bạn. Một nhãn "Promotional content" sẽ được gắn với video.

  Loại phương tiện: video, image
</ParamField>

<ParamField body="imageCoverIndex" type="number" default="0">
  Chỉ số của `mediaUrls` sẽ được sử dụng làm bìa cho bài đăng.

  Loại phương tiện: image
</ParamField>

<ParamField body="title" type="string">
  Tiêu đề của bài đăng.

  Loại phương tiện: image
</ParamField>

<ParamField body="thumbNailOffset" type="number">
  Khung để sử dụng cho bìa video.

  Xem [tùy chọn thumbnail video](/apis/post/social-networks/tiktok#video-thumbnail) để biết thêm thông tin.

  Loại phương tiện: video
</ParamField>

<ParamField body="visibility" type="string" default="public">
  Cách bài đăng được chia sẻ và ai có thể xem nó.

  Các giá trị: `public`, `private`, `followers`, hoặc `friends`.

  Xem [tùy chọn visibility](/apis/post/social-networks/tiktok#visibility-options) để biết thêm thông tin.

  Loại phương tiện: image
</ParamField>

### Tùy chọn Visibility

| Visibility | Mô tả                                           |
| :--------- | :---------------------------------------------- |
| public     | Hiển thị với tất cả người dùng TikTok.          |
| private    | Riêng tư, chỉ hiển thị với chính tài khoản.     |
| followers  | Chỉ hiển thị với người theo dõi của tài khoản.  |
| friends    | Chỉ hiển thị với những người theo dõi lẫn nhau. |

Các bài đăng riêng tư sẽ vẫn ở trạng thái `pending` và không có webhook TikTok nào được gửi cho đến khi bài đăng được công khai.

## Thumbnail video

Có hai cách để đặt thumbnail, còn được gọi là ảnh bìa, cho một video TikTok:

1. Sử dụng tham số `thumbNailOffset` để đặt khung thumbnail.
2. Sử dụng tham số `thumbNail` để đặt hình ảnh thumbnail từ URL.

Chỉ video được hỗ trợ cho việc đặt thumbnail.

### Thumbnail Offset

Đặt thumbnail cho một video TikTok bằng cách chọn một khung offset.

```json TikTok Video Thumbnail Offset theme={"system"}
{
  "tikTokOptions": {
    "thumbNailOffset": 30000 // milliseconds of offset image
  }
}
```

Offset là vị trí tính bằng mili giây của khung thumbnail. Giá trị mặc định là `0`, là khung đầu tiên của video.

### Thumbnail URL

Đặt thumbnail cho một video TikTok bằng cách tải lên một hình ảnh từ URL.

```json TikTok Video Thumbnail URL theme={"system"}
{
  "tikTokOptions": {
    "thumbNail": "https://img.ayrshare.com/012/gb.jpg"
  }
}
```

Nếu bạn sử dụng tham số `thumbNail`, tham số `thumbNailOffset` sẽ bị bỏ qua.

Vui lòng xem [Yêu cầu Thumbnail TikTok](/media-guidelines/tiktok#video-thumbnail) để biết thêm thông tin.

## Nhắc tên (Mention) trên TikTok

Nhắc tên một handle TikTok khác bằng cách thêm `@handle` vào nội dung bài đăng. Ví dụ:

```json TikTok Mention theme={"system"}
{
  "post": "Love the @ayrshare social media api"
}
```

<Warning>
  Vui lòng xem lại [các quy tắc quan trọng](/testing/post-verification#mentions) về nhắc tên.
</Warning>

## Bài đăng nháp TikTok

Tạo bài đăng nháp cho video hoặc hình ảnh TikTok, cho phép bạn chỉnh sửa video hoặc hình ảnh trước khi xuất bản.

```json TikTok Video Draft Post theme={"system"}
{
  "post": "The best TikTok video ever #bestvideo", // empty string is allowed
  "mediaUrls": ["https://img.ayrshare.com/012/tiktok.mp4"],
  "platforms": ["tiktok"],
  "tikTokOptions": {
    "draft": true
  }
}
```

Bài đăng video hoặc hình ảnh nháp sẽ được tìm thấy dưới thông báo **Inbox** ở hàng dưới cùng của ứng dụng TikTok.
Tìm tin nhắn **System notifications** và sau đó nhấp vào tin nhắn **Your content from Ayrshare is ready** ở trên cùng.

`postUrl` Ayrshare sẽ vẫn ở trạng thái `pending` cho đến khi video được xuất bản. Bình luận đầu tiên không được hỗ trợ trên các bài đăng nháp.

<img src="https://mintcdn.com/ayrshare-docs/Nmrhj2Gh7WSf62Bh/images/apis/post/tiktok-draft-post.webp?fit=max&auto=format&n=Nmrhj2Gh7WSf62Bh&q=85&s=6e7fdce5ef106f6af6cd060bfbc446ba" alt="TikTok Draft Post" class="center" width="278" height="600" data-path="images/apis/post/tiktok-draft-post.webp" />

## Làm mới cấp phép (Authorization Refresh)

TikTok phải được cấp phép lại *mỗi năm* qua trang Social Accounts.

<ul class="custom-bullets">
  <li>
    Một email và thông báo webhook social action sẽ được gửi trước 15 ngày kể từ ngày hết hạn
    cấp phép.
  </li>

  <li>
    Ngày yêu cầu làm mới và số ngày còn lại có thể được lấy từ
    endpoint [/user](/apis/user/overview).
  </li>
</ul>

## Giới hạn ký tự

Vui lòng xem [Giới hạn ký tự TikTok](/help-center/technical-support/character_limits#tiktok-character-limits) để biết thêm thông tin.

## Thông tin bổ sung

Thêm [ví dụ về việc sử dụng TikTok API](https://www.ayrshare.com/blog/tiktok-api-how-to-post-to-tiktok-using-a-social-media-api/).
