> ## 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 a video ad in an X Ads account end to end: uploads the video and optional poster frame, builds a website or app card when a destination is given, creates the Promoted-only post, and promote...

Creates a video ad in an X Ads account end to end: uploads the video and optional poster frame, builds a website or app card when a destination is given, creates the Promoted-only post, and promotes it. X also supports a post-level video call to action as an alternative to a card. X ads have no status of their own, so keep the ad group or campaign paused until you are ready to spend. Enable post\_only to build the creative without promoting it.

|                       |                         |
| --------------------- | ----------------------- |
| **App**               | X Ads                   |
| **Operation ID**      | `x_ads_create_video_ad` |
| **Type**              | Action                  |
| **Connection**        | `x_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 the X Ads account to create the ad in.                                                                                                                                                                                                                 |
| `update_type`              | string or SelectableOption                                           | Yes      | -       | Choose whether to create a single ad or multiple at once. Options: single or bulk.                                                                                                                                                                            |
| `ad_group_id`              | string or SelectItem                                                 | No       | -       | Ad group (line item) to run the ad in. Required unless post\_only is enabled. Keep the ad group or campaign paused until you are ready, since X ads have no status of their own and go live with their ad group.                                              |
| `ad_name`                  | string                                                               | No       | -       | Internal name for the post and card, up to 80 characters.                                                                                                                                                                                                     |
| `text`                     | string                                                               | No       | -       | The post's text, up to 280 characters.                                                                                                                                                                                                                        |
| `video_url`                | string                                                               | No       | -       | Video to upload (mp4 or mov, up to 10 minutes and 500MB). Accepts a direct URL, a Google Drive share link with sharing set to 'Anyone with the link', or a file uploaded through Markifact. Uploaded as amplify\_video, the category promoted video requires. |
| `media_key`                | string                                                               | No       | -       | An already-uploaded video media key to use instead of video\_url.                                                                                                                                                                                             |
| `thumbnail_url`            | string                                                               | No       | -       | Image to use as the video's poster frame. Accepts a direct URL, a Google Drive share link with sharing set to 'Anyone with the link', or a file uploaded through Markifact.                                                                                   |
| `website_url`              | string                                                               | No       | -       | Landing page URL. Setting this builds a website card with the headline below. For a call to action without a card, use video\_cta and video\_cta\_value instead.                                                                                              |
| `headline`                 | string                                                               | No       | -       | Card headline shown under the video. Required with website\_url.                                                                                                                                                                                              |
| `call_to_action`           | enum (`BOOK`, `CONNECT`, `INSTALL`, `OPEN`, `ORDER`, `PLAY`, `SHOP`) | No       | -       | App card button label: BOOK, CONNECT, INSTALL, OPEN, ORDER, PLAY, or SHOP. Required with app store identifiers.                                                                                                                                               |
| `country_code`             | string                                                               | No       | -       | ISO alpha-2 country of the app store, e.g. US. Required for app destinations.                                                                                                                                                                                 |
| `ios_app_store_identifier` | string                                                               | No       | -       | Numeric App Store id. Setting it builds an app card.                                                                                                                                                                                                          |
| `googleplay_app_id`        | string                                                               | No       | -       | Google Play package name. Setting it builds an app card.                                                                                                                                                                                                      |
| `ios_deep_link`            | string                                                               | No       | -       | Deep link opened on iOS; only sent alongside the App Store id.                                                                                                                                                                                                |
| `googleplay_deep_link`     | string                                                               | No       | -       | Deep link opened on Android; only sent alongside the Google Play id.                                                                                                                                                                                          |
| `video_title`              | string                                                               | No       | -       | Title rendered with the video, up to 70 characters.                                                                                                                                                                                                           |
| `video_description`        | string                                                               | No       | -       | Description rendered under the video, up to 200 characters.                                                                                                                                                                                                   |
| `video_cta`                | enum (`VISIT_SITE`, `WATCH_NOW`)                                     | No       | -       | X's post-level video call to action, an alternative to a card: VISIT\_SITE or WATCH\_NOW, opening video\_cta\_value.                                                                                                                                          |
| `video_cta_value`          | string                                                               | No       | -       | The URL the post-level video call to action opens.                                                                                                                                                                                                            |
| `conversation_settings`    | enum (`EVERYONE`, `FOLLOWING`, `MENTIONED_USERS`)                    | No       | -       | Who can reply: EVERYONE (default), FOLLOWING, or MENTIONED\_USERS.                                                                                                                                                                                            |
| `post_only`                | boolean                                                              | No       | `False` | Create the Promoted-only post and card without promoting, so they can be reused across ad groups with x\_ads\_create\_ad\_from\_post.                                                                                                                         |
| `return_detailed_results`  | boolean                                                              | No       | `False` | Include the full post and ad objects in the output.                                                                                                                                                                                                           |
| `structured_data`          | array (also accepts a comma-separated string)                        | No       | -       | Use only when update\_type is bulk. Columns: video\_url or media\_key, plus optional text, ad\_group\_id, ad\_name, thumbnail\_url, website\_url, headline, the app fields, and the video\_\* fields. Up to 100 rows.                                         |

### 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 the created post id, card id when one was built, and ad id. Bulk runs return one entry per row.

**Fields**: dynamic (depend on the inputs)
