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. |