# Tiktok

TikTok short-form video platform + creation tools + social sharing

- **Category:** social media accounts
- **Auth:** OAUTH2
- **Composio Managed App Available?** No
- **Tools:** 10
- **Triggers:** 0
- **Slug:** `TIKTOK`
- **Version:** 20260316_00

## Tools

### Fetch publish status

**Slug:** `TIKTOK_FETCH_PUBLISH_STATUS`

Check the processing status of a TikTok video or photo post using its publish_id. Use this action to poll the status of content after initiating an upload or post. The API returns detailed information about processing stages (upload, download, moderation) and any errors that occurred. Non-terminal statuses mean processing is still pending — never re-initiate TIKTOK_PUBLISH_VIDEO for the same publish_id. Use exponential backoff when polling (e.g., 5s→10s→20s) to avoid the 30 requests/minute per access token rate limit.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `publish_id` | string | Yes | The unique identifier (max 64 characters) returned from a video upload or photo post initialization. Used to track the posting action and check its processing status. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get action categories

**Slug:** `TIKTOK_GET_ACTION_CATEGORIES`

Tool to retrieve available action categories from TikTok Marketing API. Use when you need to get the list of conversion event categories for creating or managing TikTok ad campaigns with conversion tracking.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `language` | string ("en" | "zh" | "ja" | "de" | "es" | "fr" | "id" | "it" | "ko" | "ru" | "th" | "tr" | "vi" | "ar" | "pt" | "ms") | No | Language for category names in the response. Defaults to English (en). |
| `advertiser_id` | string | Yes | Advertiser ID for which to retrieve action categories. |
| `special_industries` | string ("HOUSING" | "EMPLOYMENT" | "CREDIT") | No | Special ad categories for restricted industries. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get terms

**Slug:** `TIKTOK_GET_TERM`

Tool to retrieve terms from TikTok Business API. Use when you need to fetch advertiser or agency terms for a specific advertiser ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `lang` | string | No | Language code for the terms. Default is 'EN' (English). |
| `term_type` | string ("ADVERTISER_TERMS" | "AGENCY_TERMS") | Yes | Type of terms to retrieve. ADVERTISER_TERMS for advertiser terms, AGENCY_TERMS for agency terms. |
| `advertiser_id` | string | Yes | The advertiser ID for which to retrieve terms. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get user stats

**Slug:** `TIKTOK_GET_USER_STATS`

Fetches TikTok user information and statistics for the authenticated user. Retrieves user stats (follower_count, following_count, likes_count, video_count) and can optionally fetch profile fields (display_name, username, bio_description, etc.) and basic info (open_id, union_id, avatar URLs). Returns only the fields requested in the fields parameter. Only works for the authenticated account; cannot fetch arbitrary public profiles. Stats may be delayed and not reflect the most recent activity.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `fields` | array | No | List of fields to retrieve. Available fields: Stats fields (user.info.stats scope): follower_count, following_count, likes_count, video_count. Profile fields (user.info.profile scope): display_name, username, bio_description, profile_deep_link, is_verified. Basic fields (user.info.basic scope): open_id, union_id, avatar_url, avatar_url_100, avatar_large_url. Defaults to the 4 statistics fields. Requesting fields without the corresponding OAuth scope returns missing or incomplete data for those fields. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List GMV Max occupied custom shop ads

**Slug:** `TIKTOK_LIST_GMV_MAX_OCCUPIED_CUSTOM_SHOP_ADS`

Tool to get GMV Max occupied custom shop ads list for a TikTok advertiser. Use this action when you need to retrieve information about which custom shop ads are currently occupied for GMV Max campaigns. This is part of the TikTok Business API and requires appropriate advertiser access.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `store_id` | string | Yes | The store ID to filter occupied custom shop ads. |
| `asset_ids` | string | Yes | Comma-separated list of asset IDs to check for occupation status. |
| `advertiser_id` | string | Yes | The advertiser ID for which to retrieve occupied custom shop ads. |
| `occupied_asset_type` | string | Yes | The type of asset to check (e.g., VIDEO, IMAGE). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List videos

**Slug:** `TIKTOK_LIST_VIDEOS`

Lists videos for the authenticated user (or specified creator). Does not provide a global TikTok-wide feed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | integer | No | Pagination cursor (UTC Unix timestamp in milliseconds) returned from previous call's response. Stop pagination when no next cursor is returned. |
| `max_count` | integer | No | Maximum number of videos to retrieve per page. Default is 10, maximum is 20. |
| `creator_id` | string | No | Optional creator open_id to list videos for a specific creator. Omit to list videos for the authenticated user. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Post photo

**Slug:** `TIKTOK_POST_PHOTO`

