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

# Create Video Ad

> Creates TikTok video spark ads (native TikTok ads) with a single video and an optional thumbnail image, supports all campaign types: manual, smart+, search, etc

Creates TikTok video spark ads (native TikTok ads) with a single video and an optional thumbnail image, supports all campaign types: manual, smart+, search, etc.

| | |
| - | - |
| **App** | TikTok Ads |
| **Operation ID** | `tiktok_ads_create_video_ad` |
| **Type** | Action |
| **Connection** | `tiktok_ads` (required) |
| **Credits per run** | 1 |
| **Agent / MCP tool** | Yes |
| **Requires approval** | Yes (write operation) |

## Inputs

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `account` | DynamicAccount | Yes | - | Select TikTok Ads account (advertiser) to create ads in |
| `update_type` | string or SelectableOption | Yes | - | Choose whether to create a single ad or multiple ads at once. Options: 'single' or 'bulk' |
| `ad_group_id` | string or SelectItem | No | - | Select the TikTok ad group for this ad. Required for single ad creation. |
| `identity_id` | string or SelectItem | Yes | - | TikTok identity ID, required for single and bulk ads. Use tiktok\_ads\_list\_identities to find TT\_USER or BC\_AUTH\_TT identities; Markifact resolves the type from the ID. Native DM ads must be Spark Ads with direct-message permission (can\_manage\_message=true in TikTok identity details). For native DM CLICK, use TT\_USER or BC\_AUTH\_TT; for CONVERSATION, use TT\_USER. |
| `ad_name` | string | No | - | Name of the ad |
| `video_urls` | string or array of string | No | - | Video URLs to upload for this ad. Provide 1-50 videos. Smart+ ad groups support multiple video creatives; manual ad groups support 1 video. Supports direct video URLs and Google Drive share links. |
| `video_ids` | string or array of string | No | - | Optional existing TikTok video IDs. Provide 1-50 IDs to skip uploading video\_urls. |
| `thumbnail_urls` | string or array of string | No | - | Optional thumbnail image URLs. Provide one per video. If omitted, TikTok auto-generates covers from the videos. |
| `thumbnail_ids` | string or array of string | No | - | Optional existing TikTok image IDs for thumbnails. Provide one per video to skip uploading thumbnail\_urls. |
| `ad_texts` | string or array of string | No | - | TikTok ad texts. Manual ad groups support 1 text; Smart+ ad groups support up to 5 texts. Each text must be 100 characters or fewer. |
| `call_to_action` | string or SelectableOption | No | - | Optional TikTok call to action, for example LEARN\_MORE, SHOP\_NOW, SIGN\_UP, CONTACT\_US, DOWNLOAD. |
| `landing_page_url` | string | No | - | Landing page URL people open after clicking the ad. You can include UTM parameters, for example ?utm\_source=tiktok\&utm\_id=**CAMPAIGN\_ID**\&utm\_campaign=**CAMPAIGN\_NAME**\&utm\_medium=paid. For app download campaigns, provide the app store URL. Omit for native TikTok DMs, phone destinations, or messaging destinations derived from the ad group. TikTok validates whether a URL is needed. |
| `page_id` | string | No | - | Optional TikTok-hosted page, such as an instant page or lead form. When provided, landing\_page\_url is not sent. Use tiktok\_ads\_list\_pages to find IDs. Call Ads can use a custom TikTok Instant Page instead of a phone destination. Omit for native TikTok DM ads. |
| `phone_region_code` | string | No | - | Manual Call Ads: destination region code, for example NZ. Provide together with phone\_region\_calling\_code and phone\_number. Obtain matching codes from /tool/phone\_region\_code/. WhatsApp/Zalo phone fields belong on the ad group instead. |
| `phone_region_calling_code` | string | No | - | Manual Call Ads: destination calling code including +, for example +64. Provide together with phone\_region\_code and phone\_number. |
| `phone_number` | string | No | - | Manual Call Ads: destination phone number. Provide all three phone fields, or use page\_id for a custom TikTok Instant Page destination. TikTok validates destination eligibility. |
| `auto_message_id` | string | No | - | Required for manual native DM ads: welcome message ID from /creative/auto\_message/get/ or /creative/auto\_message/create/. Use a Spark identity with direct-message permission; omit landing\_page\_url, page\_id, and deep-link fields for this route. |
| `deeplink` | string | No | - | Manual ads: native destination deep link when the selected messaging route requires one. Omit for native TikTok DM ads and when TikTok derives the destination from the ad group. |
| `deeplink_type` | string or SelectableOption | No | - | Manual ads: native TikTok deep-link type when required for the destination. Omit for native TikTok DM ads. |
| `fallback_type` | string or SelectableOption | No | - | Manual ads: native TikTok fallback type when required for the deep link. Omit for native TikTok DM ads. |
| `tracking_message_event_set_id` | string | No | - | Manual instant messaging ads: optional message event set used for tracking. |
| `tracking_pixel_id` | integer or string | No | - | Optional TikTok tracking pixel ID. Usually inherited from the ad group for supported objectives; provide it manually if needed. |
| `tracking_app_id` | string | No | - | Optional TikTok tracking app ID. Usually inherited from the ad group for supported objectives; provide it manually if needed. |
| `disable_creative_enhancements` | boolean | No | `True` | Single mode only. Disable TikTok automatic creative enhancements. Default: true. |
| `is_dark_post` | boolean | No | `True` | Whether this ad should show as an ad only and not on your TikTok profile, otherwise, they will appear on your profile for anyone to see and engage with. Default: true which means `Only show as ads`. |
| `ad_status` | string or SelectableOption | No | - | Status when the ad is created. Options: ENABLE, DISABLE. Default: DISABLE. |
| `catalog_products` | string or array of string | No | - | Optional Smart+ catalog products. Use 'ALL' for all products, for example 'ALL'. Use a product set ID string for a product set, for example '7636991234567890123'. Use a comma-separated string or list for specific products, for example 'product\_id\_1,product\_id\_2' or \['product\_id\_1', 'product\_id\_2']; TikTok allows max 20 product IDs. |
| `catalog_music_id` | string | No | - | Required when catalog\_products is provided. Music ID for the catalog carousel creative, for example '6745887971053930498'. |
| `return_detailed_results` | boolean | No | `False` | Bulk mode only. If true, returns per-row results and does not raise on partial failures. |
| `structured_data` | array (also accepts a comma-separated string) | No | - | Use only when update\_type is 'bulk'. Required columns: ad\_group\_id, ad\_name, ad\_texts or ad\_text\_1/ad\_text\_2 numbered columns, and videos. Destinations are optional for native messaging/call routes. Videos can be provided as video\_urls/video\_ids lists, or numbered columns like video\_1\_url, video\_2\_url. Optional row columns: landing\_page\_url, phone\_region\_code, phone\_region\_calling\_code, phone\_number, auto\_message\_id, deeplink, deeplink\_type, fallback\_type, tracking\_message\_event\_set\_id (these native destination fields inherit top-level values unless overridden per row), page\_id, thumbnail\_urls, thumbnail\_ids, thumbnail\_1\_url, thumbnail\_1\_id, catalog\_products, catalog\_music\_id, call\_to\_action, tracking\_pixel\_id, tracking\_app\_id, disable\_creative\_enhancements, is\_dark\_post, ad\_status, or operation\_status. |

### SelectItem

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `value` | string | Yes | - | The value of the selectable item. |
| `label` | string | Yes | - | The label of the selectable item, used for display purposes. If not provided, defaults to the value. |

### SelectableOption

| Field | Type | Required | Default | Description |
| - | - | - | - | - |
| `value` | string | Yes | - | |
| `label` | string | Yes | - | |

## Output

**Type**: `Dict`

Returns created TikTok ad IDs, uploaded video IDs, thumbnail IDs (if any), created count, and creative details.

**Fields**: `ad_ids`, `video_ids`, `thumbnail_ids`, `created_count`


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.