/services/content_creator_insights_service.proto

--- v24/services/content_creator_insights_service.proto 2026-08-13 23:22:21.000000000 +0000
+++ v25/services/content_creator_insights_service.proto 2026-08-13 23:22:30.000000000 +0000
@@ -128,30 +129,15 @@
     // Optional. Creator attributes that describe a collection of types of
     // content. This is used to search for creators whose content matches the
     // input creator attributes. Only Knowledge Graph Entities tagged with
-    // [CREATOR_ATTRIBUTE][google.ads.googleads.v24.enums.InsightsKnowledgeGraphEntityCapabilitiesEnum.InsightsKnowledgeGraphEntityCapabilities.CREATOR_ATTRIBUTE]
+    // [CREATOR_ATTRIBUTE][google.ads.googleads.v25.enums.InsightsKnowledgeGraphEntityCapabilitiesEnum.InsightsKnowledgeGraphEntityCapabilities.CREATOR_ATTRIBUTE]
     // are supported. Use
-    // [AudienceInsightsService.ListAudienceInsightsAttributes][google.ads.googleads.v24.services.AudienceInsightsService.ListAudienceInsightsAttributes]
+    // [AudienceInsightsService.ListAudienceInsightsAttributes][google.ads.googleads.v25.services.AudienceInsightsService.ListAudienceInsightsAttributes]
     // to get the list of supported entities. Other attributes including
     // location are not supported.
-    repeated google.ads.googleads.v24.common.AudienceInsightsAttribute
+    repeated google.ads.googleads.v25.common.AudienceInsightsAttribute
         creator_attributes = 2 [(google.api.field_behavior) = OPTIONAL];
   }