Create a photo post (1-35 images) on TikTok via Content Posting API. Supports two modes: - MEDIA_UPLOAD: Uploads photos to user's inbox for review/editing before posting - DIRECT_POST: Immediately posts photos to user's TikTok account IMPORTANT: Photo URLs must be from your TikTok-verified domain. Unverified domains will return 403 Forbidden. Unaudited apps can only post with privacy='SELF_ONLY'. Rate limit: 6 requests per minute per user access token. Reference: https://developers.tiktok.com/doc/content-posting-api-reference-photo-post

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `title` | string | No | Post title (<= 90 UTF-16 runes) |
| `post_mode` | string ("DIRECT_POST" | "MEDIA_UPLOAD") | No | Use DIRECT_POST to publish immediately (requires video.publish), or MEDIA_UPLOAD to send to inbox for editing (requires video.upload) |
| `description` | string | No | Post description (<= 4000 UTF-16 runes) |
| `photo_images` | array | Yes | List of 1-35 publicly accessible HTTPS image URLs (JPG, JPEG, or WEBP format). IMPORTANT: URLs must be from your TikTok-verified domain or URL prefix. Random/third-party URLs will be rejected with 403 error. |
| `privacy_level` | string | No | Privacy level for the photo post. Required for DIRECT_POST mode. Common values: 'SELF_ONLY' (private), 'MUTUAL_FOLLOW_FRIENDS' (friends), 'FOLLOWER_OF_CREATOR' (followers), 'PUBLIC_TO_EVERYONE' (public). For unaudited apps, must use 'SELF_ONLY'. |
| `auto_add_music` | boolean | No | DIRECT_POST only. Auto add recommended music. |
| `disable_comment` | boolean | No | DIRECT_POST only. Disallow comments if true. |
| `photo_cover_index` | integer | Yes | Zero-based index (0 to len(photo_images)-1) indicating which image to use as the cover/thumbnail |
| `brand_content_toggle` | boolean | No | DIRECT_POST only. True if content is a paid partnership to promote a third-party business. |
| `brand_organic_toggle` | boolean | No | DIRECT_POST only. True if content promotes the creator's own business. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Publish video

**Slug:** `TIKTOK_PUBLISH_VIDEO`

Publishes a video to TikTok by pulling it from a public URL. TikTok downloads the video from the provided URL and publishes it directly to the creator's profile. Publishing is asynchronous — after calling this action, poll TIKTOK_FETCH_PUBLISH_STATUS with the returned publish_id to check completion. For uploading video files instead of URLs, use TIKTOK_UPLOAD_VIDEO.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `caption` | string | No | Optional caption/title text for the video post. Maximum length: 2200 UTF-16 characters. |
| `video_url` | string | Yes | A publicly accessible URL of the video to publish. TikTok will pull the video from this URL. Must be HTTP/HTTPS. The video will be downloaded by TikTok's servers, so ensure the URL is accessible and not behind authentication. |
| `disable_duet` | boolean | No | Whether to disable duets on the video. |
| `privacy_level` | string | No | Privacy level for published video. Options: SELF_ONLY, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, PUBLIC_TO_EVERYONE. For unaudited apps, use SELF_ONLY or MUTUAL_FOLLOW_FRIENDS. |
| `disable_stitch` | boolean | No | Whether to disable stitches on the video. |
| `disable_comment` | boolean | No | Whether to disable comments on the video. |
| `video_cover_timestamp_ms` | integer | No | Timestamp in milliseconds to use as video cover/thumbnail. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upload video

**Slug:** `TIKTOK_UPLOAD_VIDEO`

Uploads a video to TikTok via the Content Posting API (init + single-part upload). This action initializes an upload session to obtain a presigned upload URL, then uploads the entire file with a single PUT request. Use a subsequent action to publish the post. Ensure the video file is fully generated and available before calling this action.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `caption` | string | No | Optional caption/title used when publish=true |
| `publish` | boolean | No | If true, attempts to publish after upload using the returned publish_id. |
| `disable_duet` | boolean | No | Whether to disable duets on the video. |
| `privacy_level` | string | No | Privacy level for published video. Options: SELF_ONLY, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, PUBLIC_TO_EVERYONE. For unaudited apps, use SELF_ONLY or MUTUAL_FOLLOW_FRIENDS. |
| `disable_stitch` | boolean | No | Whether to disable stitches on the video. |
| `file_to_upload` | object | Yes | Video file to upload to TikTok. Supported formats include MP4, MOV, WEBM. Must be a structured dict with fields: name (filename), mimetype (e.g. video/mp4), and s3key (S3 object key). Local file paths and raw bytes are not accepted. Recommended aspect ratio 9:16. |
| `disable_comment` | boolean | No | Whether to disable comments on the video. |
| `chunk_size_bytes` | integer | No | Chunk size for multi-part uploads in bytes (1MB-64MB). If not provided, defaults to file size for single-chunk upload. Most videos can use default (None). |
| `video_cover_timestamp_ms` | integer | No | Timestamp in milliseconds to use as video cover/thumbnail (e.g., 1000 for 1 second into video). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upload videos (batch)

**Slug:** `TIKTOK_UPLOAD_VIDEOS`

Uploads multiple videos to TikTok concurrently (init + single-part upload per file).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `caption` | string | No | Optional caption/title used when publish=true |
| `publish` | boolean | No | If true, attempts to publish after each upload using direct publish flow. |
| `max_workers` | integer | No | Maximum number of parallel uploads |
| `disable_duet` | boolean | No | Whether to disable duets on the videos. |
| `privacy_level` | string | No | Privacy level for published videos. Options: SELF_ONLY, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, PUBLIC_TO_EVERYONE. |
| `disable_stitch` | boolean | No | Whether to disable stitches on the videos. |
| `disable_comment` | boolean | No | Whether to disable comments on the videos. |
| `files_to_upload` | array | No | List of video files to upload to TikTok in parallel. Supports common video formats like MP4, MOV, WebM. Each file must not exceed TikTok's size/duration limits; oversized, too-long, or unsupported-codec files are rejected. Caption (via `caption`) must also be within TikTok's length limit. |
| `chunk_size_bytes` | integer | No | Chunk size hint for multi-chunk uploads (bytes, 1MB-64MB). For single-chunk uploads, automatically uses file_size if not provided. |
| `video_cover_timestamp_ms` | integer | No | Timestamp in milliseconds to use as video cover/thumbnail. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
