The Challenge: YouTube Ads Are Complex
Creating YouTube video campaigns has always been a multi-step nightmare:
- Create or source video content
- Export in the right format and resolution
- Upload to YouTube manually
- Copy the video ID
- Navigate to Google Ads
- Create a Video campaign... wait, you can't via API
- Figure out Demand Gen campaigns instead
- Set up targeting, bidding, budget
- Create the video ad creative
- Launch and pray
Now? One conversation.
What We Built
Synter now supports the complete YouTube advertising workflow:
🎬 AI Video Generation
Generate video ads using Google Veo 3.1. Provide a concept, get a production-ready video.
📤 YouTube Upload
Upload videos to YouTube programmatically. Public, unlisted, or private.
🚀 Demand Gen Campaigns
Create campaigns that serve on YouTube, YouTube Shorts, Discover, and Gmail.
📊 Conversion Tracking
Set up Google Ads conversions and GTM tags automatically.
Why Demand Gen, Not Video Campaigns?
Here's something Google doesn't advertise loudly: The Google Ads API does NOT support creating Video campaigns.
The API only allows reporting on existing Video campaigns. For programmatic YouTube ad creation, you must use Demand Gen campaigns.
Demand Gen Campaign Placements
- YouTube — In-stream and in-feed video ads
- YouTube Shorts — Vertical video placements
- Discover — Google Discover feed
- Gmail — Promotions tab ads
We learned this the hard way so you don't have to. All our YouTube scripts use Demand Gen under the hood.
End-to-End Workflow
Step 1: Generate or Upload Video
Option A: Generate with AI (Veo 3.1)
"Generate a 15-second video ad showing our AI agent
managing campaigns across multiple platforms.
Dark tech aesthetic, cyan accents."Step 2: Upload to YouTube
{
"script_name": "youtube_upload_video",
"platform": "GOOGLE",
"args": [
"--url", "https://blob-url/video.mp4",
"--title", "Synter AI Agent Demo",
"--privacy", "public"
]
}Step 3: Create Demand Gen Campaign
{
"script_name": "google_ads_create_demand_gen_campaign",
"args": [
"--campaign-name", "YouTube - AI Demo",
"--video-id", "dQw4w9WgXcQ",
"--daily-budget", "50",
"--geo-targets", "2840"
]
}Asset Requirements
Demand Gen campaigns require specific creative assets:
| Asset Type | Requirements |
|---|---|
| Headlines | 3 minimum, max 40 chars each |
| Descriptions | 2 minimum, max 90 chars each |
| Video | YouTube video ID (public or unlisted) |
| Logo | 1:1 ratio, 128×128px minimum |
| Business name | Max 25 characters |
Real Production Campaigns
We used this system to launch our own campaigns:
Campaigns launched
Total setup time
Combined budget
| Campaign | Duration | Budget | Status |
|---|---|---|---|
| Synter AI Agent 15s Reel | 15s | $50/day | ● Live |
| Synter YouTube 30s | 30s | $50/day | ● Live |
| Synter AI Agent 60s Demo | 60s | $50/day | ● Live |
Technical Requirements
To enable YouTube campaigns in Synter:
1. OAuth Scopes
Your Google connection needs:
https://www.googleapis.com/auth/adwordshttps://www.googleapis.com/auth/youtube.upload
2. GCP APIs Enabled
Enable these in Google Cloud Console:
- Google Ads API
- YouTube Data API v3
3. For AI Video Generation
Optional—for Veo 3.1 integration:
- GEMINI_API_KEY with Veo access
What's Next
We're continuing to expand video capabilities:
- A/B testing: Auto-generate video variants and test performance
- Thumbnail optimization: AI-generated thumbnails for better CTR
- Cross-platform video: Adapt videos for Meta Reels, TikTok
- Performance insights: Natural language video performance reports