> ## 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 Pinterest video ad by uploading a video, creating a video Pin, then creating an ad from that Pin

Creates a Pinterest video ad by uploading a video, creating a video Pin, then creating an ad from that Pin. By default the Pin is ad-only and the ad is created paused. Set pin\_only=true to create only the video Pin.

| | |
| - | - |
| **App** | Pinterest Ads |
| **Operation ID** | `pinterest_ads_create_video_ad` |
| **Type** | Action |
| **Connection** | `pinterest_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 Pinterest Ads account to create the video Pin and ad in. |
| `update_type` | string or SelectableOption | Yes | - | Choose whether to create a single video ad or multiple at once. Options: single or bulk. |
| `ad_group_id` | string or SelectItem | No | - | Pinterest ad group ID to create the ad under. Required unless pin\_only is true. |
| `ad_name` | string | No | - | Name of the Pinterest ad. Required unless pin\_only is true. |
| `ad_status` | string or SelectableOption | No | `{'value': 'PAUSED', 'label': 'Paused'}` | Status when the ad is created. Options: ACTIVE or PAUSED. Default: PAUSED. |
| `video_url` | string | No | - | Video to upload for the Pin/ad. Accepts a direct video URL, Google Drive share link (set to 'Anyone with the link'), or Markifact uploaded video. Markifact uploads it to Pinterest and waits for processing. |
| `cover_image_url` | string | No | - | Optional cover image URL for the video Pin. Pinterest requires a cover; when this is omitted, cover\_image\_key\_frame\_time is sent instead (default 0, the first frame). |
| `cover_image_key_frame_time` | integer | No | - | Optional video timestamp in seconds to use as the cover frame. Ignored when cover\_image\_url is set. Defaults to 0 (the first frame). |
| `pin_title` | string | No | - | Title for the Pinterest Pin. Up to 100 characters. |
| `pin_description` | string | No | - | Description for the Pinterest Pin. Up to 800 characters. |
| `destination_url` | string | No | - | Landing page URL for the Pin and ad click-through. Pinterest appends its default utm\_ parameters to ad URLs that have none unless the account opts out in Business Manager; parameters you include are kept. |
| `board_id` | string or SelectItem | No | - | Board ID to save the Pin to. Required only when ad\_only\_pin is false. |
| `ad_only_pin` | boolean | No | `True` | Create the Pin as ad-only so it does not appear organically. Default true. |
| `pin_only` | boolean | No | `False` | Create only the Pinterest video Pin and skip ad creation. Default false. |
| `call_to_action` | string or SelectableOption | No | - | Optional Pinterest customizable CTA type, for example LEARN\_MORE, SHOP\_NOW, SIGN\_UP. |
| `click_tracking_url` | string | No | - | Optional third-party click tracking URL. |
| `view_tracking_url` | string | No | - | Optional third-party impression tracking URL. |
| `android_deep_link` | string | No | - | Optional Android deep link URL. |
| `ios_deep_link` | string | No | - | Optional iOS deep link URL. |
| `is_dynamic_cta` | boolean | No | `False` | Let Pinterest pick the best CTA per placement and device from cta\_types instead of always serving one fixed CTA. Cannot be combined with call\_to\_action. Default false. |
| `cta_types` | string or array of string | No | - | CTAs Pinterest may choose between when is\_dynamic\_cta is true, as a JSON list or comma-separated string. At least two, from: ADD\_TO\_CART, BUY\_NOW, CONTACT\_US, EXPLORE\_MORE, GET\_OFFER, LEARN\_MORE, ORDER\_NOW, SHOP\_NOW, TAKE\_A\_PEEK, VISIT\_SITE. Pinterest also requires the campaign objective's default CTA to be in the list (VISIT\_SITE for CONSIDERATION) and names the missing one in its error. Example: \["VISIT\_SITE", "SHOP\_NOW", "LEARN\_MORE"]. |
| `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: video\_url, destination\_url, pin\_title or pin\_description, plus ad\_group\_id and ad\_name unless pin\_only is true. Optional columns: cover\_image\_url, cover\_image\_key\_frame\_time, board\_id, ad\_only\_pin, pin\_only, ad\_status, call\_to\_action, is\_dynamic\_cta, cta\_types, click\_tracking\_url, view\_tracking\_url, android\_deep\_link, ios\_deep\_link. |

### 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 Pinterest ad IDs and Pin IDs.

**Fields**: `ad_ids`, `pin_ids`, `created_count`


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