Validate draft for campaign creation
curl --request POST \
--url http://localhost:8000/api/v1/campaigns/drafts/{draft_id}/validate \
--header 'Authorization: Bearer <token>'{
"valid": true,
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"warnings": [
"<string>"
],
"draft": {
"id": 123,
"name": "<string>",
"google_ads_customer_id": 123,
"date_added": "2023-11-07T05:31:56Z",
"date_updated": "2023-11-07T05:31:56Z",
"market_analysis_id": 123,
"campaign_name": "<string>",
"website_url": "<string>",
"daily_budget_micros": 123,
"bidding_strategy": {
"target_cpa_micros": 123,
"target_roas": 1,
"max_cpc_bid_ceiling_micros": 123
},
"default_match_type": "PHRASE",
"language_ids": [
123
],
"location_targets": [
{
"geo_target_constant_id": 123,
"target_type": "INCLUDE"
}
],
"network_settings": {
"target_google_search": true,
"target_search_network": false,
"target_content_network": false
},
"ad_schedule": {
"schedule_entries": [
{
"start_hour": 11,
"end_hour": 12,
"start_minute": 0,
"end_minute": 0
}
]
},
"start_date": "2023-12-25",
"end_date": "2023-12-25",
"conversion_goals": [
{
"conversion_action_id": 1
}
],
"extensions": {
"sitelinks": [
{
"link_text": "<string>",
"final_url": "<string>",
"description_1": "<string>",
"description_2": "<string>",
"final_mobile_url": "<string>"
}
],
"callouts": [
{
"callout_text": "<string>"
}
],
"phone": {
"phone_number": "<string>",
"country_code": "<string>"
},
"structured_snippets": [
{
"values": [
"<string>"
]
}
]
},
"ad_groups_task_id": "<string>",
"ad_groups_generation_status": "completed",
"ad_groups_generation_error": "<string>",
"extensions_task_id": "<string>",
"extensions_generation_status": "not_started",
"extensions_generation_error": "<string>",
"is_published": false,
"published_at": "2023-11-07T05:31:56Z",
"published_campaign_id": 123,
"all_rsas_generated": false,
"ad_groups": [
{
"id": 123,
"name": "<string>",
"cpc_bid_micros": 25000000000,
"keywords": [
{
"id": 123,
"text": "<string>",
"cpc_bid_micros": 25000000000,
"final_url": "<string>",
"source_market_analysis_keyword_id": 123
}
],
"rsas": [
{
"id": 123,
"ad_group_id": 123,
"headlines": [
{
"text": "<string>",
"reason": "<string>"
}
],
"descriptions": [
{
"text": "<string>",
"reason": "<string>"
}
],
"final_url": "<string>",
"final_mobile_url": "<string>",
"display_path_1": "<string>",
"display_path_2": "<string>",
"tracking_url_template": "<string>",
"generation_status": "pending",
"generation_task_id": "<string>",
"generation_error": "<string>"
}
]
}
]
}
}Campaigns
Validate draft for campaign creation
Validate a campaign draft before creation.
Checks:
- All required fields are present (campaign name, budget, bidding strategy, etc.)
- All background tasks have completed (ad group splitting, RSA generation)
- Business rules (at least 1 conversion goal, 1 location target, etc.)
Returns validation errors if the draft is incomplete or has issues.
POST
/
api
/
v1
/
campaigns
/
drafts
/
{draft_id}
/
validate
Validate draft for campaign creation
curl --request POST \
--url http://localhost:8000/api/v1/campaigns/drafts/{draft_id}/validate \
--header 'Authorization: Bearer <token>'{
"valid": true,
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"warnings": [
"<string>"
],
"draft": {
"id": 123,
"name": "<string>",
"google_ads_customer_id": 123,
"date_added": "2023-11-07T05:31:56Z",
"date_updated": "2023-11-07T05:31:56Z",
"market_analysis_id": 123,
"campaign_name": "<string>",
"website_url": "<string>",
"daily_budget_micros": 123,
"bidding_strategy": {
"target_cpa_micros": 123,
"target_roas": 1,
"max_cpc_bid_ceiling_micros": 123
},
"default_match_type": "PHRASE",
"language_ids": [
123
],
"location_targets": [
{
"geo_target_constant_id": 123,
"target_type": "INCLUDE"
}
],
"network_settings": {
"target_google_search": true,
"target_search_network": false,
"target_content_network": false
},
"ad_schedule": {
"schedule_entries": [
{
"start_hour": 11,
"end_hour": 12,
"start_minute": 0,
"end_minute": 0
}
]
},
"start_date": "2023-12-25",
"end_date": "2023-12-25",
"conversion_goals": [
{
"conversion_action_id": 1
}
],
"extensions": {
"sitelinks": [
{
"link_text": "<string>",
"final_url": "<string>",
"description_1": "<string>",
"description_2": "<string>",
"final_mobile_url": "<string>"
}
],
"callouts": [
{
"callout_text": "<string>"
}
],
"phone": {
"phone_number": "<string>",
"country_code": "<string>"
},
"structured_snippets": [
{
"values": [
"<string>"
]
}
]
},
"ad_groups_task_id": "<string>",
"ad_groups_generation_status": "completed",
"ad_groups_generation_error": "<string>",
"extensions_task_id": "<string>",
"extensions_generation_status": "not_started",
"extensions_generation_error": "<string>",
"is_published": false,
"published_at": "2023-11-07T05:31:56Z",
"published_campaign_id": 123,
"all_rsas_generated": false,
"ad_groups": [
{
"id": 123,
"name": "<string>",
"cpc_bid_micros": 25000000000,
"keywords": [
{
"id": 123,
"text": "<string>",
"cpc_bid_micros": 25000000000,
"final_url": "<string>",
"source_market_analysis_keyword_id": 123
}
],
"rsas": [
{
"id": 123,
"ad_group_id": 123,
"headlines": [
{
"text": "<string>",
"reason": "<string>"
}
],
"descriptions": [
{
"text": "<string>",
"reason": "<string>"
}
],
"final_url": "<string>",
"final_mobile_url": "<string>",
"display_path_1": "<string>",
"display_path_2": "<string>",
"tracking_url_template": "<string>",
"generation_status": "pending",
"generation_task_id": "<string>",
"generation_error": "<string>"
}
]
}
]
}
}Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Path Parameters
Response
Successful Response
Response for campaign validation.
Includes the full draft snapshot so the frontend can render RSA state alongside validation results without a separate fetch.
⌘I