Build a Google Ads Performance Max asset group with image, text, and video assets via the API
domain: advertising · 6 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
Steps
Create the Performance Max campaign shell (budget, bidding strategy, campaign) first, since AssetGroupService requires an existing PMax campaign to attach to
Upload media as Asset resources (ImageAsset, YoutubeVideoAsset, TextAsset) via AssetService.MutateAssets and capture each returned resource name
For non-retail Performance Max, create the AssetGroup together with all required AssetGroupAsset links (headlines, descriptions, images, logos, video) in one atomic mutate/batch request, since AssetGroup creation alone fails minimum-asset validation
Set each AssetGroupAsset field_type (HEADLINE, MARKETING_IMAGE, LOGO, YOUTUBE_VIDEO, etc.) to satisfy Google's minimum-asset-per-group requirements
Attach AssetGroupSignal (audience or search-theme signals) to help Google's automation target the group
Query asset_group.ad_strength via GAQL after creation to confirm the group isn't stuck at POOR before enabling the campaign
Known gotchas
Creating an AssetGroup before its required assets exist fails validation, because minimum asset-count thresholds are enforced at creation time, not after
Video assets must reference an existing public YouTube video ID — the API does not host direct video uploads
Skipping asset_group_signal is allowed but yields broad, less-controlled targeting that can behave unpredictably for new advertisers
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?