-  // The brand used to search for top creators.
-  message SearchBrand {
-    // Optional. One or more Knowledge Graph Entities that represent the brand
-    // for which to find insights.
-    repeated google.ads.googleads.v24.common.AudienceInsightsAttribute
-        brand_entities = 1 [(google.api.field_behavior) = OPTIONAL];
-
-    // Optional. When true, we will expand the search to beyond just the
-    // entities specified in
-    // [brand_entities][google.ads.googleads.v24.services.GenerateCreatorInsightsRequest.SearchBrand.brand_entities]
-    // to other related knowledge graph entities similar to the brand. The
-    // default value is `false`.
-    bool include_related_topics = 2 [(google.api.field_behavior) = OPTIONAL];
-  }
-
   // A collection of YouTube Channels.
   message YouTubeChannels {
     // Optional. The YouTube Channel IDs to fetch creator insights for.
@@ -193,21 +179,14 @@
   oneof criteria {
     // The attributes used to identify top creators. Data fetched is based on
     // the list of countries or sub-country locations specified in
-    // [country_locations][google.ads.googleads.v24.services.GenerateCreatorInsightsRequest.country_locations]
+    // [country_locations][google.ads.googleads.v25.services.GenerateCreatorInsightsRequest.country_locations]
     // or
-    // [sub_country_locations][google.ads.googleads.v24.services.GenerateCreatorInsightsRequest.sub_country_locations].
+    // [sub_country_locations][google.ads.googleads.v25.services.GenerateCreatorInsightsRequest.sub_country_locations].
     SearchAttributes search_attributes = 3;

-    // A brand used to search for top creators. Data fetched is based on the
-    // list of countries specified in
-    // [country_locations][google.ads.googleads.v24.services.GenerateCreatorInsightsRequest.country_locations].This
-    // option is deprecated and will be removed in the V25 release. Use
-    // search_topics instead.
-    SearchBrand search_brand = 5;
-
     // YouTube Channel IDs for Creator Insights. Data fetched for channels is
     // based on the list of countries specified in
-    // [country_locations][google.ads.googleads.v24.services.GenerateCreatorInsightsRequest.country_locations].
+    // [country_locations][google.ads.googleads.v25.services.GenerateCreatorInsightsRequest.country_locations].
     YouTubeChannels search_channels = 4;

     // Search for relevant creators who make content about the specified topics.
@@ -382,11 +361,20 @@
   string publish_date = 13;

   // The country with which the channel is associated.
-  google.ads.googleads.v24.common.LocationInfo country_location = 14;
+  google.ads.googleads.v25.common.LocationInfo country_location = 14;

   // The metrics for a YouTube Channel.
   YouTubeMetrics channel_metrics = 3;

+  // True if the creator has consented to share non-public data.
+  // If false, non-public data fields will not be populated.
+  // Non-public data includes `YouTubeMetrics.average_view_per_video`,
+  // `YouTubeMetrics.average_likes_per_video`,
+  // `YouTubeMetrics.average_comments_per_video`,
+  // `YouTubeMetrics.engagement_rate`, and
+  // `YouTubeChannelInsights.channel_audience_attributes`.
+  bool data_sharing_consent_given = 18;
+
   // The types of audiences and demographics linked to the channel's main
   // audience. Audiences and demographics have a breakdown of subscriber share
   // across dimensions of the same value, such as Age Range, Gender, and User
@@ -482,9 +470,18 @@
   // search_topics.
   repeated TrendInsightDataPoint trend_data_points = 6;

+  // The brand sentiment for this topic.
+  // Only populated when all of the following are true:
+  //   - The trend request uses search_topics.
+  //   - The Knowledge graph entity topic has the Brand capability.
+  //   - Supplemental data
+  //   [BRAND_SENTIMENT_DATA][google.ads.googleads.v25.enums.ContentCreatorInsightsSupplementalDataEnum.ContentCreatorInsightsSupplementalData.BRAND_SENTIMENT_DATA]
+  //   is requested.
+  repeated BrandSentimentInsight brand_sentiment_insights = 7;
+
   // Related videos for this topic. Only populated for trends using
   // search_topics.
-  repeated google.ads.googleads.v24.common.AudienceInsightsAttributeMetadata
+  repeated google.ads.googleads.v25.common.AudienceInsightsAttributeMetadata
       related_videos = 4;

   // Related creators for this topic. Only populated for trends using
@@ -537,6 +534,57 @@
   TrendInsightMetrics trend_metrics = 2;
 }

+// Brand sentiment for a specific month. Measuring brand sentiment involves
+// using AI models to analyze YouTube video content related to the brand,
+// categorizing the sentiment as positive, negative, or neutral.
+// Only the video content itself is analyzed; user comments are not included.
+// The AI models are powered by Gemini and can make mistakes.
+message BrandSentimentInsight {
+  // The month that the brand sentiment represents in the string format
+  // "YYYY-MM".
+  string month = 1;
+
+  // When true, there is insufficient data to calculate the brand sentiment.
+  bool has_insufficient_data = 2;
+
+  // Distribution of sentiment between positive, negative, and neutral.
+  repeated SentimentInsightDistribution sentiment_distributions = 3;
+
+  // A summary of what was positive and negative about content related to the
+  // brand. No summaries are generated for neutral sentiment. The summary is
+  // generated by AI models.
+  repeated SentimentInsightSummary sentiment_summaries = 4;
+}
+
+// The distribution of sentiment for a brand. The distribution is calculated as
+// the proportion of views for videos that correspond to the brand with each
+// sentiment. Example: positive sentiment share of 0.49 means that 49% of views
+// about this brand were on content with positive sentiment.
+message SentimentInsightDistribution {
+  // The sentiment for this distribution.
+  google.ads.googleads.v25.enums.SentimentEnum.Sentiment sentiment = 1;
+
+  // The proportion (between 0 and 1) of views for videos that correspond to the
+  // brand with this sentiment.
+  double sentiment_share = 2;
+}
+
+// A summary of the sentiment for content related to a brand. Summaries are only
+// generated for positive and negative sentiment, not neutral. The summary is
+// generated by AI models.
+message SentimentInsightSummary {
+  // The sentiment for this summary.
+  google.ads.googleads.v25.enums.SentimentEnum.Sentiment sentiment = 1;
+
+  // A summary of what was positive or negative about content related to the
+  // brand.
+  string summary = 2;
+
+  // Sample videos that correspond to the sentiment.
+  repeated google.ads.googleads.v25.common.AudienceInsightsAttributeMetadata
+      sample_videos = 3;
+}
+
 // Languages that pertain to a YouTube channel based on the channel content.
 // Only languages above a certain proportion threshold are included.
 message LanguageDistribution {