@getlatedev/node 0.2.1158 → 0.2.1160

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1727,7 +1727,9 @@ export const handleOAuthCallback = <ThrowOnError extends boolean = false>(option
1727
1727
 
1728
1728
  /**
1729
1729
  * Connect ads for a platform
1730
- * Unified ads connection endpoint. Creates a dedicated ads SocialAccount for the specified platform.
1730
+ * Starts connecting a platform's ads account, giving you a dedicated ads connection to manage campaigns without touching posting accounts.
1731
+ *
1732
+ * Creates a dedicated ads SocialAccount for the specified platform.
1731
1733
  *
1732
1734
  * **Meta business login (opt-in).** Set `loginMode=business` for `facebook` or
1733
1735
  * `instagram` to use Facebook Login for Business and a Business Integration System User
@@ -1827,7 +1829,10 @@ export const connectAds = <ThrowOnError extends boolean = false>(options: Option
1827
1829
 
1828
1830
  /**
1829
1831
  * Complete Meta business login
1832
+ * Finishes a Meta business login after the user approves access, connects the Meta ads account and sends them back to your app.
1833
+ *
1830
1834
  * Facebook Login for Business redirect target. Meta supplies the single-use authorization code and the authenticated state returned by connectAds. The state expires after 30 minutes and binds the user, profile, Page selection and ad-account scope. No bearer token is sent by the browser. Success reconnects only metaads and redirects to the original redirect_url. Invalid state returns 400; inaccessible profiles or missing ads access cannot connect. Dashboard logins with several Pages redirect to the Facebook Page picker with an encrypted selectionToken valid for ten minutes. Listing and selecting require the initiating user and current profile access. No plaintext platform token is returned to the browser.
1835
+ *
1831
1836
  */
1832
1837
  export const completeMetaAdsBusinessLogin = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CompleteMetaAdsBusinessLoginData, ThrowOnError>) => {
1833
1838
  return (options?.client ?? client).get<void, unknown, ThrowOnError>({
@@ -1956,7 +1961,10 @@ export const configureTikTokAdsBrandIdentity = <ThrowOnError extends boolean = f
1956
1961
 
1957
1962
  /**
1958
1963
  * List Facebook pages
1959
- * Returns Facebook Pages after OAuth. Classic connections require profileId and tempToken from the OAuth redirect. Use X-Connect-Token for headless connections. The dashboard business-login picker instead sends only selectionToken, an encrypted grant valid for ten minutes. This requires the initiating user and current profile access and returns only Page IDs and names. X-Connect-Token cannot authorize business selection.
1964
+ * Lists the Facebook Pages a user can pick from after signing in, so they can choose which Page to connect.
1965
+ *
1966
+ * Classic connections require profileId and tempToken from the OAuth redirect. Use X-Connect-Token for headless connections. The dashboard business-login picker instead sends only selectionToken, an encrypted grant valid for ten minutes. This requires the initiating user and current profile access and returns only Page IDs and names. X-Connect-Token cannot authorize business selection.
1967
+ *
1960
1968
  */
1961
1969
  export const listFacebookPages = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<ListFacebookPagesData, ThrowOnError>) => {
1962
1970
  return (options?.client ?? client).get<ListFacebookPagesResponse, ListFacebookPagesError, ThrowOnError>({
@@ -1967,7 +1975,10 @@ export const listFacebookPages = <ThrowOnError extends boolean = false>(options?
1967
1975
 
1968
1976
  /**
1969
1977
  * Select Facebook page
1978
+ * Connects the Facebook Page the user picked after signing in, completing the Facebook or Meta Ads connection.
1979
+ *
1970
1980
  * Complete a classic Facebook Page connection with profileId, pageId, tempToken and userProfile. Use X-Connect-Token for headless connections. The dashboard business-login picker instead sends only selectionToken and pageId to complete a Meta Ads connection. The server verifies the initiating user, profile access, current grants and connection eligibility. The profile, platform token, ad-account scope and return URL come only from the encrypted grant. Business selection requires a session or bearer authentication for the initiating user; X-Connect-Token is not accepted. It returns redirect_url with connected=metaads on success or an eligibility error redirect.
1981
+ *
1971
1982
  */
1972
1983
  export const selectFacebookPage = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<SelectFacebookPageData, ThrowOnError>) => {
1973
1984
  return (options?.client ?? client).post<SelectFacebookPageResponse, SelectFacebookPageError, ThrowOnError>({
@@ -9468,6 +9479,8 @@ export const listCommentAutomationLogs = <ThrowOnError extends boolean = false>(
9468
9479
 
9469
9480
  /**
9470
9481
  * List ads
9482
+ * Lists your ads with their performance over a date range, including ads created directly in each platform's ads manager.
9483
+ *
9471
9484
  * Returns a paginated list of ads with metrics computed over an optional date range.
9472
9485
  * Use source=all to include externally-synced ads from platform ad managers.
9473
9486
  * If no date range is provided, defaults to the last 90 days. Date range is capped at 730 days max.
@@ -9488,6 +9501,8 @@ export const listAds = <ThrowOnError extends boolean = false>(options?: OptionsL
9488
9501
 
9489
9502
  /**
9490
9503
  * Google Ads search terms report
9504
+ * Shows the actual Google searches that triggered your ads, with spend and results, so you can spot wasted spend and add negative keywords.
9505
+ *
9491
9506
  * The actual search queries that triggered your ads, with matched-keyword
9492
9507
  * status and spend metrics, the raw material for wasted-spend analysis and
9493
9508
  * negative-keyword lists. Reads Google's `search_term_view`, cached for
@@ -9505,7 +9520,10 @@ export const getAdsSearchTerms = <ThrowOnError extends boolean = false>(options:
9505
9520
 
9506
9521
  /**
9507
9522
  * List Google Ads recommendations
9523
+ * Lists Google's optimization suggestions for an ad account, with the estimated impact of each.
9524
+ *
9508
9525
  * Google's optimization recommendations for one ad account: type, estimated impact (base vs potential metrics, cost in account currency units), the campaign, ad group or budget they target, and the type-specific payload Google returns (`details`, in Google's own shape with micros). Filter by campaignId and types. Cached for 10 minutes and cleared by apply or dismiss; served stale when Google quota is exhausted.
9526
+ *
9509
9527
  */
9510
9528
  export const listGoogleRecommendations = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListGoogleRecommendationsData, ThrowOnError>) => {
9511
9529
  return (options?.client ?? client).get<ListGoogleRecommendationsResponse, ListGoogleRecommendationsError, ThrowOnError>({
@@ -9516,7 +9534,10 @@ export const listGoogleRecommendations = <ThrowOnError extends boolean = false>(
9516
9534
 
9517
9535
  /**
9518
9536
  * Apply Google Ads recommendations
9537
+ * Applies Google's optimization suggestions to an ad account, using Google's values or your own; the changes cannot be undone.
9538
+ *
9519
9539
  * Apply up to 100 recommendations. This changes the account (budgets, bidding, keywords, assets) and is not reversible or idempotent; Google offers no validate-only mode for it. Items run in partial-failure mode, so one stale recommendation does not block the rest. `parameters` is optional and takes exactly one key named for the recommendation type, in Google's ApplyRecommendationOperation shape (for example `campaignBudget: { newBudgetAmountMicros }` or `keyword: { matchType, cpcBidMicros }`); omit it to apply Google's suggested values.
9540
+ *
9520
9541
  */
9521
9542
  export const applyGoogleRecommendations = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ApplyGoogleRecommendationsData, ThrowOnError>) => {
9522
9543
  return (options?.client ?? client).post<ApplyGoogleRecommendationsResponse, ApplyGoogleRecommendationsError, ThrowOnError>({
@@ -9527,7 +9548,10 @@ export const applyGoogleRecommendations = <ThrowOnError extends boolean = false>
9527
9548
 
9528
9549
  /**
9529
9550
  * Dismiss Google Ads recommendations
9551
+ * Dismisses Google optimization suggestions so Google stops showing them.
9552
+ *
9530
9553
  * Dismiss up to 100 recommendations so Google stops suggesting them. Items run in partial-failure mode.
9554
+ *
9531
9555
  */
9532
9556
  export const dismissGoogleRecommendations = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DismissGoogleRecommendationsData, ThrowOnError>) => {
9533
9557
  return (options?.client ?? client).post<DismissGoogleRecommendationsResponse, DismissGoogleRecommendationsError, ThrowOnError>({
@@ -9538,6 +9562,8 @@ export const dismissGoogleRecommendations = <ThrowOnError extends boolean = fals
9538
9562
 
9539
9563
  /**
9540
9564
  * List portfolio bid strategies
9565
+ * Lists a Google Ads account's shared bid strategies with how many campaigns use each and how they performed.
9566
+ *
9541
9567
  * Bidding strategy report: type, status, campaign count, clicks, cost, cost per conversion, impressions, average CPC and conversions over the date range (default last 30 days). Reads Google's `bidding_strategy` resource, cached for the quota window. Draws on the shared Google Ads operations budget. The response carries `cachedAt` and `stale`, set when a quota-exhausted call falls back to the last-good copy instead of a live read.
9542
9568
  */
9543
9569
  export const listBidStrategies = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListBidStrategiesData, ThrowOnError>) => {
@@ -9549,7 +9575,10 @@ export const listBidStrategies = <ThrowOnError extends boolean = false>(options:
9549
9575
 
9550
9576
  /**
9551
9577
  * Create portfolio bid strategy
9552
- * Creates a standalone bid strategy shared across campaigns. Attach it to a campaign with `portfolioBidStrategyId` on POST /v1/ads/create, PUT /v1/ads/campaigns/{campaignId}, or PUT /v1/ads/ad-sets/{adSetId}. Attaching a strategy aligned to a shared budget fails there with a 400 (Google's `BIDDING_STRATEGY_AND_BUDGET_MUST_BE_ALIGNED`); this is not retryable.
9578
+ * Creates a Google Ads bid strategy that several campaigns can share, such as one target CPA or ROAS.
9579
+ *
9580
+ * Attach it to a campaign with `portfolioBidStrategyId` on POST /v1/ads/create, PUT /v1/ads/campaigns/{campaignId}, or PUT /v1/ads/ad-sets/{adSetId}. Attaching a strategy aligned to a shared budget fails there with a 400 (Google's `BIDDING_STRATEGY_AND_BUDGET_MUST_BE_ALIGNED`); this is not retryable.
9581
+ *
9553
9582
  */
9554
9583
  export const createBidStrategy = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateBidStrategyData, ThrowOnError>) => {
9555
9584
  return (options?.client ?? client).post<CreateBidStrategyResponse, CreateBidStrategyError, ThrowOnError>({
@@ -9560,7 +9589,10 @@ export const createBidStrategy = <ThrowOnError extends boolean = false>(options:
9560
9589
 
9561
9590
  /**
9562
9591
  * Update portfolio bid strategy
9563
- * Renames or retargets a portfolio bid strategy. The strategy's status is output only on Google's side, so it cannot be changed here; remove a strategy in Google Ads. `type` is only needed alongside `targetCpa`/`targetRoas` to disambiguate the field Google writes to (TARGET_CPA and MAXIMIZE_CONVERSIONS both take a target CPA; TARGET_ROAS and MAXIMIZE_CONVERSION_VALUE both take a target ROAS); the strategy's family is otherwise immutable once created.
9592
+ * Renames a shared Google Ads bid strategy or changes its target CPA or ROAS.
9593
+ *
9594
+ * The strategy's status is output only on Google's side, so it cannot be changed here; remove a strategy in Google Ads. `type` is only needed alongside `targetCpa`/`targetRoas` to disambiguate the field Google writes to (TARGET_CPA and MAXIMIZE_CONVERSIONS both take a target CPA; TARGET_ROAS and MAXIMIZE_CONVERSION_VALUE both take a target ROAS); the strategy's family is otherwise immutable once created.
9595
+ *
9564
9596
  */
9565
9597
  export const updateBidStrategy = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateBidStrategyData, ThrowOnError>) => {
9566
9598
  return (options?.client ?? client).patch<UpdateBidStrategyResponse, UpdateBidStrategyError, ThrowOnError>({
@@ -9571,6 +9603,8 @@ export const updateBidStrategy = <ThrowOnError extends boolean = false>(options:
9571
9603
 
9572
9604
  /**
9573
9605
  * List shared budgets
9606
+ * Lists a Google Ads account's shared budgets and how many campaigns draw from each.
9607
+ *
9574
9608
  * Lists the Google Ads customer's shared campaign budgets (`campaign_budget.explicitly_shared`
9575
9609
  * = true, not removed), with how many campaigns use each. Move a campaign onto one with
9576
9610
  * `sharedBudgetId` on PUT /v1/ads/campaigns/{campaignId}. Google only; other platforms return 501.
@@ -9585,6 +9619,8 @@ export const listSharedBudgets = <ThrowOnError extends boolean = false>(options:
9585
9619
 
9586
9620
  /**
9587
9621
  * Create a shared budget
9622
+ * Creates a daily Google Ads budget that several campaigns can share.
9623
+ *
9588
9624
  * Creates a daily shared campaign budget (`explicitly_shared: true`, standard delivery) that
9589
9625
  * several campaigns can draw from. A lifetime budget returns 422, like every Google budget.
9590
9626
  * Google refuses some bidding strategies on a shared budget; that error surfaces when a
@@ -9600,6 +9636,8 @@ export const createSharedBudget = <ThrowOnError extends boolean = false>(options
9600
9636
 
9601
9637
  /**
9602
9638
  * Google Local Services Ads leads
9639
+ * Lists the calls, messages and bookings your Google Local Services Ads generated, newest first.
9640
+ *
9603
9641
  * Leads generated by Local Services Ads (phone calls, messages, bookings),
9604
9642
  * read live from Google's `local_services_lead` resource, newest first.
9605
9643
  * No persistence: Google is the source of truth and lead/credit statuses
@@ -9616,6 +9654,8 @@ export const listLocalServicesLeads = <ThrowOnError extends boolean = false>(opt
9616
9654
 
9617
9655
  /**
9618
9656
  * List lead conversations
9657
+ * Shows the calls (with recordings) and messages exchanged with one Google Local Services lead, oldest first.
9658
+ *
9619
9659
  * Conversation entries of one Local Services lead: phone calls (duration,
9620
9660
  * recording URL) and messages (text, attachment URLs), oldest first. Read
9621
9661
  * live from `local_services_lead_conversation`, always scoped to a single
@@ -9631,6 +9671,8 @@ export const listLocalServicesLeadConversations = <ThrowOnError extends boolean
9631
9671
 
9632
9672
  /**
9633
9673
  * List Search keywords
9674
+ * Lists the keywords and negative keywords in your Google Search ad groups.
9675
+ *
9634
9676
  * Returns the Google Search keyword criteria (positive and negative) synced from
9635
9677
  * connected Google Ads accounts, one row per ad-group keyword. Refreshed about
9636
9678
  * once a day per Google Ads customer (the keyword sweep rides the ads discovery
@@ -9651,6 +9693,8 @@ export const listAdKeywords = <ThrowOnError extends boolean = false>(options?: O
9651
9693
 
9652
9694
  /**
9653
9695
  * Add Search ad-group keywords
9696
+ * Adds keywords, or negative keywords, to a Google Search ad group without replacing the ones already there.
9697
+ *
9654
9698
  * Adds one or more keyword criteria to an existing Google Search ad group,
9655
9699
  * without touching the keywords already there (unlike the whole-set diff on
9656
9700
  * `PUT /v1/ads/{adId}`, `keywords`/`negativeKeywords` in `platformSpecificData`,
@@ -9667,6 +9711,8 @@ export const addAdKeywords = <ThrowOnError extends boolean = false>(options: Opt
9667
9711
 
9668
9712
  /**
9669
9713
  * Pause or enable a Search keyword
9714
+ * Pauses or re-enables a single Google Search keyword.
9715
+ *
9670
9716
  * Changes `ad_group_criterion.status` for one keyword criterion (M.140).
9671
9717
  * Negative keywords have no status on Google and cannot be paused or enabled.
9672
9718
  *
@@ -9680,7 +9726,10 @@ export const updateAdKeyword = <ThrowOnError extends boolean = false>(options: O
9680
9726
 
9681
9727
  /**
9682
9728
  * Remove a Search keyword
9729
+ * Removes a single keyword or negative keyword from a Google Search ad group.
9730
+ *
9683
9731
  * Removes one keyword criterion (positive or negative) from its ad group (M.140).
9732
+ *
9684
9733
  */
9685
9734
  export const removeAdKeyword = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RemoveAdKeywordData, ThrowOnError>) => {
9686
9735
  return (options?.client ?? client).delete<RemoveAdKeywordResponse, RemoveAdKeywordError, ThrowOnError>({
@@ -9691,6 +9740,8 @@ export const removeAdKeyword = <ThrowOnError extends boolean = false>(options: O
9691
9740
 
9692
9741
  /**
9693
9742
  * List campaigns
9743
+ * Lists your campaigns with spend, impressions and clicks summed across their ads, plus each campaign's status and budget.
9744
+ *
9694
9745
  * Returns campaigns as virtual aggregations over ad documents grouped by platform campaign ID.
9695
9746
  * Metrics (spend, impressions, clicks, etc.) are summed across all ads in each campaign.
9696
9747
  * Campaign status is derived from child ad statuses (active > pending_review > paused > error > completed > cancelled > rejected).
@@ -9723,6 +9774,8 @@ export const listAdCampaigns = <ThrowOnError extends boolean = false>(options?:
9723
9774
 
9724
9775
  /**
9725
9776
  * Create a standalone campaign
9777
+ * Creates an empty campaign, paused, so you can add ad sets and ads to it afterwards.
9778
+ *
9726
9779
  * Creates a campaign WITHOUT its first ad set / ad, on the platform of the given
9727
9780
  * `accountId`. Ad sets join it later via `existingCampaignId` on the create endpoints.
9728
9781
  * Platform notes: on Meta a budget here is campaign-level (CBO) by definition; omit it
@@ -9747,6 +9800,8 @@ export const createAdCampaign = <ThrowOnError extends boolean = false>(options:
9747
9800
 
9748
9801
  /**
9749
9802
  * Pause or resume a campaign
9803
+ * Pauses or resumes a campaign, leaving the on/off switches of its ad sets and ads as they are.
9804
+ *
9750
9805
  * Writes the campaign's own on/off switch and nothing else, on every platform (Meta, TikTok,
9751
9806
  * Google, LinkedIn campaign group, Pinterest, X, ChatGPT (OpenAI)). Its ad sets and ads keep
9752
9807
  * their own switches: pausing stops their delivery through the campaign, and resuming lets
@@ -9773,6 +9828,8 @@ export const updateAdCampaignStatus = <ThrowOnError extends boolean = false>(opt
9773
9828
 
9774
9829
  /**
9775
9830
  * Read a campaign's ad schedule (dayparting)
9831
+ * Shows the days and hours a Google campaign runs and its bid adjustments, optionally with performance by day and hour.
9832
+ *
9776
9833
  * The windows a Google campaign serves in, with the bid modifier on each, plus the
9777
9834
  * criterion ids Google minted for them.
9778
9835
  *
@@ -9797,7 +9854,9 @@ export const getCampaignAdSchedule = <ThrowOnError extends boolean = false>(opti
9797
9854
 
9798
9855
  /**
9799
9856
  * Replace a campaign's ad schedule (dayparting)
9800
- * Replaces the campaign's whole ad schedule with the windows you send. This is a
9857
+ * Replaces the days and hours a Google campaign runs, or clears them so it serves around the clock.
9858
+ *
9859
+ * This is a
9801
9860
  * REPLACE, not a merge: windows you leave out stop serving.
9802
9861
  *
9803
9862
  * Send `schedule: []` to clear dayparting, which returns the campaign to serving around
@@ -9826,6 +9885,8 @@ export const updateCampaignAdSchedule = <ThrowOnError extends boolean = false>(o
9826
9885
 
9827
9886
  /**
9828
9887
  * Read a campaign's current bidding
9888
+ * Shows a Google campaign's current bidding strategy and targets, ready to prefill an edit.
9889
+ *
9829
9890
  * Read of the campaign's bidding strategy on Google, cached for the quota window, for
9830
9891
  * pre-filling the bid strategy block before a PUT to /v1/ads/campaigns/{campaignId}.
9831
9892
  * Google Ads only; `platform` is required and rejected when it is anything else, since
@@ -9850,6 +9911,8 @@ export const getCampaignBidding = <ThrowOnError extends boolean = false>(options
9850
9911
 
9851
9912
  /**
9852
9913
  * Get live campaign details
9914
+ * Shows a Meta campaign's current settings straight from Meta, such as its objective, budget, bid strategy, schedule and delivery issues.
9915
+ *
9853
9916
  * Reads one campaign live from Meta, returned verbatim, so a caller that knows a
9854
9917
  * campaign id no longer has to page `GET /v1/ads/campaigns` to find it. The default
9855
9918
  * projection covers name, status, objective, buying type, bid strategy, budgets,
@@ -9866,7 +9929,9 @@ export const getAdCampaignDetails = <ThrowOnError extends boolean = false>(optio
9866
9929
 
9867
9930
  /**
9868
9931
  * Update a campaign
9869
- * Campaign-level edits. Send at least one of `budget`, `bidStrategy`,
9932
+ * Changes a campaign's settings, such as its name, budget, bidding or tracking URLs.
9933
+ *
9934
+ * Send at least one of `budget`, `bidStrategy`,
9870
9935
  * `portfolioBidStrategyId`, `targetImpressionShare`, `manualCpc`, `networkSettings`,
9871
9936
  * `trackingUrlTemplate`, `finalUrlSuffix`, `sharedBudgetId`, `name` or `platformSpecificData`. An unsupported
9872
9937
  * field is always an error, never a silent drop.
@@ -9936,8 +10001,9 @@ export const updateAdCampaign = <ThrowOnError extends boolean = false>(options:
9936
10001
 
9937
10002
  /**
9938
10003
  * Delete a campaign
9939
- * Deletes the whole campaign on the platform, cascading to its ad sets
9940
- * and ads. Locally, all Ad documents for this campaign are marked
10004
+ * Deletes a campaign along with all of its ad sets and ads, including a campaign that never got any ads.
10005
+ *
10006
+ * Locally, all Ad documents for this campaign are marked
9941
10007
  * `status: cancelled`.
9942
10008
  *
9943
10009
  * **Empty campaigns.** A campaign with zero ads has no local Ad documents
@@ -9958,6 +10024,8 @@ export const deleteAdCampaign = <ThrowOnError extends boolean = false>(options:
9958
10024
 
9959
10025
  /**
9960
10026
  * List campaign-level negative keywords
10027
+ * Lists the negative keywords set on a whole Google campaign, separate from ad group negatives.
10028
+ *
9961
10029
  * Returns the campaign-level negative keywords (`campaign_criterion.negative`),
9962
10030
  * distinct from the ad-group-level negatives under `GET /v1/ads/keywords`. Cached
9963
10031
  * for the quota window (not synced to Postgres), and gated by the shared Google
@@ -9978,6 +10046,8 @@ export const listCampaignNegativeKeywords = <ThrowOnError extends boolean = fals
9978
10046
 
9979
10047
  /**
9980
10048
  * Replace campaign-level negative keywords
10049
+ * Replaces a Google campaign's full list of campaign-level negative keywords, or clears it.
10050
+ *
9981
10051
  * Replaces the FULL set of campaign-level negative keywords (C.270): the desired
9982
10052
  * list is diffed against what Google already has, and the difference is applied
9983
10053
  * as one `create`/`remove` mutate. Send an empty array to clear every campaign
@@ -9996,7 +10066,9 @@ export const replaceCampaignNegativeKeywords = <ThrowOnError extends boolean = f
9996
10066
 
9997
10067
  /**
9998
10068
  * Pause or resume many campaigns
9999
- * Process up to 50 campaigns in one call. Each campaign is updated
10069
+ * Pauses or resumes up to 50 campaigns in one call, with a separate result per campaign so one failure does not block the rest.
10070
+ *
10071
+ * Each campaign is updated
10000
10072
  * concurrently and the response contains a per-campaign result so a
10001
10073
  * single bad row does not fail the whole batch. Each campaign is read,
10002
10074
  * written and re-read exactly as PUT /v1/ads/campaigns/{campaignId}/status
@@ -10013,6 +10085,8 @@ export const bulkUpdateAdCampaignStatus = <ThrowOnError extends boolean = false>
10013
10085
 
10014
10086
  /**
10015
10087
  * Duplicate a campaign
10088
+ * Copies a campaign with its ad sets, ads, creatives and targeting, created paused so you can review it before launch.
10089
+ *
10016
10090
  * Duplicates a campaign, including its ad sets, ads, creatives, and
10017
10091
  * targeting by default (`deepCopy: true`). The copy is created paused
10018
10092
  * so callers can review before launching.
@@ -10053,6 +10127,8 @@ export const duplicateAdCampaign = <ThrowOnError extends boolean = false>(option
10053
10127
 
10054
10128
  /**
10055
10129
  * Read a Google campaign's device, location, excluded location, and language targeting
10130
+ * Shows a Google campaign's device, location, excluded location and language targeting so you can build an editor for it.
10131
+ *
10056
10132
  * Google Ads compliance requires geo, language, budget, and bidding targeting
10057
10133
  * set at creation to stay editable afterwards; this reads the campaign state
10058
10134
  * so an integrator can build an editor around it. Cached for the quota window
@@ -10080,6 +10156,8 @@ export const getCampaignTargeting = <ThrowOnError extends boolean = false>(optio
10080
10156
 
10081
10157
  /**
10082
10158
  * Edit a Google campaign's device, location, excluded location, or language targeting
10159
+ * Changes a Google campaign's device, location, excluded location or language targeting after it was created.
10160
+ *
10083
10161
  * Google Ads compliance row M.10: geo and language targeting set at
10084
10162
  * creation must stay editable afterwards. Send at least one of `devices`,
10085
10163
  * `locations`, `excludedLocations`, `languages`, `locationTargetingType`; each provided field REPLACES that field's
@@ -10141,6 +10219,8 @@ export const updateCampaignTargeting = <ThrowOnError extends boolean = false>(op
10141
10219
 
10142
10220
  /**
10143
10221
  * List ad sets
10222
+ * Lists ad sets (ad groups on Google) with their targeting, bidding and optimization settings, optionally for one campaign.
10223
+ *
10144
10224
  * Ad sets (Google ad groups) synced for the connection, optionally
10145
10225
  * filtered by platform and campaignId. Reads the `ad_sets` table
10146
10226
  * directly, independent of the `ads` rollup GET /v1/ads/tree uses, so a
@@ -10188,6 +10268,8 @@ export const listAdSets = <ThrowOnError extends boolean = false>(options?: Optio
10188
10268
 
10189
10269
  /**
10190
10270
  * Create a standalone ad group
10271
+ * Creates an empty Google ad group under an existing campaign, ready for ads to be added later.
10272
+ *
10191
10273
  * Google Ads compliance row C.190: creates an ad group WITHOUT an ad,
10192
10274
  * under an existing campaign. Ads join it later via `adSetId`
10193
10275
  * on POST /v1/ads/create. Google only; every other platform returns 501.
@@ -10208,7 +10290,9 @@ export const createAdSet = <ThrowOnError extends boolean = false>(options: Optio
10208
10290
 
10209
10291
  /**
10210
10292
  * Duplicate an ad set
10211
- * Duplicates an ad set. The copy is created paused so callers can review before launching.
10293
+ * Copies an ad set, optionally with its ads and into another campaign, created paused so you can review it before launch.
10294
+ *
10295
+ * The copy is created paused so callers can review before launching.
10212
10296
  * `campaignId` retargets the copy into another campaign; omitted = the source's own campaign.
10213
10297
  *
10214
10298
  * Meta: ads and creatives are included by default (`deepCopy: true`) via Meta's native
@@ -10219,6 +10303,7 @@ export const createAdSet = <ThrowOnError extends boolean = false>(options: Optio
10219
10303
  * budget and schedule (start reset to now); `deepCopy: true` recreates its ads too (default
10220
10304
  * false). `startTime`, `endTime` and `renameStrategy` are ignored and `statusOption` must be
10221
10305
  * PAUSED or absent. The copy appears on the next discovery sync.
10306
+ *
10222
10307
  */
10223
10308
  export const duplicateAdSet = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DuplicateAdSetData, ThrowOnError>) => {
10224
10309
  return (options?.client ?? client).post<DuplicateAdSetResponse, DuplicateAdSetError, ThrowOnError>({
@@ -10229,6 +10314,8 @@ export const duplicateAdSet = <ThrowOnError extends boolean = false>(options: Op
10229
10314
 
10230
10315
  /**
10231
10316
  * Duplicate an ad
10317
+ * Copies a single Meta ad, optionally into another ad set, created paused so you can review it before launch.
10318
+ *
10232
10319
  * Duplicates a single ad via Meta's native `POST /{ad-id}/copies`. The copy is created
10233
10320
  * paused. `adSetId` retargets the copy into another ad set; omitted = the source's own ad
10234
10321
  * set. Accepts the Zernio ad id or the platform ad id. Sync discovery is triggered
@@ -10249,6 +10336,8 @@ export const duplicateAd = <ThrowOnError extends boolean = false>(options: Optio
10249
10336
 
10250
10337
  /**
10251
10338
  * Get live ad-set details
10339
+ * Shows a Meta ad set's current settings straight from Meta, including its learning phase, budget, schedule and targeting.
10340
+ *
10252
10341
  * Reads the ad set live from Meta, returned verbatim. The default projection includes
10253
10342
  * `learning_stage_info` (learning-phase status: LEARNING / SUCCESS / FAIL / WAIVING; Meta
10254
10343
  * omits its `status` key on paused ad sets), delivery settings, budgets, schedule and
@@ -10264,7 +10353,9 @@ export const getAdSetDetails = <ThrowOnError extends boolean = false>(options: O
10264
10353
 
10265
10354
  /**
10266
10355
  * Update an ad set
10267
- * Ad-set-level writes. Use this for ABO budget updates, ad-set-scoped
10356
+ * Changes an ad set's settings, such as its budget, bid strategy, status or delivery options.
10357
+ *
10358
+ * Use this for ABO budget updates, ad-set-scoped
10268
10359
  * pause/resume, bid-strategy edits, Meta value-rule-set attach/detach, and
10269
10360
  * Meta-only post-launch delivery settings via `platformSpecificData`. At
10270
10361
  * least one updatable field is required.
@@ -10317,8 +10408,9 @@ export const updateAdSet = <ThrowOnError extends boolean = false>(options: Optio
10317
10408
 
10318
10409
  /**
10319
10410
  * Delete an ad set
10320
- * Deletes the ad set on the platform, cascading to its ads only (never the
10321
- * campaign). Locally, every Ad document under the ad set is marked
10411
+ * Deletes an ad set and its ads while keeping the campaign, archiving it instead on platforms without a hard delete.
10412
+ *
10413
+ * Locally, every Ad document under the ad set is marked
10322
10414
  * `status: cancelled`.
10323
10415
  *
10324
10416
  * Delete is soft on platforms that have no hard delete: LinkedIn moves the
@@ -10336,7 +10428,9 @@ export const deleteAdSet = <ThrowOnError extends boolean = false>(options: Optio
10336
10428
 
10337
10429
  /**
10338
10430
  * Pause or resume a single ad set
10339
- * Ad-set-scoped pause/resume (doesn't touch sibling ad sets). Thin wrapper
10431
+ * Pauses or resumes one ad set without touching its campaign, its sibling ad sets or the switches of its ads.
10432
+ *
10433
+ * Thin wrapper
10340
10434
  * over PUT /v1/ads/ad-sets/{adSetId} for callers that only want the
10341
10435
  * status toggle and prefer a symmetric URL to
10342
10436
  * /v1/ads/campaigns/{campaignId}/status.
@@ -10371,7 +10465,8 @@ export const updateAdSetStatus = <ThrowOnError extends boolean = false>(options:
10371
10465
 
10372
10466
  /**
10373
10467
  * Get campaign tree
10374
- * Returns a nested Campaign > Ad Set > Ad hierarchy with rolled-up metrics at each level.
10468
+ * Shows your campaigns with their ad sets and ads nested inside, with spend and results rolled up at every level.
10469
+ *
10375
10470
  * Uses a two-stage aggregation: ads are grouped into ad sets, then ad sets into campaigns.
10376
10471
  * Metrics are computed over an optional date range, then rolled up from ad level to ad set
10377
10472
  * and campaign levels. Pagination is at the campaign level. Ads without a campaign or ad set
@@ -10399,6 +10494,8 @@ export const getAdTree = <ThrowOnError extends boolean = false>(options?: Option
10399
10494
 
10400
10495
  /**
10401
10496
  * Get daily account metrics
10497
+ * Returns an ads account's spend, results and other metrics day by day, ready for a daily performance chart.
10498
+ *
10402
10499
  * Returns daily aggregate metrics across all ads in a SocialAccount as a single
10403
10500
  * time series, one row per calendar day in the requested range. Use this for
10404
10501
  * dashboards that draw a daily-spend or daily-conversions chart, instead of
@@ -10425,7 +10522,8 @@ export const getAdsTimeline = <ThrowOnError extends boolean = false>(options: Op
10425
10522
 
10426
10523
  /**
10427
10524
  * Get ad details
10428
- * Returns an ad with its creative, targeting, status, and performance metrics.
10525
+ * Shows one ad with its creative, targeting, status and performance metrics.
10526
+ *
10429
10527
  * Google Search ads include current creative.headlines, creative.descriptions and creative.finalUrls,
10430
10528
  * preserving pinnedField. Top-level cachedAt and stale report cache freshness. Google mutations invalidate this read.
10431
10529
  * RSA enrichment requires a stored advertisingChannelType of SEARCH. Ads with an unknown or other channel
@@ -10464,6 +10562,8 @@ export const getAd = <ThrowOnError extends boolean = false>(options: OptionsLega
10464
10562
 
10465
10563
  /**
10466
10564
  * Update ad
10565
+ * Changes an ad's status, budget, targeting or creative and applies the change on the platform.
10566
+ *
10467
10567
  * Patch one or more fields on an ad. Status, budget, targeting, and creative changes
10468
10568
  * are propagated to the platform.
10469
10569
  *
@@ -10566,6 +10666,8 @@ export const updateAd = <ThrowOnError extends boolean = false>(options: OptionsL
10566
10666
 
10567
10667
  /**
10568
10668
  * Cancel an ad
10669
+ * Deletes an ad on the platform while keeping its history, and removes empty parents only when they were created through this API.
10670
+ *
10569
10671
  * Deletes the ad on the platform and marks it as cancelled in the database. The ad is preserved for history. OpenAI Ads has no delete API; the ad is archived instead (a terminal state, the closest equivalent).
10570
10672
  *
10571
10673
  * Only the ad is deleted; a campaign or ad set is never deleted while it still holds another ad. On Meta, when the ad set and campaign were created by Zernio (by `POST /v1/ads/create` or `POST /v1/ads/boost`) and Meta lists no other ad in the ad set (archived ads count), the emptied ad set is deleted too, then the campaign once it holds no other ad set. Parents created outside Zernio, and the parents of an ad imported from the platform, are always kept. On LinkedIn the ad is a creative inside a campaign inside a campaign group: the creative is always removed, the campaign only when Zernio created it and LinkedIn lists no other creative in it that is not archived, canceled or deleted, and the campaign group only when Zernio created it and LinkedIn lists no other campaign in it that is not canceled or deleted (archived campaigns count). If the creative itself cannot be removed the request fails and no parent is touched. To delete a whole campaign on purpose use `DELETE /v1/ads/campaigns/{campaignId}`.
@@ -10580,6 +10682,8 @@ export const deleteAd = <ThrowOnError extends boolean = false>(options: OptionsL
10580
10682
 
10581
10683
  /**
10582
10684
  * Pause or resume a single ad
10685
+ * Pauses or resumes a single ad without touching its ad set, campaign or sibling ads.
10686
+ *
10583
10687
  * Ad-scoped pause/resume: flips ONLY this ad's own switch (Meta
10584
10688
  * `configured_status`, TikTok `operation_status`, Google ad group ad
10585
10689
  * status, LinkedIn creative, Pinterest ad), never its parent ad set or
@@ -10616,7 +10720,10 @@ export const updateAdStatus = <ThrowOnError extends boolean = false>(options: Op
10616
10720
 
10617
10721
  /**
10618
10722
  * List campaign assets
10619
- * Lists directly attached Google assets. Fresh reads are cached for 10 minutes; exhausted quota may return the last successful read with stale=true. Inherited assets are not included.
10723
+ * Lists the sitelinks, callouts and other assets attached directly to a Google campaign.
10724
+ *
10725
+ * Fresh reads are cached for 10 minutes; exhausted quota may return the last successful read with stale=true. Inherited assets are not included.
10726
+ *
10620
10727
  */
10621
10728
  export const listCampaignAssets = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListCampaignAssetsData, ThrowOnError>) => {
10622
10729
  return (options?.client ?? client).get<ListCampaignAssetsResponse, ListCampaignAssetsError, ThrowOnError>({
@@ -10627,7 +10734,10 @@ export const listCampaignAssets = <ThrowOnError extends boolean = false>(options
10627
10734
 
10628
10735
  /**
10629
10736
  * Attach campaign assets
10737
+ * Adds sitelinks, callouts, structured snippets and images to a Google campaign in one step.
10738
+ *
10630
10739
  * Creates and attaches sitelinks, callouts, structured snippets and image assets in one Google mutation. Google shows images only on accounts it deems eligible (account age, policy history, vertical).
10740
+ *
10631
10741
  */
10632
10742
  export const attachCampaignAssets = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<AttachCampaignAssetsData, ThrowOnError>) => {
10633
10743
  return (options?.client ?? client).post<AttachCampaignAssetsResponse, AttachCampaignAssetsError, ThrowOnError>({
@@ -10638,7 +10748,10 @@ export const attachCampaignAssets = <ThrowOnError extends boolean = false>(optio
10638
10748
 
10639
10749
  /**
10640
10750
  * Update campaign assets
10641
- * Edits existing Google assets in place. Send updates with assetResourceName and the fields to change. An asset is shared: changes affect every attachment using it. Omitted fields stay unchanged. The operation consumes the Google operations budget and invalidates affected cached lists.
10751
+ * Edits a Google campaign's existing assets, such as sitelinks or callouts, in place; the change applies everywhere that asset is used.
10752
+ *
10753
+ * Send updates with assetResourceName and the fields to change. An asset is shared: changes affect every attachment using it. Omitted fields stay unchanged. The operation consumes the Google operations budget and invalidates affected cached lists.
10754
+ *
10642
10755
  */
10643
10756
  export const updateCampaignAssets = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateCampaignAssetsData, ThrowOnError>) => {
10644
10757
  return (options?.client ?? client).put<UpdateCampaignAssetsResponse, UpdateCampaignAssetsError, ThrowOnError>({
@@ -10649,7 +10762,10 @@ export const updateCampaignAssets = <ThrowOnError extends boolean = false>(optio
10649
10762
 
10650
10763
  /**
10651
10764
  * Remove campaign assets
10652
- * Removes the specified attachments only. Google assets cannot be deleted. Other attachments remain. assetResourceNames is retained for compatibility. Fields go in the query string. A JSON body with the same fields is also accepted and, when sent, the query string is ignored.
10765
+ * Detaches assets from a Google campaign without deleting them, so they stay in the account and on anything else they are attached to.
10766
+ *
10767
+ * Google assets cannot be deleted. Other attachments remain. assetResourceNames is retained for compatibility. Fields go in the query string. A JSON body with the same fields is also accepted and, when sent, the query string is ignored.
10768
+ *
10653
10769
  */
10654
10770
  export const removeCampaignAssets = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RemoveCampaignAssetsData, ThrowOnError>) => {
10655
10771
  return (options?.client ?? client).delete<RemoveCampaignAssetsResponse, RemoveCampaignAssetsError, ThrowOnError>({
@@ -10660,7 +10776,10 @@ export const removeCampaignAssets = <ThrowOnError extends boolean = false>(optio
10660
10776
 
10661
10777
  /**
10662
10778
  * List ad-group assets
10663
- * Lists directly attached Google assets. Fresh reads are cached for 10 minutes; exhausted quota may return the last successful read with stale=true. Inherited assets are not included.
10779
+ * Lists the sitelinks, callouts, snippets and images attached directly to a Google ad group, not those inherited from the campaign or account.
10780
+ *
10781
+ * Fresh reads are cached for 10 minutes; exhausted quota may return the last successful read with stale=true. Inherited assets are not included.
10782
+ *
10664
10783
  */
10665
10784
  export const listAdGroupAssets = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListAdGroupAssetsData, ThrowOnError>) => {
10666
10785
  return (options?.client ?? client).get<ListAdGroupAssetsResponse, ListAdGroupAssetsError, ThrowOnError>({
@@ -10671,7 +10790,10 @@ export const listAdGroupAssets = <ThrowOnError extends boolean = false>(options:
10671
10790
 
10672
10791
  /**
10673
10792
  * Attach ad-group assets
10793
+ * Creates sitelinks, callouts, structured snippets or image assets and attaches them to a Google ad group in one step.
10794
+ *
10674
10795
  * Creates and attaches sitelinks, callouts, structured snippets and image assets in one Google mutation. Google shows images only on accounts it deems eligible (account age, policy history, vertical).
10796
+ *
10675
10797
  */
10676
10798
  export const attachAdGroupAssets = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<AttachAdGroupAssetsData, ThrowOnError>) => {
10677
10799
  return (options?.client ?? client).post<AttachAdGroupAssetsResponse, AttachAdGroupAssetsError, ThrowOnError>({
@@ -10682,7 +10804,10 @@ export const attachAdGroupAssets = <ThrowOnError extends boolean = false>(option
10682
10804
 
10683
10805
  /**
10684
10806
  * Update ad-group assets
10685
- * Edits existing Google assets in place. Send updates with assetResourceName and the fields to change. An asset is shared: changes affect every attachment using it. Omitted fields stay unchanged. The operation consumes the Google operations budget and invalidates affected cached lists.
10807
+ * Edits a Google ad group's existing assets in place; the change applies everywhere that asset is used.
10808
+ *
10809
+ * Send updates with assetResourceName and the fields to change. An asset is shared: changes affect every attachment using it. Omitted fields stay unchanged. The operation consumes the Google operations budget and invalidates affected cached lists.
10810
+ *
10686
10811
  */
10687
10812
  export const updateAdGroupAssets = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateAdGroupAssetsData, ThrowOnError>) => {
10688
10813
  return (options?.client ?? client).put<UpdateAdGroupAssetsResponse, UpdateAdGroupAssetsError, ThrowOnError>({
@@ -10693,7 +10818,10 @@ export const updateAdGroupAssets = <ThrowOnError extends boolean = false>(option
10693
10818
 
10694
10819
  /**
10695
10820
  * Remove ad-group assets
10696
- * Removes the specified attachments only. Google assets cannot be deleted. Other attachments remain. assetResourceNames is retained for compatibility. Fields go in the query string. A JSON body with the same fields is also accepted and, when sent, the query string is ignored.
10821
+ * Detaches assets from a Google ad group without deleting them, so they stay in the account and on anything else they are attached to.
10822
+ *
10823
+ * Google assets cannot be deleted. Other attachments remain. assetResourceNames is retained for compatibility. Fields go in the query string. A JSON body with the same fields is also accepted and, when sent, the query string is ignored.
10824
+ *
10697
10825
  */
10698
10826
  export const removeAdGroupAssets = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RemoveAdGroupAssetsData, ThrowOnError>) => {
10699
10827
  return (options?.client ?? client).delete<RemoveAdGroupAssetsResponse, RemoveAdGroupAssetsError, ThrowOnError>({
@@ -10704,6 +10832,8 @@ export const removeAdGroupAssets = <ThrowOnError extends boolean = false>(option
10704
10832
 
10705
10833
  /**
10706
10834
  * Get campaign analytics
10835
+ * Returns a campaign's performance summary and daily timeline, with optional breakdowns by age, gender and other audience dimensions.
10836
+ *
10707
10837
  * Returns performance analytics for a whole campaign in one call: summary metrics, a daily
10708
10838
  * timeline over the requested date range (summed across the campaign's ads), and optional
10709
10839
  * demographic breakdowns. Breakdowns are fetched live from Meta at the campaign level (one call
@@ -10727,6 +10857,8 @@ export const getCampaignAnalytics = <ThrowOnError extends boolean = false>(optio
10727
10857
 
10728
10858
  /**
10729
10859
  * Render pre-create ad previews
10860
+ * Shows how a Meta creative will look in each placement before you create the ad, as embeddable previews.
10861
+ *
10730
10862
  * Renders how a creative would look per placement BEFORE any ad exists, via Meta's
10731
10863
  * `/generatepreviews`. Provide exactly one creative source: `existingCreativeId` or `creativeSpec`.
10732
10864
  * Each preview is an HTML `<iframe>` snippet embeddable directly. Unknown `formats` values
@@ -10742,6 +10874,8 @@ export const generateAdPreviews = <ThrowOnError extends boolean = false>(options
10742
10874
 
10743
10875
  /**
10744
10876
  * Render previews of an existing ad
10877
+ * Shows how an existing Meta ad looks in each placement, as embeddable previews.
10878
+ *
10745
10879
  * Renders an EXISTING ad per placement via Meta's `/{ad_id}/previews`. Each preview is an HTML
10746
10880
  * `<iframe>` snippet embeddable directly. Unknown `formats` values return Meta's 400 verbatim.
10747
10881
  *
@@ -10755,6 +10889,8 @@ export const getAdPreviews = <ThrowOnError extends boolean = false>(options: Opt
10755
10889
 
10756
10890
  /**
10757
10891
  * Read the platform's review verdict for an ad
10892
+ * Shows whether the platform approved an ad, where it may not deliver, and every rejection reason, without re-enabling a paused ad.
10893
+ *
10758
10894
  * Reads the ad's review verdict from the platform now: whether it was approved, where it may
10759
10895
  * not deliver, and every rejection reason with TikTok's suggestion and the piece of content it
10760
10896
  * refers to. Read-only, so it works on a paused ad without re-enabling it.
@@ -10768,7 +10904,21 @@ export const getAdPreviews = <ThrowOnError extends boolean = false>(options: Opt
10768
10904
  * PROHIBITED topic is also listed in `rejections` (reason = the topic). The `forbidden*`
10769
10905
  * arrays are TikTok-only and always empty on Google.
10770
10906
  *
10771
- * TikTok uses `/ad/review_info/`; every other platform returns 501. On TikTok, use it alongside the ad's
10907
+ * **Meta** (Facebook and Instagram ads): reads the Ad's `ad_review_feedback`, `effective_status`
10908
+ * and `issues_info` live. `reviewStatus` is Meta's `effective_status` verbatim (ACTIVE, PAUSED,
10909
+ * PENDING_REVIEW, DISAPPROVED, PREAPPROVED, WITH_ISSUES, IN_PROCESS, ...); `approved` is true for
10910
+ * ACTIVE and PREAPPROVED, false for DISAPPROVED, null otherwise. `reviewFeedback` carries Meta's
10911
+ * feedback verbatim: `global` (reason -> explanation) and `placementSpecific` (placement ->
10912
+ * reason -> explanation). Each global reason is listed in `rejections`, and so is each
10913
+ * placement-specific reason, with that placement in its `forbiddenPlacements`; the review's
10914
+ * `forbiddenPlacements` lists every placement with feedback. When Meta returns no feedback (usually
10915
+ * an ad in review or approved everywhere), the status comes back with empty `rejections` and empty
10916
+ * `reviewFeedback` maps; an ACTIVE ad rejected on one placement still carries that placement's
10917
+ * feedback. A deleted ad answers 404. `issues` is Meta's
10918
+ * `issues_info` verbatim. `forbiddenAges`, `forbiddenLocations` and `forbiddenOperatingSystems`
10919
+ * are always empty on Meta.
10920
+ *
10921
+ * TikTok uses `/ad/review_info/`. Platforms other than TikTok, Google and Meta return 501. On TikTok, use it alongside the ad's
10772
10922
  * `platformStatus`: TikTok reports `AD_STATUS_AUDIT` while the ad is in review and
10773
10923
  * `AD_STATUS_AD_PRE_ONLINE` once it passed and is about to deliver (both map to
10774
10924
  * `status: pending_review`); `AD_STATUS_AUDIT_DENY` maps to `rejected`.
@@ -10782,6 +10932,8 @@ export const getAdReview = <ThrowOnError extends boolean = false>(options: Optio
10782
10932
 
10783
10933
  /**
10784
10934
  * Direct video and image URLs for an ad
10935
+ * Returns fresh, short-lived download links for every image and video a Meta ad uses, including the original media of a boosted Instagram post.
10936
+ *
10785
10937
  * Returns the direct signed URLs for every video and image asset used by an ad's live
10786
10938
  * creative, normalised across shapes: single image/video, carousel,
10787
10939
  * Reels/Story (`object_story_spec.video_data`) and dynamic
@@ -10807,6 +10959,8 @@ export const getAdMedia = <ThrowOnError extends boolean = false>(options: Option
10807
10959
 
10808
10960
  /**
10809
10961
  * Generate keyword ideas
10962
+ * Suggests new keywords from seed keywords or a website using Google Keyword Planner, with search volume, competition and bid estimates.
10963
+ *
10810
10964
  * Google Ads only. Runs Keyword Planner's generateKeywordIdeas from seed keywords, a seed URL,
10811
10965
  * or both, returning idea rows verbatim (avgMonthlySearches, competition, competitionIndex,
10812
10966
  * top-of-page bid micros, monthlySearchVolumes). Counters are int64s encoded as strings; bid
@@ -10822,6 +10976,8 @@ export const generateKeywordIdeas = <ThrowOnError extends boolean = false>(optio
10822
10976
 
10823
10977
  /**
10824
10978
  * Get historical keyword metrics
10979
+ * Gets historical search volume, competition and bid ranges for up to 1,000 keywords from Google Keyword Planner.
10980
+ *
10825
10981
  * Google Ads only. Runs Keyword Planner's generateKeywordHistoricalMetrics for up to 1,000
10826
10982
  * exact keywords: historical search volume, competition and top-of-page bid ranges, plus
10827
10983
  * averageCpcMicros when includeAverageCpc is set. Rows come back verbatim; counters are int64s
@@ -10837,7 +10993,9 @@ export const generateKeywordHistoricalMetrics = <ThrowOnError extends boolean =
10837
10993
 
10838
10994
  /**
10839
10995
  * Flexible live insights query
10840
- * Live, flexible insights query. The account's platform picks the contract:
10996
+ * Runs a custom performance query against Meta, Google Ads or TikTok and returns the platform's rows as is, for reports the fixed endpoints don't cover.
10997
+ *
10998
+ * The account's platform picks the contract:
10841
10999
  *
10842
11000
  * **Meta (facebook/instagram)**: forwards caller-chosen `fields`, `breakdowns` and `filtering`
10843
11001
  * to any Meta insights node and returns Meta's rows verbatim. `objectId` (required) selects the
@@ -10888,7 +11046,9 @@ export const queryAdInsights = <ThrowOnError extends boolean = false>(options: O
10888
11046
 
10889
11047
  /**
10890
11048
  * Submit async insights report
10891
- * Submits an asynchronous Meta insights report. Same query surface as GET /v1/ads/insights, but
11049
+ * Starts a background Meta insights report for long date ranges or large accounts where a live query would be too slow.
11050
+ *
11051
+ * Same query surface as GET /v1/ads/insights, but
10892
11052
  * in the JSON body; Meta processes the report server-side, which is the right choice for long
10893
11053
  * ranges or large accounts where the sync query is slow or rate-limited. Returns a `reportRunId`
10894
11054
  * to poll via GET /v1/ads/insights/reports/{reportRunId}.
@@ -10903,6 +11063,8 @@ export const createAdInsightsReport = <ThrowOnError extends boolean = false>(opt
10903
11063
 
10904
11064
  /**
10905
11065
  * Poll an async insights report run
11066
+ * Checks progress of a background Meta insights report and returns its results once it has finished.
11067
+ *
10906
11068
  * Status and results for a report run created via POST /v1/ads/insights/reports. While the job
10907
11069
  * runs, returns `status` and `percentCompletion`. Once `status` is "Job Completed" the response
10908
11070
  * also carries a `data` page, cursor-paginated via `limit` / `after`.
@@ -10917,7 +11079,9 @@ export const getAdInsightsReport = <ThrowOnError extends boolean = false>(option
10917
11079
 
10918
11080
  /**
10919
11081
  * Get ad analytics
10920
- * Returns detailed performance analytics for an ad. Includes summary metrics, a daily timeline
11082
+ * Returns one ad's performance summary and daily timeline, with optional audience breakdowns on Meta and TikTok.
11083
+ *
11084
+ * Includes summary metrics, a daily timeline
10921
11085
  * over the requested date range, and optional demographic breakdowns (Meta and TikTok only).
10922
11086
  * If no date range is provided, defaults to the last 90 days. Date range is capped at 730 days max.
10923
11087
  *
@@ -10931,6 +11095,8 @@ export const getAdAnalytics = <ThrowOnError extends boolean = false>(options: Op
10931
11095
 
10932
11096
  /**
10933
11097
  * Get ad tracking tags
11098
+ * Shows the tracking parameters added to an ad's click URLs, such as UTM tags (not pixels).
11099
+ *
10934
11100
  * Unified read of the platform's native click-URL tracking params.
10935
11101
  * - Meta (facebook/instagram): the creative's `url_tags` (and template_url_spec).
10936
11102
  * - Google (googleads): the campaign's `trackingUrlTemplate` + `finalUrlSuffix`.
@@ -10952,7 +11118,9 @@ export const getAdTrackingTags = <ThrowOnError extends boolean = false>(options:
10952
11118
 
10953
11119
  /**
10954
11120
  * Set ad tracking tags
10955
- * Unified update. Send only the fields for the ad's platform:
11121
+ * Sets the tracking parameters added to an ad's click URLs, such as UTM tags, without rebuilding the rest of the ad.
11122
+ *
11123
+ * Send only the fields for the ad's platform:
10956
11124
  * - Meta: `urlTags` (array of {key,value}). Meta creatives are immutable, so this rebuilds the
10957
11125
  * creative and repoints the ad. By DEFAULT we PRESERVE the existing creative verbatim
10958
11126
  * (re-post its object_story_spec + the new url_tags, reusing the image), so you send `urlTags`
@@ -10975,7 +11143,9 @@ export const updateAdTrackingTags = <ThrowOnError extends boolean = false>(optio
10975
11143
 
10976
11144
  /**
10977
11145
  * List comments on an ad
10978
- * Returns comments on an ad's underlying creative post. Useful for moderating or analyzing
11146
+ * Lists the comments on an ad's post, including dark posts that never ran organically, so you can moderate ad engagement.
11147
+ *
11148
+ * Useful for moderating or analyzing
10979
11149
  * engagement on dark posts (ad creatives that never went live organically), which the
10980
11150
  * regular GET /v1/inbox/comments/{postId} endpoint cannot serve because dark posts are
10981
11151
  * not in Zernio's post database.
@@ -11126,6 +11296,8 @@ export const listAdsBusinessCenters = <ThrowOnError extends boolean = false>(opt
11126
11296
 
11127
11297
  /**
11128
11298
  * Ad account change / audit log
11299
+ * Shows who changed what in an ad account and when, as an audit log of edits to campaigns, ad sets and ads.
11300
+ *
11129
11301
  * **Google**: reads the customer's `change_event` history, newest first. Google keeps 30 days
11130
11302
  * of it, so `since` defaults to 29 days ago and an older `since` returns 400; `until`
11131
11303
  * defaults to today. Each change is mapped onto the Meta row shape: `event_type` =
@@ -11154,7 +11326,9 @@ export const getAdsActivityLog = <ThrowOnError extends boolean = false>(options:
11154
11326
 
11155
11327
  /**
11156
11328
  * Create reach-frequency prediction
11157
- * Creates an R&F prediction. This is a QUOTE, nothing is bought and no ad entities are created.
11329
+ * Quotes the reach or budget for a Meta reach and frequency campaign over a date range, without buying anything.
11330
+ *
11331
+ * This is a QUOTE, nothing is bought and no ad entities are created.
11158
11332
  * Provide a date range plus exactly one of `budgetAmount` (Meta predicts reach) or `reach`
11159
11333
  * (Meta predicts the budget). The response carries the estimate and its allowed bounds
11160
11334
  * (min/max budget and reach). Predictions expire on their own; to buy, reserve one via
@@ -11165,6 +11339,7 @@ export const getAdsActivityLog = <ThrowOnError extends boolean = false>(options:
11165
11339
  * omitted, `targeting.placements` is used; when neither is set, placements default to
11166
11340
  * Facebook feed (+ Instagram stream when a linked IG professional account resolves).
11167
11341
  * Instagram placements require that IG account.
11342
+ *
11168
11343
  */
11169
11344
  export const createRfPrediction = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateRfPredictionData, ThrowOnError>) => {
11170
11345
  return (options?.client ?? client).post<CreateRfPredictionResponse, CreateRfPredictionError, ThrowOnError>({
@@ -11175,6 +11350,8 @@ export const createRfPrediction = <ThrowOnError extends boolean = false>(options
11175
11350
 
11176
11351
  /**
11177
11352
  * Get reach-frequency prediction
11353
+ * Shows a Meta reach and frequency prediction, with its estimate and status.
11354
+ *
11178
11355
  */
11179
11356
  export const getRfPrediction = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetRfPredictionData, ThrowOnError>) => {
11180
11357
  return (options?.client ?? client).get<GetRfPredictionResponse, GetRfPredictionError, ThrowOnError>({
@@ -11185,7 +11362,10 @@ export const getRfPrediction = <ThrowOnError extends boolean = false>(options: O
11185
11362
 
11186
11363
  /**
11187
11364
  * Cancel reach-frequency booking
11188
- * Releases a RESERVATION's locked price and inventory. Unreserved predictions expire on their own.
11365
+ * Cancels a Meta reach and frequency reservation, releasing its locked price and inventory.
11366
+ *
11367
+ * Unreserved predictions expire on their own.
11368
+ *
11189
11369
  */
11190
11370
  export const cancelRfReservation = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CancelRfReservationData, ThrowOnError>) => {
11191
11371
  return (options?.client ?? client).delete<CancelRfReservationResponse, CancelRfReservationError, ThrowOnError>({
@@ -11196,6 +11376,8 @@ export const cancelRfReservation = <ThrowOnError extends boolean = false>(option
11196
11376
 
11197
11377
  /**
11198
11378
  * Reserve reach-frequency inventory
11379
+ * Locks the quoted price and inventory of a Meta reach and frequency prediction so you can launch a campaign on it.
11380
+ *
11199
11381
  * Locks the quoted price + inventory until the returned `expiresAt` and mints a NEW
11200
11382
  * prediction id. Pass that RESERVED id (not the original) as `rfPredictionId` on
11201
11383
  * POST /v1/ads/create. Release an unused reservation via DELETE.
@@ -11209,6 +11391,8 @@ export const reserveRfPrediction = <ThrowOnError extends boolean = false>(option
11209
11391
 
11210
11392
  /**
11211
11393
  * A/B tests and lift studies
11394
+ * Lists the A/B tests and lift studies on a Meta ad account, with their timing and test groups.
11395
+ *
11212
11396
  * Lists the ad account's A/B tests and lift studies (Meta's `/act_X/ad_studies`), rows
11213
11397
  * returned verbatim. The default projection covers id, name, type, timing and cells with
11214
11398
  * split percentages; `fields` is a raw-passthrough override.
@@ -11244,7 +11428,10 @@ export const getTikTokSmartPlusMaterialReport = <ThrowOnError extends boolean =
11244
11428
 
11245
11429
  /**
11246
11430
  * List Instagram ad identities
11431
+ * Lists the Instagram accounts a Meta ad connection can run ads as, so you can pick the identity for a new ad.
11432
+ *
11247
11433
  * Discovers identities through connected_instagram_accounts, Page linkage and Page-backed identities, with a best-effort business fallback. Business permission errors do not fail discovery. The resolved object uses the same profile-scoped resolver as ad creation; null means no identity was resolved. Format-specific observed-actor fallbacks at creative creation are not predicted.
11434
+ *
11248
11435
  */
11249
11436
  export const listAdsInstagramAccounts = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListAdsInstagramAccountsData, ThrowOnError>) => {
11250
11437
  return (options?.client ?? client).get<ListAdsInstagramAccountsResponse, ListAdsInstagramAccountsError, ThrowOnError>({
@@ -11255,7 +11442,10 @@ export const listAdsInstagramAccounts = <ThrowOnError extends boolean = false>(o
11255
11442
 
11256
11443
  /**
11257
11444
  * List Instagram posts to boost
11445
+ * Lists posts from the Instagram account a Meta ad connection can reach, so you can boost one as an ad.
11446
+ *
11258
11447
  * Lists the media of the Instagram account this Meta connection can reach, so an existing Instagram post can be boosted without connecting the Instagram account separately. Each `posts[].id` is the existing-post id to send as `platformPostId` when creating the ad; Meta turns it into `source_instagram_media_id` on the creative. Identity resolution reuses the same resolver as `/v1/ads/instagram-accounts`. `igUserId` is always checked against the identities the connection can reach and is never trusted as sent. When no identity is reachable the endpoint fails instead of returning an empty list, and the two causes stay apart: `403 reconnect_required` means the connection predates Instagram access (Meta then omits `instagram_business_account` from the Page read rather than erroring, so it looks identical to having no data) and the account must be reconnected granting Instagram access, while `422 instagram_business_account_unresolved` means the Page genuinely has no Instagram professional account linked.
11448
+ *
11259
11449
  */
11260
11450
  export const listAdsInstagramPosts = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListAdsInstagramPostsData, ThrowOnError>) => {
11261
11451
  return (options?.client ?? client).get<ListAdsInstagramPostsResponse, ListAdsInstagramPostsError, ThrowOnError>({
@@ -11266,7 +11456,10 @@ export const listAdsInstagramPosts = <ThrowOnError extends boolean = false>(opti
11266
11456
 
11267
11457
  /**
11268
11458
  * List advertisable apps
11459
+ * Lists the mobile apps a Meta ad account can promote, with their platforms and store links, for app install campaigns.
11460
+ *
11269
11461
  * Lists applications available to a Meta ad account, their supported platforms and unmodified object store URLs. A listed app still needs a configured mobile platform and store URL to run install promotion.
11462
+ *
11270
11463
  */
11271
11464
  export const listAdvertisableApplications = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListAdvertisableApplicationsData, ThrowOnError>) => {
11272
11465
  return (options?.client ?? client).get<ListAdvertisableApplicationsResponse, ListAdvertisableApplicationsError, ThrowOnError>({
@@ -11277,7 +11470,10 @@ export const listAdvertisableApplications = <ThrowOnError extends boolean = fals
11277
11470
 
11278
11471
  /**
11279
11472
  * Get iOS 14 campaign limits
11280
- * Reads Meta iOS 14 campaign limits for an application on an ad account. applicationId is sent as Meta app_id. This read does not establish that the application is configured for iOS promotion.
11473
+ * Shows Meta's iOS 14 campaign limits for an app on an ad account (it does not confirm the app is set up for iOS promotion).
11474
+ *
11475
+ * applicationId is sent as Meta app_id. This read does not establish that the application is configured for iOS promotion.
11476
+ *
11281
11477
  */
11282
11478
  export const getIosFourteenCampaignLimits = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetIosFourteenCampaignLimitsData, ThrowOnError>) => {
11283
11479
  return (options?.client ?? client).get<GetIosFourteenCampaignLimitsResponse, GetIosFourteenCampaignLimitsError, ThrowOnError>({
@@ -11288,6 +11484,8 @@ export const getIosFourteenCampaignLimits = <ThrowOnError extends boolean = fals
11288
11484
 
11289
11485
  /**
11290
11486
  * Businesses list
11487
+ * Lists the Meta business portfolios the connected user belongs to, with their verification status.
11488
+ *
11291
11489
  * Business Manager portfolios the connected Meta user belongs to (Meta's `/me/businesses`),
11292
11490
  * rows returned verbatim (id, name, verification_status, created_time). Token-scoped, so no
11293
11491
  * `adAccountId` is needed. For TikTok Business Centers use
@@ -11302,6 +11500,8 @@ export const listMetaBusinesses = <ThrowOnError extends boolean = false>(options
11302
11500
 
11303
11501
  /**
11304
11502
  * Business users
11503
+ * Lists the people and system users of a Meta business portfolio, with the ids you need to assign them to Pages or ad accounts.
11504
+ *
11305
11505
  * People and system users of a Meta business portfolio, with the business-scoped ids that
11306
11506
  * `POST /v1/ads/accounts/users` and `POST /v1/ads/page-users` take. The connected Meta
11307
11507
  * user must be an admin of the portfolio.
@@ -11315,6 +11515,8 @@ export const listMetaBusinessUsers = <ThrowOnError extends boolean = false>(opti
11315
11515
 
11316
11516
  /**
11317
11517
  * Page users of a business
11518
+ * Lists the people in a business portfolio who are assigned to a Facebook Page it owns or was shared as a partner.
11519
+ *
11318
11520
  * People of a business portfolio assigned to a Facebook Page the portfolio owns or was
11319
11521
  * granted as a partner (`POST /v1/accounts/{accountId}/business-partners` on the owner side).
11320
11522
  */
@@ -11327,6 +11529,8 @@ export const listPageUsers = <ThrowOnError extends boolean = false>(options: Opt
11327
11529
 
11328
11530
  /**
11329
11531
  * Assign a user to a Page
11532
+ * Gives a person in your business portfolio tasks on a Facebook Page, such as advertising, so they can run ads for it.
11533
+ *
11330
11534
  * Gives a person of the portfolio tasks on a Page the portfolio owns or was granted as a
11331
11535
  * partner. Meta does not assign partner admins automatically, so after an owner shares a
11332
11536
  * Page the partner calls this for the people whose tokens will advertise for it.
@@ -11342,6 +11546,8 @@ export const assignPageUser = <ThrowOnError extends boolean = false>(options: Op
11342
11546
 
11343
11547
  /**
11344
11548
  * Remove a user from a Page
11549
+ * Removes a person's access to a Facebook Page assigned through your business portfolio.
11550
+ *
11345
11551
  */
11346
11552
  export const removePageUser = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RemovePageUserData, ThrowOnError>) => {
11347
11553
  return (options?.client ?? client).delete<RemovePageUserResponse, RemovePageUserError, ThrowOnError>({
@@ -11352,7 +11558,7 @@ export const removePageUser = <ThrowOnError extends boolean = false>(options: Op
11352
11558
 
11353
11559
  /**
11354
11560
  * List ad labels
11355
- * Lists the organizational labels on an ad account.
11561
+ * Lists the labels used to organise campaigns and ads in an ad account.
11356
11562
  *
11357
11563
  * - **Meta**: pass `adAccountId=act_<n>`. Rows are Meta's `/act_X/adlabels` returned verbatim
11358
11564
  * (id, name, created/updated time), paginated with `limit` / `after`.
@@ -11360,6 +11566,7 @@ export const removePageUser = <ThrowOnError extends boolean = false>(options: Op
11360
11566
  * connection has a single customer). Returns every non-removed label as a `GoogleAdLabel`
11361
11567
  * in one page (`paging.after` is always null). Reads are cached for 10 minutes; when the
11362
11568
  * shared Google quota is exhausted the last successful result is served with `stale: true`.
11569
+ *
11363
11570
  */
11364
11571
  export const listAdLabels = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListAdLabelsData, ThrowOnError>) => {
11365
11572
  return (options?.client ?? client).get<ListAdLabelsResponse, ListAdLabelsError, ThrowOnError>({
@@ -11370,9 +11577,12 @@ export const listAdLabels = <ThrowOnError extends boolean = false>(options: Opti
11370
11577
 
11371
11578
  /**
11372
11579
  * Create a Google Ads label
11373
- * Creates a label on a Google Ads customer. Attach it to campaigns, ad groups, ads and
11580
+ * Creates a Google Ads label you can then attach to campaigns, ad groups, ads and keywords to organize and filter them.
11581
+ *
11582
+ * Attach it to campaigns, ad groups, ads and
11374
11583
  * keywords with `POST /v1/ads/labels/{labelId}/assignments`. Label names are unique per
11375
11584
  * customer; a duplicate is a 400.
11585
+ *
11376
11586
  */
11377
11587
  export const createAdLabel = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateAdLabelData, ThrowOnError>) => {
11378
11588
  return (options?.client ?? client).post<CreateAdLabelResponse, CreateAdLabelError, ThrowOnError>({
@@ -11383,7 +11593,10 @@ export const createAdLabel = <ThrowOnError extends boolean = false>(options: Opt
11383
11593
 
11384
11594
  /**
11385
11595
  * Update a Google Ads label
11386
- * Changes the name, color or description of a label. Only the fields sent are written.
11596
+ * Changes a Google Ads label's name, color or description.
11597
+ *
11598
+ * Only the fields sent are written.
11599
+ *
11387
11600
  */
11388
11601
  export const updateAdLabel = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateAdLabelData, ThrowOnError>) => {
11389
11602
  return (options?.client ?? client).patch<UpdateAdLabelResponse, UpdateAdLabelError, ThrowOnError>({
@@ -11394,7 +11607,10 @@ export const updateAdLabel = <ThrowOnError extends boolean = false>(options: Opt
11394
11607
 
11395
11608
  /**
11396
11609
  * Remove a Google Ads label
11397
- * Removes the label. Google drops it from every campaign, ad group, ad and keyword it was attached to.
11610
+ * Deletes a Google Ads label and removes it from everything it was attached to.
11611
+ *
11612
+ * Google drops it from every campaign, ad group, ad and keyword it was attached to.
11613
+ *
11398
11614
  */
11399
11615
  export const removeAdLabel = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RemoveAdLabelData, ThrowOnError>) => {
11400
11616
  return (options?.client ?? client).delete<RemoveAdLabelResponse, RemoveAdLabelError, ThrowOnError>({
@@ -11405,6 +11621,8 @@ export const removeAdLabel = <ThrowOnError extends boolean = false>(options: Opt
11405
11621
 
11406
11622
  /**
11407
11623
  * Attach a Google Ads label
11624
+ * Attaches a Google Ads label to campaigns, ad groups, ads and keywords in one call, skipping any that already have it.
11625
+ *
11408
11626
  * Attaches the label to campaigns, ad groups, ads and keywords (Google CampaignLabel,
11409
11627
  * AdGroupLabel, AdGroupAdLabel and AdGroupCriterionLabel) in one mutate. Idempotent: a
11410
11628
  * target that already carries the label is counted in `unchanged` instead of failing the
@@ -11421,7 +11639,10 @@ export const attachAdLabel = <ThrowOnError extends boolean = false>(options: Opt
11421
11639
 
11422
11640
  /**
11423
11641
  * Detach a Google Ads label
11424
- * Removes the label from the given targets. Idempotent; a target without the label is counted in `unchanged`. Fields go in the query string. A JSON body with the same fields is also accepted and, when sent, the query string is ignored.
11642
+ * Removes a Google Ads label from the campaigns, ad groups, ads or keywords you name, skipping any that do not have it.
11643
+ *
11644
+ * Idempotent; a target without the label is counted in `unchanged`. Fields go in the query string. A JSON body with the same fields is also accepted and, when sent, the query string is ignored.
11645
+ *
11425
11646
  */
11426
11647
  export const detachAdLabel = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DetachAdLabelData, ThrowOnError>) => {
11427
11648
  return (options?.client ?? client).delete<DetachAdLabelResponse, DetachAdLabelError, ThrowOnError>({
@@ -11432,6 +11653,8 @@ export const detachAdLabel = <ThrowOnError extends boolean = false>(options: Opt
11432
11653
 
11433
11654
  /**
11434
11655
  * List high-demand periods
11656
+ * Lists the scheduled budget increases set on a Meta campaign or ad set.
11657
+ *
11435
11658
  * Scheduled budget increases (Meta's budget-scheduling API). The Graph edge lives on the
11436
11659
  * campaign and ad-set nodes only, so exactly one of `campaignId` / `adSetId` (platform
11437
11660
  * ids) is required. Rows returned verbatim (budget_value, budget_value_type, time window,
@@ -11446,8 +11669,9 @@ export const listHighDemandPeriods = <ThrowOnError extends boolean = false>(opti
11446
11669
 
11447
11670
  /**
11448
11671
  * Schedule a budget increase
11449
- * Pre-schedule a temporary budget increase (Black Friday, a launch, a sale) instead of
11450
- * editing the budget by hand on the day. Same target rule as the GET: exactly one of
11672
+ * Schedules a temporary budget increase on a Meta campaign or ad set for a busy period, like Black Friday or a launch.
11673
+ *
11674
+ * Same target rule as the GET: exactly one of
11451
11675
  * `campaignId` / `adSetId`.
11452
11676
  *
11453
11677
  * Two Meta constraints worth knowing before you call it. `timeStart` / `timeEnd` must
@@ -11455,6 +11679,7 @@ export const listHighDemandPeriods = <ThrowOnError extends boolean = false>(opti
11455
11679
  * across its schedules; the second type is rejected with "Can't mix your budget scaling
11456
11680
  * selection". Window rules (must sit inside the campaign's run dates, minimum lead time,
11457
11681
  * no overlap) are Meta's and its message is forwarded verbatim.
11682
+ *
11458
11683
  */
11459
11684
  export const createHighDemandPeriod = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateHighDemandPeriodData, ThrowOnError>) => {
11460
11685
  return (options?.client ?? client).post<CreateHighDemandPeriodResponse, CreateHighDemandPeriodError, ThrowOnError>({
@@ -11465,6 +11690,8 @@ export const createHighDemandPeriod = <ThrowOnError extends boolean = false>(opt
11465
11690
 
11466
11691
  /**
11467
11692
  * Creative library
11693
+ * Lists the creatives saved in a Meta ad account so you can reuse one in a new ad.
11694
+ *
11468
11695
  * Lists the ad account's creative library (Meta's `/act_X/adcreatives`), rows returned
11469
11696
  * verbatim. The default projection covers id, name, status, object type, thumbnail,
11470
11697
  * object_story_spec / asset_feed_spec and url_tags; `fields` is a raw-passthrough
@@ -11480,6 +11707,8 @@ export const listAdCreatives = <ThrowOnError extends boolean = false>(options: O
11480
11707
 
11481
11708
  /**
11482
11709
  * Create a standalone creative
11710
+ * Creates a reusable Meta creative from an image or carousel without creating an ad, ready to attach to ads later.
11711
+ *
11483
11712
  * Creates a creative in the library WITHOUT an ad, reusable on the create endpoints via
11484
11713
  * `existingCreativeId`. Provide exactly one of `imageUrl` (uploaded server-side),
11485
11714
  * `imageHash` (from POST /v1/ads/images or the library list), or `carouselCards` (2-10
@@ -11496,6 +11725,8 @@ export const createAdCreative = <ThrowOnError extends boolean = false>(options:
11496
11725
 
11497
11726
  /**
11498
11727
  * Creative details
11728
+ * Shows the details of one Meta creative, such as its content, status and thumbnail.
11729
+ *
11499
11730
  * One creative's details, verbatim from Meta. `fields` is a raw-passthrough override of
11500
11731
  * the default projection.
11501
11732
  */
@@ -11508,9 +11739,12 @@ export const getAdCreative = <ThrowOnError extends boolean = false>(options: Opt
11508
11739
 
11509
11740
  /**
11510
11741
  * Rename a creative
11511
- * Renames a creative. Creatives are immutable on Meta beyond `name`. For content changes
11742
+ * Renames a Meta creative (Meta does not allow other changes, so make a new creative to change its content).
11743
+ *
11744
+ * Creatives are immutable on Meta beyond `name`. For content changes
11512
11745
  * create a new creative (POST /v1/ads/creatives) and swap it onto the ad
11513
11746
  * (PUT /v1/ads/{adId} with `creative`).
11747
+ *
11514
11748
  */
11515
11749
  export const updateAdCreative = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateAdCreativeData, ThrowOnError>) => {
11516
11750
  return (options?.client ?? client).put<UpdateAdCreativeResponse, UpdateAdCreativeError, ThrowOnError>({
@@ -11521,8 +11755,11 @@ export const updateAdCreative = <ThrowOnError extends boolean = false>(options:
11521
11755
 
11522
11756
  /**
11523
11757
  * Delete a creative
11524
- * Deletes a creative from the library. Meta only allows deleting creatives not referenced
11758
+ * Deletes a Meta creative from the library, which Meta only allows when no ad uses it.
11759
+ *
11760
+ * Meta only allows deleting creatives not referenced
11525
11761
  * by any ad; otherwise its 400 surfaces verbatim.
11762
+ *
11526
11763
  */
11527
11764
  export const deleteAdCreative = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteAdCreativeData, ThrowOnError>) => {
11528
11765
  return (options?.client ?? client).delete<DeleteAdCreativeResponse, DeleteAdCreativeError, ThrowOnError>({
@@ -11533,6 +11770,8 @@ export const deleteAdCreative = <ThrowOnError extends boolean = false>(options:
11533
11770
 
11534
11771
  /**
11535
11772
  * List value rule sets
11773
+ * Lists a Meta ad account's value rule sets, which raise or lower bids for audience segments you value differently.
11774
+ *
11536
11775
  * Lists the ad account's value rule sets (Meta's `/act_X/value_rule_set`). A value rule
11537
11776
  * set adjusts the auction bid up or down for audience segments you value differently;
11538
11777
  * attach one to an ad set with `valueRuleSetId` on `POST /v1/ads/create` or
@@ -11560,6 +11799,8 @@ export const listValueRuleSets = <ThrowOnError extends boolean = false>(options:
11560
11799
 
11561
11800
  /**
11562
11801
  * Create a value rule set
11802
+ * Creates a Meta value rule set that raises or lowers bids for chosen audience segments, ready to attach to ad sets.
11803
+ *
11563
11804
  * Creates a value rule set on the ad account (Meta's `POST /act_X/value_rule_set`).
11564
11805
  * Attach the returned id to an ad set with `valueRuleSetId` on `POST /v1/ads/create` or
11565
11806
  * `PUT /v1/ads/ad-sets/{adSetId}`.
@@ -11600,6 +11841,8 @@ export const createValueRuleSet = <ThrowOnError extends boolean = false>(options
11600
11841
 
11601
11842
  /**
11602
11843
  * Read a value rule set
11844
+ * Shows one Meta value rule set with all its rules and criteria, the first step before editing it.
11845
+ *
11603
11846
  * Reads one value rule set including every nested rule id and criterion id. This is step
11604
11847
  * one of any edit: `PUT` is a full replace, so you need the ids before you can keep the
11605
11848
  * objects you are not changing.
@@ -11617,6 +11860,8 @@ export const getValueRuleSet = <ThrowOnError extends boolean = false>(options: O
11617
11860
 
11618
11861
  /**
11619
11862
  * Replace a value rule set
11863
+ * Replaces a Meta value rule set with the rules you send, so any rule left out is deleted.
11864
+ *
11620
11865
  * **THIS IS A FULL REPLACE, NOT A PATCH.** Meta's update is declarative: the body you
11621
11866
  * send becomes the rule set.
11622
11867
  *
@@ -11643,6 +11888,8 @@ export const updateValueRuleSet = <ThrowOnError extends boolean = false>(options
11643
11888
 
11644
11889
  /**
11645
11890
  * Delete a value rule set
11891
+ * Deletes a Meta value rule set (detach it from ad sets first, since they are not changed here).
11892
+ *
11646
11893
  * Deletes the rule set (Meta's `POST /{value-rule-set-id}/delete_rule_set`, a custom
11647
11894
  * action edge rather than an HTTP DELETE on its side). Ad sets pointing at it are not
11648
11895
  * modified here; detach them first with `valueRulesApplied: false` on
@@ -11657,7 +11904,10 @@ export const deleteValueRuleSet = <ThrowOnError extends boolean = false>(options
11657
11904
 
11658
11905
  /**
11659
11906
  * List negative keyword lists
11907
+ * Lists the shared negative keyword lists in a Google Ads account, which you can apply to many campaigns at once.
11908
+ *
11660
11909
  * Google Ads shared negative keyword lists (shared_set type NEGATIVE_KEYWORDS). Reads are cached for 10 minutes; quota exhaustion may return the last successful result for up to 7 days with stale=true. Customer selection is limited to this connection and its account scope.
11910
+ *
11661
11911
  */
11662
11912
  export const listAdNegativeKeywordLists = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListAdNegativeKeywordListsData, ThrowOnError>) => {
11663
11913
  return (options?.client ?? client).get<ListAdNegativeKeywordListsResponse, ListAdNegativeKeywordListsError, ThrowOnError>({
@@ -11668,7 +11918,10 @@ export const listAdNegativeKeywordLists = <ThrowOnError extends boolean = false>
11668
11918
 
11669
11919
  /**
11670
11920
  * Create a negative keyword list
11921
+ * Creates a shared Google Ads negative keyword list, optionally with starting keywords; it is not attached to any campaign yet.
11922
+ *
11671
11923
  * Creates one Google Ads shared negative keyword list with optional initial keywords in a single atomic mutation. Daily quota is reserved for every mutate item, so large batches may return 429 before any change. This operation is not idempotent. The list is not attached to any campaign.
11924
+ *
11672
11925
  */
11673
11926
  export const createAdNegativeKeywordList = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateAdNegativeKeywordListData, ThrowOnError>) => {
11674
11927
  return (options?.client ?? client).post<CreateAdNegativeKeywordListResponse, CreateAdNegativeKeywordListError, ThrowOnError>({
@@ -11679,7 +11932,10 @@ export const createAdNegativeKeywordList = <ThrowOnError extends boolean = false
11679
11932
 
11680
11933
  /**
11681
11934
  * Get a negative keyword list
11935
+ * Shows one shared Google Ads negative keyword list with all of its keywords.
11936
+ *
11682
11937
  * Google Ads shared negative keyword lists (shared_set type NEGATIVE_KEYWORDS). Reads are cached for 10 minutes; quota exhaustion may return the last successful result for up to 7 days with stale=true. Customer selection is limited to this connection and its account scope. Includes the keywords and their criterion ids.
11938
+ *
11683
11939
  */
11684
11940
  export const getAdNegativeKeywordList = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetAdNegativeKeywordListData, ThrowOnError>) => {
11685
11941
  return (options?.client ?? client).get<GetAdNegativeKeywordListResponse, GetAdNegativeKeywordListError, ThrowOnError>({
@@ -11690,7 +11946,10 @@ export const getAdNegativeKeywordList = <ThrowOnError extends boolean = false>(o
11690
11946
 
11691
11947
  /**
11692
11948
  * Rename a negative keyword list
11693
- * Renames a shared negative keyword list. Keywords and campaign associations are unchanged. Use the keywords endpoint to edit the desired keyword set.
11949
+ * Renames a shared Google Ads negative keyword list without changing its keywords or the campaigns using it.
11950
+ *
11951
+ * Keywords and campaign associations are unchanged. Use the keywords endpoint to edit the desired keyword set.
11952
+ *
11694
11953
  */
11695
11954
  export const updateAdNegativeKeywordList = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateAdNegativeKeywordListData, ThrowOnError>) => {
11696
11955
  return (options?.client ?? client).put<UpdateAdNegativeKeywordListResponse, UpdateAdNegativeKeywordListError, ThrowOnError>({
@@ -11701,7 +11960,10 @@ export const updateAdNegativeKeywordList = <ThrowOnError extends boolean = false
11701
11960
 
11702
11961
  /**
11703
11962
  * Delete a negative keyword list
11704
- * Removes the Google shared negative keyword list. Detach it from all campaigns first; an in-use list is rejected. Only NEGATIVE_KEYWORDS shared sets are supported.
11963
+ * Deletes a shared Google Ads negative keyword list; detach it from every campaign first.
11964
+ *
11965
+ * Detach it from all campaigns first; an in-use list is rejected. Only NEGATIVE_KEYWORDS shared sets are supported.
11966
+ *
11705
11967
  */
11706
11968
  export const deleteAdNegativeKeywordList = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteAdNegativeKeywordListData, ThrowOnError>) => {
11707
11969
  return (options?.client ?? client).delete<DeleteAdNegativeKeywordListResponse, DeleteAdNegativeKeywordListError, ThrowOnError>({
@@ -11712,7 +11974,10 @@ export const deleteAdNegativeKeywordList = <ThrowOnError extends boolean = false
11712
11974
 
11713
11975
  /**
11714
11976
  * Replace negative list keywords
11715
- * Replaces the full desired keyword set. Existing keywords are diffed by normalized text and match type; creates and removals are applied atomically in one mutation. Unchanged criteria retain their ids. Send an empty keywords array to clear the list. Changes affect every campaign using this list. Each create or removal consumes one daily operation; the entire batch must fit the remaining quota.
11977
+ * Replaces all keywords in a shared Google Ads negative keyword list (or clears it), affecting every campaign that uses the list.
11978
+ *
11979
+ * Existing keywords are diffed by normalized text and match type; creates and removals are applied atomically in one mutation. Unchanged criteria retain their ids. Send an empty keywords array to clear the list. Changes affect every campaign using this list. Each create or removal consumes one daily operation; the entire batch must fit the remaining quota.
11980
+ *
11716
11981
  */
11717
11982
  export const replaceAdNegativeKeywordListKeywords = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ReplaceAdNegativeKeywordListKeywordsData, ThrowOnError>) => {
11718
11983
  return (options?.client ?? client).put<ReplaceAdNegativeKeywordListKeywordsResponse, ReplaceAdNegativeKeywordListKeywordsError, ThrowOnError>({
@@ -11723,7 +11988,10 @@ export const replaceAdNegativeKeywordListKeywords = <ThrowOnError extends boolea
11723
11988
 
11724
11989
  /**
11725
11990
  * List campaign negative lists
11726
- * Returns shared negative keyword lists attached to the campaign, separate from campaign-level negative keywords. Google Ads shared negative keyword lists (shared_set type NEGATIVE_KEYWORDS). Reads are cached for 10 minutes; quota exhaustion may return the last successful result for up to 7 days with stale=true. Customer selection is limited to this connection and its account scope.
11991
+ * Lists the shared negative keyword lists attached to a Google campaign, separate from its own campaign-level negatives.
11992
+ *
11993
+ * Google Ads shared negative keyword lists (shared_set type NEGATIVE_KEYWORDS). Reads are cached for 10 minutes; quota exhaustion may return the last successful result for up to 7 days with stale=true. Customer selection is limited to this connection and its account scope.
11994
+ *
11727
11995
  */
11728
11996
  export const listCampaignNegativeKeywordLists = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListCampaignNegativeKeywordListsData, ThrowOnError>) => {
11729
11997
  return (options?.client ?? client).get<ListCampaignNegativeKeywordListsResponse, ListCampaignNegativeKeywordListsError, ThrowOnError>({
@@ -11734,7 +12002,10 @@ export const listCampaignNegativeKeywordLists = <ThrowOnError extends boolean =
11734
12002
 
11735
12003
  /**
11736
12004
  * Replace campaign negative lists
11737
- * Sets the full desired set of shared negative keyword list associations on this campaign. Send listIds=[] to detach all negative keyword lists. Only campaign_shared_set links are changed; the lists and their keywords are preserved. Every list must belong to the campaign customer and have type NEGATIVE_KEYWORDS.
12005
+ * Sets exactly which shared negative keyword lists apply to a Google campaign, or detaches them all, without changing the lists themselves.
12006
+ *
12007
+ * Send listIds=[] to detach all negative keyword lists. Only campaign_shared_set links are changed; the lists and their keywords are preserved. Every list must belong to the campaign customer and have type NEGATIVE_KEYWORDS.
12008
+ *
11738
12009
  */
11739
12010
  export const replaceCampaignNegativeKeywordLists = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ReplaceCampaignNegativeKeywordListsData, ThrowOnError>) => {
11740
12011
  return (options?.client ?? client).put<ReplaceCampaignNegativeKeywordListsResponse, ReplaceCampaignNegativeKeywordListsError, ThrowOnError>({
@@ -11745,7 +12016,10 @@ export const replaceCampaignNegativeKeywordLists = <ThrowOnError extends boolean
11745
12016
 
11746
12017
  /**
11747
12018
  * List account callouts
11748
- * Lists directly attached Google assets. Fresh reads are cached for 10 minutes; exhausted quota may return the last successful read with stale=true. Inherited assets are not included. Preserves Google RMF C.75 account-level callouts.
12019
+ * Lists the callouts attached at account level in Google Ads, which can show on ads across all campaigns.
12020
+ *
12021
+ * Fresh reads are cached for 10 minutes; exhausted quota may return the last successful read with stale=true. Inherited assets are not included. Preserves Google RMF C.75 account-level callouts.
12022
+ *
11749
12023
  */
11750
12024
  export const listAccountCallouts = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListAccountCalloutsData, ThrowOnError>) => {
11751
12025
  return (options?.client ?? client).get<ListAccountCalloutsResponse, ListAccountCalloutsError, ThrowOnError>({
@@ -11756,7 +12030,10 @@ export const listAccountCallouts = <ThrowOnError extends boolean = false>(option
11756
12030
 
11757
12031
  /**
11758
12032
  * Add account callouts
12033
+ * Creates callouts and attaches them at account level in Google Ads so they can show on ads across all campaigns.
12034
+ *
11759
12035
  * Creates assets and customer_asset links for this Google customer. Links apply at account level.
12036
+ *
11760
12037
  */
11761
12038
  export const addAccountCallouts = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<AddAccountCalloutsData, ThrowOnError>) => {
11762
12039
  return (options?.client ?? client).post<AddAccountCalloutsResponse, AddAccountCalloutsError, ThrowOnError>({
@@ -11767,7 +12044,10 @@ export const addAccountCallouts = <ThrowOnError extends boolean = false>(options
11767
12044
 
11768
12045
  /**
11769
12046
  * Update account callouts
11770
- * Edits existing Google assets in place. Send updates with assetResourceName and the fields to change. An asset is shared: changes affect every attachment using it. Omitted fields stay unchanged. The operation consumes the Google operations budget and invalidates affected cached lists.
12047
+ * Edits existing Google Ads callouts in place; the change applies everywhere that callout is used.
12048
+ *
12049
+ * Send updates with assetResourceName and the fields to change. An asset is shared: changes affect every attachment using it. Omitted fields stay unchanged. The operation consumes the Google operations budget and invalidates affected cached lists.
12050
+ *
11771
12051
  */
11772
12052
  export const updateAccountCallouts = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateAccountCalloutsData, ThrowOnError>) => {
11773
12053
  return (options?.client ?? client).put<UpdateAccountCalloutsResponse, UpdateAccountCalloutsError, ThrowOnError>({
@@ -11778,7 +12058,10 @@ export const updateAccountCallouts = <ThrowOnError extends boolean = false>(opti
11778
12058
 
11779
12059
  /**
11780
12060
  * Remove account callout
12061
+ * Detaches a callout from the Google Ads account level, leaving it on any campaigns or ad groups that still use it.
12062
+ *
11781
12063
  * Removes the customer_asset attachment only. The underlying shared asset and its campaign or ad-group attachments remain. Fields go in the query string. A JSON body with the same fields is also accepted and, when sent, the query string is ignored.
12064
+ *
11782
12065
  */
11783
12066
  export const removeAccountCallout = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RemoveAccountCalloutData, ThrowOnError>) => {
11784
12067
  return (options?.client ?? client).delete<RemoveAccountCalloutResponse, RemoveAccountCalloutError, ThrowOnError>({
@@ -11789,7 +12072,10 @@ export const removeAccountCallout = <ThrowOnError extends boolean = false>(optio
11789
12072
 
11790
12073
  /**
11791
12074
  * List account sitelinks
11792
- * Lists directly attached Google assets. Fresh reads are cached for 10 minutes; exhausted quota may return the last successful read with stale=true. Inherited assets are not included.
12075
+ * Lists the sitelinks attached at account level in Google Ads, which can show on ads across all campaigns.
12076
+ *
12077
+ * Fresh reads are cached for 10 minutes; exhausted quota may return the last successful read with stale=true. Inherited assets are not included.
12078
+ *
11793
12079
  */
11794
12080
  export const listAccountSitelinks = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListAccountSitelinksData, ThrowOnError>) => {
11795
12081
  return (options?.client ?? client).get<ListAccountSitelinksResponse, ListAccountSitelinksError, ThrowOnError>({
@@ -11800,7 +12086,10 @@ export const listAccountSitelinks = <ThrowOnError extends boolean = false>(optio
11800
12086
 
11801
12087
  /**
11802
12088
  * Add account sitelinks
12089
+ * Creates sitelinks and attaches them at account level in Google Ads so they can show on ads across all campaigns.
12090
+ *
11803
12091
  * Creates assets and customer_asset links for this Google customer. Links apply at account level.
12092
+ *
11804
12093
  */
11805
12094
  export const addAccountSitelinks = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<AddAccountSitelinksData, ThrowOnError>) => {
11806
12095
  return (options?.client ?? client).post<AddAccountSitelinksResponse, AddAccountSitelinksError, ThrowOnError>({
@@ -11811,7 +12100,10 @@ export const addAccountSitelinks = <ThrowOnError extends boolean = false>(option
11811
12100
 
11812
12101
  /**
11813
12102
  * Update account sitelinks
11814
- * Edits existing Google assets in place. Send updates with assetResourceName and the fields to change. An asset is shared: changes affect every attachment using it. Omitted fields stay unchanged. The operation consumes the Google operations budget and invalidates affected cached lists.
12103
+ * Edits existing Google Ads sitelinks in place; the change applies everywhere that sitelink is used.
12104
+ *
12105
+ * Send updates with assetResourceName and the fields to change. An asset is shared: changes affect every attachment using it. Omitted fields stay unchanged. The operation consumes the Google operations budget and invalidates affected cached lists.
12106
+ *
11815
12107
  */
11816
12108
  export const updateAccountSitelinks = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateAccountSitelinksData, ThrowOnError>) => {
11817
12109
  return (options?.client ?? client).put<UpdateAccountSitelinksResponse, UpdateAccountSitelinksError, ThrowOnError>({
@@ -11822,7 +12114,10 @@ export const updateAccountSitelinks = <ThrowOnError extends boolean = false>(opt
11822
12114
 
11823
12115
  /**
11824
12116
  * Remove account sitelink
12117
+ * Detaches a sitelink from the Google Ads account level, leaving it on any campaigns or ad groups that still use it.
12118
+ *
11825
12119
  * Removes the customer_asset attachment only. The underlying shared asset and its campaign or ad-group attachments remain. Fields go in the query string. A JSON body with the same fields is also accepted and, when sent, the query string is ignored.
12120
+ *
11826
12121
  */
11827
12122
  export const removeAccountSitelink = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RemoveAccountSitelinkData, ThrowOnError>) => {
11828
12123
  return (options?.client ?? client).delete<RemoveAccountSitelinkResponse, RemoveAccountSitelinkError, ThrowOnError>({
@@ -11833,7 +12128,10 @@ export const removeAccountSitelink = <ThrowOnError extends boolean = false>(opti
11833
12128
 
11834
12129
  /**
11835
12130
  * List account snippets
11836
- * Lists directly attached Google assets. Fresh reads are cached for 10 minutes; exhausted quota may return the last successful read with stale=true. Inherited assets are not included.
12131
+ * Lists the structured snippets attached at account level in Google Ads, which can show on ads across all campaigns.
12132
+ *
12133
+ * Fresh reads are cached for 10 minutes; exhausted quota may return the last successful read with stale=true. Inherited assets are not included.
12134
+ *
11837
12135
  */
11838
12136
  export const listAccountStructuredSnippets = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListAccountStructuredSnippetsData, ThrowOnError>) => {
11839
12137
  return (options?.client ?? client).get<ListAccountStructuredSnippetsResponse, ListAccountStructuredSnippetsError, ThrowOnError>({
@@ -11844,7 +12142,10 @@ export const listAccountStructuredSnippets = <ThrowOnError extends boolean = fal
11844
12142
 
11845
12143
  /**
11846
12144
  * Add account snippets
12145
+ * Creates structured snippets and attaches them at account level in Google Ads so they can show on ads across all campaigns.
12146
+ *
11847
12147
  * Creates assets and customer_asset links for this Google customer. Links apply at account level.
12148
+ *
11848
12149
  */
11849
12150
  export const addAccountStructuredSnippets = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<AddAccountStructuredSnippetsData, ThrowOnError>) => {
11850
12151
  return (options?.client ?? client).post<AddAccountStructuredSnippetsResponse, AddAccountStructuredSnippetsError, ThrowOnError>({
@@ -11855,7 +12156,10 @@ export const addAccountStructuredSnippets = <ThrowOnError extends boolean = fals
11855
12156
 
11856
12157
  /**
11857
12158
  * Update account snippets
11858
- * Edits existing Google assets in place. Send updates with assetResourceName and the fields to change. An asset is shared: changes affect every attachment using it. Omitted fields stay unchanged. The operation consumes the Google operations budget and invalidates affected cached lists.
12159
+ * Edits existing Google Ads structured snippets in place; the change applies everywhere that snippet is used.
12160
+ *
12161
+ * Send updates with assetResourceName and the fields to change. An asset is shared: changes affect every attachment using it. Omitted fields stay unchanged. The operation consumes the Google operations budget and invalidates affected cached lists.
12162
+ *
11859
12163
  */
11860
12164
  export const updateAccountStructuredSnippets = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateAccountStructuredSnippetsData, ThrowOnError>) => {
11861
12165
  return (options?.client ?? client).put<UpdateAccountStructuredSnippetsResponse, UpdateAccountStructuredSnippetsError, ThrowOnError>({
@@ -11866,7 +12170,10 @@ export const updateAccountStructuredSnippets = <ThrowOnError extends boolean = f
11866
12170
 
11867
12171
  /**
11868
12172
  * Remove account snippet
12173
+ * Detaches a structured snippet from the Google Ads account level, leaving it on any campaigns or ad groups that still use it.
12174
+ *
11869
12175
  * Removes the customer_asset attachment only. The underlying shared asset and its campaign or ad-group attachments remain. Fields go in the query string. A JSON body with the same fields is also accepted and, when sent, the query string is ignored.
12176
+ *
11870
12177
  */
11871
12178
  export const removeAccountStructuredSnippet = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RemoveAccountStructuredSnippetData, ThrowOnError>) => {
11872
12179
  return (options?.client ?? client).delete<RemoveAccountStructuredSnippetResponse, RemoveAccountStructuredSnippetError, ThrowOnError>({
@@ -11877,6 +12184,8 @@ export const removeAccountStructuredSnippet = <ThrowOnError extends boolean = fa
11877
12184
 
11878
12185
  /**
11879
12186
  * Get manager account hierarchy
12187
+ * Shows the Google Ads manager (MCC) and client account tree for a connection, including pending invitations and link status.
12188
+ *
11880
12189
  * Live manager (MCC) and client tree for a Google Ads connection. Starts from every customer the Google user behind the connection can access directly and walks each tree to any depth with `customer_client`, then reads each manager's own client links so every client carries its direct parent, the `managerLinkId` and the link status. Invitations a manager sent that the client has not accepted yet appear as clients with `linkStatus: PENDING` (Google returns no name or currency for them). Refused, canceled and ended links are history and are omitted. `managerLinks` on a root lists the managers linked to that account, including invitations it can still accept with PATCH /v1/ads/accounts/manager-links. A directly accessible account that is also nested in another tree appears only once, inside that tree. `directCustomers` lists every account the Google user accesses directly (the ones this connection can accept or decline invitations for) with their pending invitations, including accounts that are also nested in a tree. Customers Google refuses to read (for example a cancelled account) are listed in `unavailable` with Google's reason instead of failing the call. Up to 50 roots and 50 managers per root are read; `truncated` is true when more exist. Cached for 10 minutes per connection; the response carries `cachedAt` and `stale`. When the connection is scoped to specific ad accounts, client accounts outside that scope are hidden (managers stay visible).
11881
12190
  */
11882
12191
  export const getAdAccountHierarchy = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetAdAccountHierarchyData, ThrowOnError>) => {
@@ -11888,6 +12197,8 @@ export const getAdAccountHierarchy = <ThrowOnError extends boolean = false>(opti
11888
12197
 
11889
12198
  /**
11890
12199
  * Invite a client account to a manager
12200
+ * Invites a Google Ads account to be managed by one of your manager accounts; the link stays pending until the client accepts.
12201
+ *
11891
12202
  * Sends a manager-to-client link invitation from `managerCustomerId` to `clientCustomerId` (Google's CustomerClientLinkService). The manager must be one the connection's Google user reaches, directly or under another manager (see GET /v1/ads/accounts/hierarchy); the client can be any Google Ads account. The link stays `PENDING` until someone with access to the client accepts it in Google Ads or through PATCH on this path. Not idempotent: Google refuses a second invitation while one is pending. Send `validateOnly: true` to have Google check the request without sending anything.
11892
12203
  */
11893
12204
  export const inviteAdAccountToManager = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<InviteAdAccountToManagerData, ThrowOnError>) => {
@@ -11899,6 +12210,8 @@ export const inviteAdAccountToManager = <ThrowOnError extends boolean = false>(o
11899
12210
 
11900
12211
  /**
11901
12212
  * Accept, decline, cancel or end a manager link
12213
+ * Accepts, declines or cancels a Google Ads manager invitation, or ends an existing manager-client link.
12214
+ *
11902
12215
  * Changes one manager-client link, identified by `managerCustomerId`, `clientCustomerId` and `managerLinkId` (all from GET /v1/ads/accounts/hierarchy). `accept` and `decline` answer a pending invitation as the client (CustomerManagerLinkService), so the connection's Google user needs direct access to the client account; access through a manager is not enough, because the link does not exist yet. `cancel` withdraws a pending invitation and `unlink` ends an active link, both as the manager (CustomerClientLinkService). Send `validateOnly: true` to have Google check the change without applying it.
11903
12216
  */
11904
12217
  export const updateAdAccountManagerLink = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateAdAccountManagerLinkData, ThrowOnError>) => {
@@ -11910,8 +12223,10 @@ export const updateAdAccountManagerLink = <ThrowOnError extends boolean = false>
11910
12223
 
11911
12224
  /**
11912
12225
  * Ad account users
11913
- * People of a business portfolio assigned to a Meta ad account, with their tasks.
12226
+ * Lists the people in a business portfolio assigned to a Meta ad account, with what each can do.
12227
+ *
11914
12228
  * Ids are business-scoped user ids (see `GET /v1/ads/businesses/users`).
12229
+ *
11915
12230
  */
11916
12231
  export const listAdAccountUsers = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListAdAccountUsersData, ThrowOnError>) => {
11917
12232
  return (options?.client ?? client).get<ListAdAccountUsersResponse, ListAdAccountUsersError, ThrowOnError>({
@@ -11922,9 +12237,12 @@ export const listAdAccountUsers = <ThrowOnError extends boolean = false>(options
11922
12237
 
11923
12238
  /**
11924
12239
  * Assign a user to an ad account
11925
- * Gives a person of the portfolio tasks on the ad account. `MANAGE` is admin, `ADVERTISE`
12240
+ * Gives a person in your business portfolio access to a Meta ad account, as admin, advertiser, analyst or draft editor.
12241
+ *
12242
+ * `MANAGE` is admin, `ADVERTISE`
11926
12243
  * creates and edits ads, `ANALYZE` reads reports, `DRAFT` edits drafts only. Assigning an
11927
12244
  * already assigned user replaces their task set.
12245
+ *
11928
12246
  */
11929
12247
  export const assignAdAccountUser = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<AssignAdAccountUserData, ThrowOnError>) => {
11930
12248
  return (options?.client ?? client).post<AssignAdAccountUserResponse, AssignAdAccountUserError, ThrowOnError>({
@@ -11935,6 +12253,8 @@ export const assignAdAccountUser = <ThrowOnError extends boolean = false>(option
11935
12253
 
11936
12254
  /**
11937
12255
  * Remove a user from an ad account
12256
+ * Removes a person's access to a Meta ad account assigned through your business portfolio.
12257
+ *
11938
12258
  */
11939
12259
  export const removeAdAccountUser = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RemoveAdAccountUserData, ThrowOnError>) => {
11940
12260
  return (options?.client ?? client).delete<RemoveAdAccountUserResponse, RemoveAdAccountUserError, ThrowOnError>({
@@ -11945,6 +12265,8 @@ export const removeAdAccountUser = <ThrowOnError extends boolean = false>(option
11945
12265
 
11946
12266
  /**
11947
12267
  * Ad account finances
12268
+ * Shows a Meta ad account's balance, total spend, spend cap and funding source.
12269
+ *
11948
12270
  * Finances of one Meta ad account: prepaid `balance`, lifetime `amountSpent`, account
11949
12271
  * `spendCap` (null = no cap) and the `fundingSource`. Money values are converted from
11950
12272
  * Meta's minor units to whole units of `currency`.
@@ -11958,6 +12280,8 @@ export const getAdAccountFinance = <ThrowOnError extends boolean = false>(option
11958
12280
 
11959
12281
  /**
11960
12282
  * Read an ad account's campaigns and ad sets live
12283
+ * Reads an ad account's campaigns and ad sets straight from Meta or TikTok, so checks like budget limits see current values.
12284
+ *
11961
12285
  * Reads the campaigns and ad sets of one Meta ad account or TikTok advertiser **live from
11962
12286
  * the platform**, so it is cheap enough to run before every write: for example a
11963
12287
  * per-ad-account spend ceiling that must see the current daily / lifetime budget rather
@@ -12002,6 +12326,8 @@ export const getAdAccountLiveEntities = <ThrowOnError extends boolean = false>(o
12002
12326
 
12003
12327
  /**
12004
12328
  * Create Meta ad account
12329
+ * Creates a new Meta ad account in the user's own business portfolio (a payment method must then be added in Ads Manager).
12330
+ *
12005
12331
  * Creates a durable Meta ad account in the end user's own business portfolio using
12006
12332
  * their connected Meta Ads token. Requires an active metaads accountId, Ads access,
12007
12333
  * business_management permission and business admin access. Discover portfolios with
@@ -12041,6 +12367,8 @@ export const createAdAccount = <ThrowOnError extends boolean = false>(options: O
12041
12367
 
12042
12368
  /**
12043
12369
  * List ad accounts
12370
+ * Lists the ad accounts a connection can manage, such as Meta ad accounts, TikTok advertisers or Google Ads customers.
12371
+ *
12044
12372
  * Returns the platform ad accounts available for the given account (e.g. Meta ad
12045
12373
  * accounts, TikTok advertiser IDs, Google Ads customer IDs).
12046
12374
  * Meta business-login accounts use their own system-user token. Fresh Meta discovery
@@ -12066,8 +12394,9 @@ export const listAdAccounts = <ThrowOnError extends boolean = false>(options: Op
12066
12394
 
12067
12395
  /**
12068
12396
  * Update ad account settings
12069
- * Updates a Meta ad account in place: its name, its account-level spend cap, and its
12070
- * default DSA beneficiary and payor. Pass any combination of fields.
12397
+ * Changes a Meta ad account's name, spend cap or default EU DSA beneficiary and payor.
12398
+ *
12399
+ * Pass any combination of fields.
12071
12400
  *
12072
12401
  * **Spend cap.** `spendCap` is the total the account may spend before Meta pauses every
12073
12402
  * campaign in it, in whole units of the account currency. `spendCap: null` removes the
@@ -12110,6 +12439,8 @@ export const updateAdAccount = <ThrowOnError extends boolean = false>(options: O
12110
12439
 
12111
12440
  /**
12112
12441
  * Get ad account DSA defaults
12442
+ * Shows the default EU DSA beneficiary and payor set on a Meta ad account.
12443
+ *
12113
12444
  * Returns the default DSA beneficiary and payor currently set on a Meta ad account,
12114
12445
  * whether they were set via `PATCH /v1/ads/accounts` or in Meta Ads Manager. Fields
12115
12446
  * are omitted when no default is configured. Meta accounts only.
@@ -12124,6 +12455,8 @@ export const getDsaDefaults = <ThrowOnError extends boolean = false>(options: Op
12124
12455
 
12125
12456
  /**
12126
12457
  * Get DSA recommendations
12458
+ * Suggests beneficiary and payor names for a Meta ad account's EU DSA disclosures, for your user to pick from.
12459
+ *
12127
12460
  * Returns Meta's suggested beneficiary/payor names for an ad account, derived by Meta
12128
12461
  * from the account's recent activity. Useful for prefilling `dsaBeneficiary`/`dsaPayor`
12129
12462
  * inputs, or the defaults sent to `PATCH /v1/ads/accounts`, in your own UI.
@@ -12143,8 +12476,9 @@ export const getDsaRecommendations = <ThrowOnError extends boolean = false>(opti
12143
12476
 
12144
12477
  /**
12145
12478
  * Boost post as ad
12146
- * Creates a paid ad from an existing published post, keeping the post's
12147
- * engagement. By default it provisions the whole hierarchy (campaign, ad
12479
+ * Turns an already published post into a paid ad that keeps the post's likes and comments, creating the campaign around it.
12480
+ *
12481
+ * By default it provisions the whole hierarchy (campaign, ad
12148
12482
  * set, ad).
12149
12483
  *
12150
12484
  * **Attach shape (Meta).** Send `adSetId` to put the ad under an EXISTING
@@ -12200,7 +12534,10 @@ export const boostPost = <ThrowOnError extends boolean = false>(options: Options
12200
12534
 
12201
12535
  /**
12202
12536
  * List Performance Max asset groups
12203
- * Read Performance Max asset groups and their linked text, image and YouTube assets. campaignId is the platform campaign id returned by creation or the campaign list. The campaign must be visible to the caller. Uses a 10-minute cache, with the last successful response served as stale when Google quota is exhausted. Removed groups and asset links are excluded. Campaign-level brand assets on campaigns with brand guidelines enabled are not included.
12537
+ * Lists a Performance Max campaign's asset groups with their linked text, image and YouTube assets.
12538
+ *
12539
+ * campaignId is the platform campaign id returned by creation or the campaign list. The campaign must be visible to the caller. Uses a 10-minute cache, with the last successful response served as stale when Google quota is exhausted. Removed groups and asset links are excluded. Campaign-level brand assets on campaigns with brand guidelines enabled are not included.
12540
+ *
12204
12541
  */
12205
12542
  export const listGoogleAssetGroups = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListGoogleAssetGroupsData, ThrowOnError>) => {
12206
12543
  return (options?.client ?? client).get<ListGoogleAssetGroupsResponse, ListGoogleAssetGroupsError, ThrowOnError>({
@@ -12211,7 +12548,10 @@ export const listGoogleAssetGroups = <ThrowOnError extends boolean = false>(opti
12211
12548
 
12212
12549
  /**
12213
12550
  * Create a Performance Max asset group
12214
- * Add an asset group to an existing Performance Max campaign. The group, any new assets, their links and an optional listing-group tree are created in one atomic request, so Google checks the asset minimums (for non-retail campaigns) against the whole set. Created PAUSED unless status is ENABLED. validateOnly: true runs Google's validation without creating anything.
12551
+ * Adds an asset group with its assets and optional product targeting to a Performance Max campaign, or just validates it without creating anything.
12552
+ *
12553
+ * The group, any new assets, their links and an optional listing-group tree are created in one atomic request, so Google checks the asset minimums (for non-retail campaigns) against the whole set. Created PAUSED unless status is ENABLED. validateOnly: true runs Google's validation without creating anything.
12554
+ *
12215
12555
  */
12216
12556
  export const createGoogleAssetGroup = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateGoogleAssetGroupData, ThrowOnError>) => {
12217
12557
  return (options?.client ?? client).post<CreateGoogleAssetGroupResponse, CreateGoogleAssetGroupError, ThrowOnError>({
@@ -12222,7 +12562,10 @@ export const createGoogleAssetGroup = <ThrowOnError extends boolean = false>(opt
12222
12562
 
12223
12563
  /**
12224
12564
  * Get a Performance Max asset group
12565
+ * Shows one Performance Max asset group with its linked assets, ad strength, status and product targeting tree.
12566
+ *
12225
12567
  * One asset group with its linked assets, ad strength, primary status and listing-group tree. Uses a 10-minute cache, served stale when Google quota is exhausted; any write below clears it.
12568
+ *
12226
12569
  */
12227
12570
  export const getGoogleAssetGroup = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetGoogleAssetGroupData, ThrowOnError>) => {
12228
12571
  return (options?.client ?? client).get<GetGoogleAssetGroupResponse, GetGoogleAssetGroupError, ThrowOnError>({
@@ -12233,7 +12576,10 @@ export const getGoogleAssetGroup = <ThrowOnError extends boolean = false>(option
12233
12576
 
12234
12577
  /**
12235
12578
  * Update a Performance Max asset group
12579
+ * Changes a Performance Max asset group's name, status, final URLs or display paths.
12580
+ *
12236
12581
  * Change the name, status (ENABLED or PAUSED), final URLs or display paths. Only the fields sent are written; null on path1 or path2 clears it. Change assets with the /assets endpoint and product targeting with /listing-group-filters. validateOnly: true validates without writing.
12582
+ *
12237
12583
  */
12238
12584
  export const updateGoogleAssetGroup = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateGoogleAssetGroupData, ThrowOnError>) => {
12239
12585
  return (options?.client ?? client).patch<UpdateGoogleAssetGroupResponse, UpdateGoogleAssetGroupError, ThrowOnError>({
@@ -12244,7 +12590,10 @@ export const updateGoogleAssetGroup = <ThrowOnError extends boolean = false>(opt
12244
12590
 
12245
12591
  /**
12246
12592
  * Remove a Performance Max asset group
12593
+ * Permanently removes an asset group from a Performance Max campaign (this cannot be undone).
12594
+ *
12247
12595
  * Removes the asset group on Google (status REMOVED, not reversible). Pass validateOnly=true to validate without removing.
12596
+ *
12248
12597
  */
12249
12598
  export const removeGoogleAssetGroup = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RemoveGoogleAssetGroupData, ThrowOnError>) => {
12250
12599
  return (options?.client ?? client).delete<RemoveGoogleAssetGroupResponse, RemoveGoogleAssetGroupError, ThrowOnError>({
@@ -12255,7 +12604,10 @@ export const removeGoogleAssetGroup = <ThrowOnError extends boolean = false>(opt
12255
12604
 
12256
12605
  /**
12257
12606
  * Link or unlink asset group assets
12607
+ * Links new or existing assets to a Performance Max asset group and unlinks others in one change, keeping unlinked assets in the account library.
12608
+ *
12258
12609
  * Link existing assets or new content to the asset group, and unlink assets, in one atomic request. Links are applied before unlinks, so swapping the last asset of a role does not trip Google's per-role minimum. Unlinking removes the link only; the asset stays in the account library. validateOnly: true validates without writing.
12610
+ *
12259
12611
  */
12260
12612
  export const editGoogleAssetGroupAssets = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<EditGoogleAssetGroupAssetsData, ThrowOnError>) => {
12261
12613
  return (options?.client ?? client).post<EditGoogleAssetGroupAssetsResponse, EditGoogleAssetGroupAssetsError, ThrowOnError>({
@@ -12266,7 +12618,10 @@ export const editGoogleAssetGroupAssets = <ThrowOnError extends boolean = false>
12266
12618
 
12267
12619
  /**
12268
12620
  * Replace an asset group's listing-group tree
12621
+ * Replaces the product targeting tree of a Performance Max retail asset group; only works on campaigns linked to Merchant Center.
12622
+ *
12269
12623
  * Replace the product (listing-group) tree of a Performance Max retail asset group. The current tree is removed and the new one created in one atomic request. Read the current tree with GET on the asset group. Requires a campaign linked to Merchant Center; other campaigns return 400 LISTING_SOURCE_NOT_ALLOWED from Google. validateOnly: true validates without writing.
12624
+ *
12270
12625
  */
12271
12626
  export const replaceGoogleListingGroupFilters = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ReplaceGoogleListingGroupFiltersData, ThrowOnError>) => {
12272
12627
  return (options?.client ?? client).put<ReplaceGoogleListingGroupFiltersResponse, ReplaceGoogleListingGroupFiltersError, ThrowOnError>({
@@ -12277,6 +12632,8 @@ export const replaceGoogleListingGroupFilters = <ThrowOnError extends boolean =
12277
12632
 
12278
12633
  /**
12279
12634
  * Create standalone ad
12635
+ * Creates a paid ad with your own creative, building the campaign and ad set it needs or adding it to existing ones.
12636
+ *
12280
12637
  * Create a paid ad with custom creative across Meta, Google Ads, Pinterest, TikTok, X, LinkedIn, and OpenAI Ads (ChatGPT Ads).
12281
12638
  *
12282
12639
  * Google Performance Max: set `campaignType: "pmax"` and supply `assetGroup` with
@@ -12342,6 +12699,8 @@ export const createStandaloneAd = <ThrowOnError extends boolean = false>(options
12342
12699
 
12343
12700
  /**
12344
12701
  * List submitted leads
12702
+ * Lists the leads submitted through your Meta or LinkedIn lead forms, newest first.
12703
+ *
12345
12704
  * Returns submitted Lead Gen leads for your team, newest-first, with keyset pagination on `cursor`. For Meta (default) leads are served from the persisted cache, ingested in real time from the `leadgen` webhook. When `accountId` is a LinkedIn ads account, leads are fetched live from LinkedIn's `leadFormResponses` (LinkedIn has no webhook and enforces 90-day retention, so nothing is persisted) and `adAccountId` is required. Reading LinkedIn responses needs the `r_marketing_leadgen_automation` permission; accounts connected before it was added must reconnect. Requires the Ads add-on.
12346
12705
  *
12347
12706
  */
@@ -12354,7 +12713,9 @@ export const listLeads = <ThrowOnError extends boolean = false>(options?: Option
12354
12713
 
12355
12714
  /**
12356
12715
  * List lead forms
12357
- * Lists the Lead Gen forms owned by the account. Meta: forms on the connected Facebook Page. Pass either the `metaads` ads connection (the Page is taken from the Facebook account linked to it) or the Facebook account itself. LinkedIn: forms owned by the ad account's Company Page. Pass `adAccountId` (LinkedIn forms are org-owned). Requires the Ads add-on.
12716
+ * Lists the lead forms on a Facebook Page or LinkedIn Company Page.
12717
+ *
12718
+ * Meta: forms on the connected Facebook Page. Pass either the `metaads` ads connection (the Page is taken from the Facebook account linked to it) or the Facebook account itself. LinkedIn: forms owned by the ad account's Company Page. Pass `adAccountId` (LinkedIn forms are org-owned). Requires the Ads add-on.
12358
12719
  *
12359
12720
  */
12360
12721
  export const listLeadForms = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListLeadFormsData, ThrowOnError>) => {
@@ -12366,7 +12727,9 @@ export const listLeadForms = <ThrowOnError extends boolean = false>(options: Opt
12366
12727
 
12367
12728
  /**
12368
12729
  * Create a lead form
12369
- * Creates a Lead Gen form. The form content goes inside `platformSpecificData` for both platforms (the shape is selected by the accountId's platform). Meta: created on the connected Facebook Page (POST /{page-id}/leadgen_forms), where `accountId` may be the `metaads` ads connection (its Page comes from the Facebook account linked to the same profile) or the Facebook account itself; the old top-level Meta fields (questions, thankYou*, contextCard, …) are DEPRECATED but still accepted while platformSpecificData is absent; mixing both shapes is a 400. LinkedIn: created on the ad account's Company Page. NOT idempotent: a retry creates a second form. Meta prefilled question types (EMAIL, PHONE, FULL_NAME, …) must omit label/key; CUSTOM questions require both. LinkedIn exposes only free-text and multiple-choice questions via API (prefilled-from-profile fields are Campaign Manager UI-only). Requires the Ads add-on.
12730
+ * Creates a lead form on a Facebook Page or LinkedIn Company Page to collect contact details from ads.
12731
+ *
12732
+ * The form content goes inside `platformSpecificData` for both platforms (the shape is selected by the accountId's platform). Meta: created on the connected Facebook Page (POST /{page-id}/leadgen_forms), where `accountId` may be the `metaads` ads connection (its Page comes from the Facebook account linked to the same profile) or the Facebook account itself; the old top-level Meta fields (questions, thankYou*, contextCard, …) are DEPRECATED but still accepted while platformSpecificData is absent; mixing both shapes is a 400. LinkedIn: created on the ad account's Company Page. NOT idempotent: a retry creates a second form. Meta prefilled question types (EMAIL, PHONE, FULL_NAME, …) must omit label/key; CUSTOM questions require both. LinkedIn exposes only free-text and multiple-choice questions via API (prefilled-from-profile fields are Campaign Manager UI-only). Requires the Ads add-on.
12370
12733
  *
12371
12734
  */
12372
12735
  export const createLeadForm = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateLeadFormData, ThrowOnError>) => {
@@ -12378,6 +12741,8 @@ export const createLeadForm = <ThrowOnError extends boolean = false>(options: Op
12378
12741
 
12379
12742
  /**
12380
12743
  * Get a lead form
12744
+ * Shows a lead form in full, including its questions and thank-you page.
12745
+ *
12381
12746
  * Returns the full form, including the thank-you page, so a form can be diffed against what was created. Meta forms are scoped to the Page the accountId manages: a form on any other Page is a 404, never a read.
12382
12747
  *
12383
12748
  */
@@ -12390,7 +12755,10 @@ export const getLeadForm = <ThrowOnError extends boolean = false>(options: Optio
12390
12755
 
12391
12756
  /**
12392
12757
  * Archive a lead form
12758
+ * Archives a lead form so it can no longer be used (neither Meta nor LinkedIn allows deleting one).
12759
+ *
12393
12760
  * Neither platform hard-deletes a form; this archives it (Meta status=ARCHIVED; LinkedIn state=ARCHIVED via PARTIAL_UPDATE). Meta forms must belong to the Page the accountId manages.
12761
+ *
12394
12762
  */
12395
12763
  export const archiveLeadForm = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ArchiveLeadFormData, ThrowOnError>) => {
12396
12764
  return (options?.client ?? client).delete<ArchiveLeadFormResponse, ArchiveLeadFormError, ThrowOnError>({
@@ -12401,7 +12769,9 @@ export const archiveLeadForm = <ThrowOnError extends boolean = false>(options: O
12401
12769
 
12402
12770
  /**
12403
12771
  * List leads for a single form
12404
- * Returns leads for one form. Serves persisted leads (ingested via the leadgen webhook) when available, falling back to a live Graph read. Accepts a Facebook account or a metaads business-login account with leads_retrieval access to the form; the latter uses its system-user token without a posting parent.
12772
+ * Lists the leads submitted through one Meta lead form.
12773
+ *
12774
+ * Serves persisted leads (ingested via the leadgen webhook) when available, falling back to a live Graph read. Accepts a Facebook account or a metaads business-login account with leads_retrieval access to the form; the latter uses its system-user token without a posting parent.
12405
12775
  *
12406
12776
  */
12407
12777
  export const listFormLeads = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListFormLeadsData, ThrowOnError>) => {
@@ -12413,6 +12783,8 @@ export const listFormLeads = <ThrowOnError extends boolean = false>(options: Opt
12413
12783
 
12414
12784
  /**
12415
12785
  * Create a test lead
12786
+ * Submits a test lead to a Meta lead form so you can check your lead retrieval without running ads.
12787
+ *
12416
12788
  * Submits a test lead against the form (POST /{form-id}/test_leads) to exercise retrieval without waiting for real ad impressions. Meta allows one test lead per form at a time.
12417
12789
  *
12418
12790
  */
@@ -12425,6 +12797,8 @@ export const createTestLead = <ThrowOnError extends boolean = false>(options: Op
12425
12797
 
12426
12798
  /**
12427
12799
  * Delete a test lead
12800
+ * Deletes the test lead on a Meta lead form so you can submit a new one (Meta allows only one at a time).
12801
+ *
12428
12802
  * Removes a test lead created for the form (DELETE /{leadgen_id}), so a new one can be submitted: Meta keeps one test lead per form and refuses a second until the first is gone. The same test lead appears in Meta's Lead Ads Testing Tool. Meta only deletes test leads; a real lead is refused.
12429
12803
  *
12430
12804
  */
@@ -12437,10 +12811,12 @@ export const deleteTestLead = <ThrowOnError extends boolean = false>(options: Op
12437
12811
 
12438
12812
  /**
12439
12813
  * Upload an ad image from base64
12440
- * Uploads raw image bytes to the Meta ad account's image library, for callers whose
12441
- * creatives aren't hosted at a public URL. Returns the image `hash` (Meta's identifier for
12814
+ * Uploads an image file to a Meta ad account's library, for creatives that are not hosted at a public URL.
12815
+ *
12816
+ * Returns the image `hash` (Meta's identifier for
12442
12817
  * the asset) and the Meta-hosted `url`, which can be used directly as `imageUrl` on the
12443
12818
  * create endpoints. Max 30 MB decoded.
12819
+ *
12444
12820
  */
12445
12821
  export const uploadAdImage = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UploadAdImageData, ThrowOnError>) => {
12446
12822
  return (options?.client ?? client).post<UploadAdImageResponse, UploadAdImageError, ThrowOnError>({
@@ -12451,6 +12827,8 @@ export const uploadAdImage = <ThrowOnError extends boolean = false>(options: Opt
12451
12827
 
12452
12828
  /**
12453
12829
  * Ad image library
12830
+ * Lists the images in a Meta ad account's library so you can reuse one in a creative.
12831
+ *
12454
12832
  * Lists the ad account's image library (Meta's `/act_X/adimages`), rows returned verbatim.
12455
12833
  * The default projection covers hash, url, name, dimensions and status; `fields` is a
12456
12834
  * raw-passthrough override. Any `hash` here is reusable wherever Meta accepts
@@ -12465,6 +12843,8 @@ export const listAdImages = <ThrowOnError extends boolean = false>(options: Opti
12465
12843
 
12466
12844
  /**
12467
12845
  * Upload an ad video
12846
+ * Uploads a video to a Meta ad account from a URL or file, so you can preview it or use it in ads before any ad exists.
12847
+ *
12468
12848
  * Standalone ad-video upload (parallel to POST /v1/ads/images), so a video creative can
12469
12849
  * be rendered via POST /v1/ads/preview or attached via `video.id` on POST /v1/ads/create
12470
12850
  * before an ad exists.
@@ -12494,6 +12874,8 @@ export const uploadAdVideo = <ThrowOnError extends boolean = false>(options: Opt
12494
12874
 
12495
12875
  /**
12496
12876
  * Ad video library
12877
+ * Lists the videos in a Meta ad account's library, including ones uploaded elsewhere, so you can reuse one across ads.
12878
+ *
12497
12879
  * Lists the ad account's video library (Meta's `/act_X/advideos`), rows returned verbatim.
12498
12880
  * The default projection covers id, title, status, poster frames, length and `source` (the
12499
12881
  * playable MP4); `fields` is a raw-passthrough override. Any `id` here is reusable as
@@ -12519,6 +12901,8 @@ export const listAdVideos = <ThrowOnError extends boolean = false>(options: Opti
12519
12901
 
12520
12902
  /**
12521
12903
  * Get ad video processing status
12904
+ * Checks whether an uploaded Meta ad video has finished processing and is ready to use in an ad.
12905
+ *
12522
12906
  * Reads a video's processing state live from Meta (`GET /{video-id}?fields=status`).
12523
12907
  * Poll this after `POST /v1/ads/videos` with `async: true` until `status` is `ready`;
12524
12908
  * the video is only usable as `video.id` on the create endpoints from then on.
@@ -12537,12 +12921,15 @@ export const getAdVideoStatus = <ThrowOnError extends boolean = false>(options:
12537
12921
 
12538
12922
  /**
12539
12923
  * Delete an ad video
12540
- * Removes a video from the ad account's video library. Meta's canonical
12924
+ * Removes a video from a Meta ad account's video library.
12925
+ *
12926
+ * Meta's canonical
12541
12927
  * `DELETE /{video_id}` fails with code 10 / subcode 1363055 for videos uploaded via
12542
12928
  * `/act_X/advideos` even with `ads_management`; this endpoint uses the working
12543
12929
  * account-scoped shape `DELETE /act_X/advideos?video_id=<id>` and returns Meta's
12544
12930
  * `{success: true}` verbatim. Deleting a video that lives in a different ad account,
12545
12931
  * or that Meta has already removed, returns Meta's error verbatim as a 4xx.
12932
+ *
12546
12933
  */
12547
12934
  export const deleteAdVideo = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteAdVideoData, ThrowOnError>) => {
12548
12935
  return (options?.client ?? client).delete<DeleteAdVideoResponse, DeleteAdVideoError, ThrowOnError>({
@@ -12569,6 +12956,8 @@ export const searchAdInterests = <ThrowOnError extends boolean = false>(options:
12569
12956
 
12570
12957
  /**
12571
12958
  * Search targeting options
12959
+ * Finds targeting options by name, such as locations, interests or behaviors, and returns the ids to use in ad targeting.
12960
+ *
12572
12961
  * Resolve a human-readable query into the platform's opaque targeting ids used in
12573
12962
  * the `TargetingSpec` (`countries`/`regions`/`cities`/`zips`/`metros` geo keys, and
12574
12963
  * `interests`/`behaviors` entity ids) on `POST /v1/ads/create`,
@@ -12698,6 +13087,8 @@ export const searchAdTargeting = <ThrowOnError extends boolean = false>(options:
12698
13087
 
12699
13088
  /**
12700
13089
  * Browse targeting categories
13090
+ * Shows Meta's full tree of detailed targeting categories for an ad account, so you can browse options without a keyword.
13091
+ *
12701
13092
  * The whole Meta detailed-targeting category tree of one ad account (Meta's
12702
13093
  * `GET /act_{ad_account_id}/targetingbrowse`), as one flat list you can render as a
12703
13094
  * tree. Use it to show what can be targeted without a keyword; use
@@ -12746,7 +13137,9 @@ export const browseAdTargeting = <ThrowOnError extends boolean = false>(options:
12746
13137
 
12747
13138
  /**
12748
13139
  * Search the public Ad Library
12749
- * Competitor and market research over the public ad archives. Meta's Ad Library
13140
+ * Searches Meta's or LinkedIn's public Ad Library to see what ads other advertisers run, for competitor and market research.
13141
+ *
13142
+ * Meta's Ad Library
12750
13143
  * (`GET /ads_archive`) is searched with Zernio's own developer access, so `platform=meta` needs
12751
13144
  * no connected account at all. LinkedIn's Ad Library (`GET /rest/adLibrary`) runs on a connected
12752
13145
  * `linkedin` / `linkedinads` account, passed as `accountId`. Passing a Meta account as `accountId`
@@ -12767,6 +13160,7 @@ export const browseAdTargeting = <ThrowOnError extends boolean = false>(options:
12767
13160
  * `platforms`, `mediaType`, `languages`, `searchType`, `fields`, `since`, `until` are Meta-only;
12768
13161
  * `advertiser` is LinkedIn-only. Passing a param the account's platform does not support is a 400
12769
13162
  * naming the param.
13163
+ *
12770
13164
  */
12771
13165
  export const searchAdLibrary = <ThrowOnError extends boolean = false>(options?: OptionsLegacyParser<SearchAdLibraryData, ThrowOnError>) => {
12772
13166
  return (options?.client ?? client).get<SearchAdLibraryResponse, SearchAdLibraryError, ThrowOnError>({
@@ -12777,6 +13171,8 @@ export const searchAdLibrary = <ThrowOnError extends boolean = false>(options?:
12777
13171
 
12778
13172
  /**
12779
13173
  * Estimate audience reach
13174
+ * Estimates how many people a targeting setup would reach before you create a campaign.
13175
+ *
12780
13176
  * Returns a normalized pre-flight audience-size estimate for a targeting spec,
12781
13177
  * before any campaign is created. Backed by each platform's native reach API
12782
13178
  * (Meta `delivery_estimate`, LinkedIn `audienceCounts`, X `audience_summary`,
@@ -12837,7 +13233,10 @@ export const getLinkedInSupplyForecast = <ThrowOnError extends boolean = false>(
12837
13233
 
12838
13234
  /**
12839
13235
  * List Meta product catalogs
12840
- * Lists the Meta Commerce catalogs of a business portfolio (owned + agency-shared). The business comes from `businessId`, else the ad account's owner (`adAccountId`), else the WhatsApp Business Account's owner when `accountId` is a WhatsApp connection, else the only business the Meta login can see. Reads work with scopes customers already granted.
13236
+ * Lists the Meta product catalogs a business portfolio owns or has been shared, for catalog and shopping ads.
13237
+ *
13238
+ * The business comes from `businessId`, else the ad account's owner (`adAccountId`), else the WhatsApp Business Account's owner when `accountId` is a WhatsApp connection, else the only business the Meta login can see. Reads work with scopes customers already granted.
13239
+ *
12841
13240
  */
12842
13241
  export const listAdCatalogs = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListAdCatalogsData, ThrowOnError>) => {
12843
13242
  return (options?.client ?? client).get<ListAdCatalogsResponse, ListAdCatalogsError, ThrowOnError>({
@@ -12848,7 +13247,10 @@ export const listAdCatalogs = <ThrowOnError extends boolean = false>(options: Op
12848
13247
 
12849
13248
  /**
12850
13249
  * Create a Meta product catalog
13250
+ * Creates a Meta product catalog that can power catalog ads, Instagram and Facebook Shops, and a WhatsApp Business catalog.
13251
+ *
12851
13252
  * Creates a Meta Commerce catalog in the business portfolio (resolved like GET). The same catalog serves Advantage+ catalog ads, Instagram/Facebook Shops and the WhatsApp Business catalog: link it to a WhatsApp number with POST /v1/whatsapp/catalogs. Needs catalog_management on the Meta login.
13253
+ *
12852
13254
  */
12853
13255
  export const createAdCatalog = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateAdCatalogData, ThrowOnError>) => {
12854
13256
  return (options?.client ?? client).post<CreateAdCatalogResponse, CreateAdCatalogError, ThrowOnError>({
@@ -12859,6 +13261,8 @@ export const createAdCatalog = <ThrowOnError extends boolean = false>(options: O
12859
13261
 
12860
13262
  /**
12861
13263
  * Get a product catalog
13264
+ * Shows one Meta product catalog and its details.
13265
+ *
12862
13266
  */
12863
13267
  export const getAdCatalog = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetAdCatalogData, ThrowOnError>) => {
12864
13268
  return (options?.client ?? client).get<GetAdCatalogResponse, GetAdCatalogError, ThrowOnError>({
@@ -12869,7 +13273,10 @@ export const getAdCatalog = <ThrowOnError extends boolean = false>(options: Opti
12869
13273
 
12870
13274
  /**
12871
13275
  * Delete a product catalog
12872
- * Deletes the catalog and every product in it on Meta. Ads and WhatsApp numbers that use it lose their catalog.
13276
+ * Deletes a Meta product catalog and all its products, removing it from any ads or WhatsApp numbers that use it.
13277
+ *
13278
+ * Ads and WhatsApp numbers that use it lose their catalog.
13279
+ *
12873
13280
  */
12874
13281
  export const deleteAdCatalog = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteAdCatalogData, ThrowOnError>) => {
12875
13282
  return (options?.client ?? client).delete<DeleteAdCatalogResponse, DeleteAdCatalogError, ThrowOnError>({
@@ -12880,7 +13287,10 @@ export const deleteAdCatalog = <ThrowOnError extends boolean = false>(options: O
12880
13287
 
12881
13288
  /**
12882
13289
  * List a catalog's products
12883
- * Pages through the catalog's products. Filter by your own `retailerId` to look one up. `price` and `salePrice` come back formatted by Meta (for example "€49.90").
13290
+ * Lists the products in a Meta catalog, or looks one up by your own SKU.
13291
+ *
13292
+ * Filter by your own `retailerId` to look one up. `price` and `salePrice` come back formatted by Meta (for example "€49.90").
13293
+ *
12884
13294
  */
12885
13295
  export const listAdCatalogProducts = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListAdCatalogProductsData, ThrowOnError>) => {
12886
13296
  return (options?.client ?? client).get<ListAdCatalogProductsResponse, ListAdCatalogProductsError, ThrowOnError>({
@@ -12891,7 +13301,10 @@ export const listAdCatalogProducts = <ThrowOnError extends boolean = false>(opti
12891
13301
 
12892
13302
  /**
12893
13303
  * Add a product to a catalog
12894
- * Adds one product. `retailerId` is your SKU and stays the handle for later lookups and batch updates. For many products at once use POST /v1/ads/catalogs/{catalogId}/products/batch. Needs catalog_management on the Meta login.
13304
+ * Adds a single product to a Meta catalog, keyed by your own SKU for later lookups and updates.
13305
+ *
13306
+ * `retailerId` is your SKU and stays the handle for later lookups and batch updates. For many products at once use POST /v1/ads/catalogs/{catalogId}/products/batch. Needs catalog_management on the Meta login.
13307
+ *
12895
13308
  */
12896
13309
  export const createAdCatalogProduct = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateAdCatalogProductData, ThrowOnError>) => {
12897
13310
  return (options?.client ?? client).post<CreateAdCatalogProductResponse, CreateAdCatalogProductError, ThrowOnError>({
@@ -12902,7 +13315,10 @@ export const createAdCatalogProduct = <ThrowOnError extends boolean = false>(opt
12902
13315
 
12903
13316
  /**
12904
13317
  * Create, update or delete products in bulk
13318
+ * Creates, updates or deletes up to 5,000 catalog products in one request, processed in the background by Meta.
13319
+ *
12905
13320
  * Up to 5000 CREATE / UPDATE / DELETE requests keyed by `retailerId`, processed asynchronously by Meta. Returns handles; poll GET /v1/ads/catalogs/{catalogId}/batches/{handle} for the outcome and per-item errors. CREATE requests need name, url, imageUrl, price and currency.
13321
+ *
12906
13322
  */
12907
13323
  export const batchAdCatalogProducts = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<BatchAdCatalogProductsData, ThrowOnError>) => {
12908
13324
  return (options?.client ?? client).post<BatchAdCatalogProductsResponse, BatchAdCatalogProductsError, ThrowOnError>({
@@ -12913,6 +13329,8 @@ export const batchAdCatalogProducts = <ThrowOnError extends boolean = false>(opt
12913
13329
 
12914
13330
  /**
12915
13331
  * Get a bulk request's status
13332
+ * Shows whether a bulk catalog product request has finished, with any per-product errors.
13333
+ *
12916
13334
  */
12917
13335
  export const getAdCatalogBatch = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetAdCatalogBatchData, ThrowOnError>) => {
12918
13336
  return (options?.client ?? client).get<GetAdCatalogBatchResponse, GetAdCatalogBatchError, ThrowOnError>({
@@ -12923,6 +13341,8 @@ export const getAdCatalogBatch = <ThrowOnError extends boolean = false>(options:
12923
13341
 
12924
13342
  /**
12925
13343
  * Get a product
13344
+ * Shows one product from a Meta catalog.
13345
+ *
12926
13346
  */
12927
13347
  export const getAdCatalogProduct = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetAdCatalogProductData, ThrowOnError>) => {
12928
13348
  return (options?.client ?? client).get<GetAdCatalogProductResponse, GetAdCatalogProductError, ThrowOnError>({
@@ -12933,7 +13353,10 @@ export const getAdCatalogProduct = <ThrowOnError extends boolean = false>(option
12933
13353
 
12934
13354
  /**
12935
13355
  * Update a product
12936
- * Partial update: only the fields sent change. `retailerId` cannot change.
13356
+ * Changes some fields of a catalog product, such as its price or image, leaving the rest as they are.
13357
+ *
13358
+ * `retailerId` cannot change.
13359
+ *
12937
13360
  */
12938
13361
  export const updateAdCatalogProduct = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateAdCatalogProductData, ThrowOnError>) => {
12939
13362
  return (options?.client ?? client).put<UpdateAdCatalogProductResponse, UpdateAdCatalogProductError, ThrowOnError>({
@@ -12944,6 +13367,8 @@ export const updateAdCatalogProduct = <ThrowOnError extends boolean = false>(opt
12944
13367
 
12945
13368
  /**
12946
13369
  * Delete a product
13370
+ * Removes one product from a Meta catalog.
13371
+ *
12947
13372
  */
12948
13373
  export const deleteAdCatalogProduct = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteAdCatalogProductData, ThrowOnError>) => {
12949
13374
  return (options?.client ?? client).delete<DeleteAdCatalogProductResponse, DeleteAdCatalogProductError, ThrowOnError>({
@@ -12954,6 +13379,8 @@ export const deleteAdCatalogProduct = <ThrowOnError extends boolean = false>(opt
12954
13379
 
12955
13380
  /**
12956
13381
  * List a catalog's product feeds
13382
+ * Lists the product feeds that keep a Meta catalog filled from your product files.
13383
+ *
12957
13384
  */
12958
13385
  export const listAdCatalogFeeds = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListAdCatalogFeedsData, ThrowOnError>) => {
12959
13386
  return (options?.client ?? client).get<ListAdCatalogFeedsResponse, ListAdCatalogFeedsError, ThrowOnError>({
@@ -12964,7 +13391,10 @@ export const listAdCatalogFeeds = <ThrowOnError extends boolean = false>(options
12964
13391
 
12965
13392
  /**
12966
13393
  * Create a product feed
13394
+ * Creates a product feed that imports a CSV, TSV or XML product file into a Meta catalog, on a schedule or on demand.
13395
+ *
12967
13396
  * A feed pulls a CSV/TSV/XML product file from a URL. With `schedule` Meta fetches it on a cadence; without it, trigger fetches with POST /v1/ads/catalogs/{catalogId}/feeds/{feedId}/uploads.
13397
+ *
12968
13398
  */
12969
13399
  export const createAdCatalogFeed = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateAdCatalogFeedData, ThrowOnError>) => {
12970
13400
  return (options?.client ?? client).post<CreateAdCatalogFeedResponse, CreateAdCatalogFeedError, ThrowOnError>({
@@ -12975,6 +13405,8 @@ export const createAdCatalogFeed = <ThrowOnError extends boolean = false>(option
12975
13405
 
12976
13406
  /**
12977
13407
  * List a feed's uploads
13408
+ * Lists a product feed's past file imports so you can check how each one went.
13409
+ *
12978
13410
  */
12979
13411
  export const listAdCatalogFeedUploads = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListAdCatalogFeedUploadsData, ThrowOnError>) => {
12980
13412
  return (options?.client ?? client).get<ListAdCatalogFeedUploadsResponse, ListAdCatalogFeedUploadsError, ThrowOnError>({
@@ -12985,7 +13417,10 @@ export const listAdCatalogFeedUploads = <ThrowOnError extends boolean = false>(o
12985
13417
 
12986
13418
  /**
12987
13419
  * Fetch a feed file now
13420
+ * Asks Meta to import a product file into a feed right away instead of waiting for its schedule.
13421
+ *
12988
13422
  * Asks Meta to fetch the product file at `url` into the feed. Processing is asynchronous: read the outcome with GET uploads.
13423
+ *
12989
13424
  */
12990
13425
  export const createAdCatalogFeedUpload = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateAdCatalogFeedUploadData, ThrowOnError>) => {
12991
13426
  return (options?.client ?? client).post<CreateAdCatalogFeedUploadResponse, CreateAdCatalogFeedUploadError, ThrowOnError>({
@@ -12996,7 +13431,10 @@ export const createAdCatalogFeedUpload = <ThrowOnError extends boolean = false>(
12996
13431
 
12997
13432
  /**
12998
13433
  * List a catalog's product sets
12999
- * Lists a Meta product catalog's product sets, the unit a catalog ad promotes. Pass the chosen set id, not the parent catalog id, as `promotedObject.productSetId` on POST /v1/ads/create with `goal: catalog_sales`.
13434
+ * Lists a Meta catalog's product sets, the groups of products a catalog ad promotes.
13435
+ *
13436
+ * Pass the chosen set id, not the parent catalog id, as `promotedObject.productSetId` on POST /v1/ads/create with `goal: catalog_sales`.
13437
+ *
13000
13438
  */
13001
13439
  export const listAdCatalogProductSets = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListAdCatalogProductSetsData, ThrowOnError>) => {
13002
13440
  return (options?.client ?? client).get<ListAdCatalogProductSetsResponse, ListAdCatalogProductSetsError, ThrowOnError>({
@@ -13007,7 +13445,10 @@ export const listAdCatalogProductSets = <ThrowOnError extends boolean = false>(o
13007
13445
 
13008
13446
  /**
13009
13447
  * Create a product set
13448
+ * Creates a product set, a filtered group of catalog products (by SKU, brand and so on) to promote in catalog ads.
13449
+ *
13010
13450
  * A product set is a filter over the catalog, e.g. `{"retailer_id": {"is_any": ["sku-1", "sku-2"]}}` or `{"brand": {"i_contains": "acme"}}` (Meta's product set filter syntax).
13451
+ *
13011
13452
  */
13012
13453
  export const createAdCatalogProductSet = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateAdCatalogProductSetData, ThrowOnError>) => {
13013
13454
  return (options?.client ?? client).post<CreateAdCatalogProductSetResponse, CreateAdCatalogProductSetError, ThrowOnError>({
@@ -13018,6 +13459,8 @@ export const createAdCatalogProductSet = <ThrowOnError extends boolean = false>(
13018
13459
 
13019
13460
  /**
13020
13461
  * Update a product set
13462
+ * Changes a product set's name or the filter that decides which products it includes.
13463
+ *
13021
13464
  */
13022
13465
  export const updateAdCatalogProductSet = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateAdCatalogProductSetData, ThrowOnError>) => {
13023
13466
  return (options?.client ?? client).put<UpdateAdCatalogProductSetResponse, UpdateAdCatalogProductSetError, ThrowOnError>({
@@ -13028,6 +13471,8 @@ export const updateAdCatalogProductSet = <ThrowOnError extends boolean = false>(
13028
13471
 
13029
13472
  /**
13030
13473
  * Delete a product set
13474
+ * Deletes a product set from a Meta catalog.
13475
+ *
13031
13476
  */
13032
13477
  export const deleteAdCatalogProductSet = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<DeleteAdCatalogProductSetData, ThrowOnError>) => {
13033
13478
  return (options?.client ?? client).delete<DeleteAdCatalogProductSetResponse, DeleteAdCatalogProductSetError, ThrowOnError>({
@@ -13038,7 +13483,10 @@ export const deleteAdCatalogProductSet = <ThrowOnError extends boolean = false>(
13038
13483
 
13039
13484
  /**
13040
13485
  * List custom audiences
13041
- * Returns custom audiences for the given ad account. Supports Meta, Google, TikTok, Pinterest, LinkedIn, and X.
13486
+ * Lists the custom audiences in an ad account so you can reuse them for targeting.
13487
+ *
13488
+ * Supports Meta, Google, TikTok, Pinterest, LinkedIn, and X.
13489
+ *
13042
13490
  */
13043
13491
  export const listAdAudiences = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListAdAudiencesData, ThrowOnError>) => {
13044
13492
  return (options?.client ?? client).get<ListAdAudiencesResponse, ListAdAudiencesError, ThrowOnError>({
@@ -13049,7 +13497,9 @@ export const listAdAudiences = <ThrowOnError extends boolean = false>(options: O
13049
13497
 
13050
13498
  /**
13051
13499
  * Create custom audience
13052
- * Create a custom audience. `customer_list` is supported on Meta, Google, X, LinkedIn, TikTok, and Pinterest.
13500
+ * Creates a custom audience from a customer list, website visitors, a lookalike, or people who engaged with your content.
13501
+ *
13502
+ * `customer_list` is supported on Meta, Google, X, LinkedIn, TikTok, and Pinterest.
13053
13503
  * `website` (pixel/tag visitors) and `lookalike` are supported on Meta, TikTok, Pinterest and Google.
13054
13504
  * `meta_engagement` is Meta-only, `tiktok_engagement` TikTok-only, `pinterest_engagement` Pinterest-only;
13055
13505
  * `company_list`, `engagement` and `website_retargeting` are LinkedIn-only. A type sent to a platform
@@ -13097,7 +13547,10 @@ export const createAdAudience = <ThrowOnError extends boolean = false>(options:
13097
13547
 
13098
13548
  /**
13099
13549
  * Get audience details
13550
+ * Shows a custom audience's details, including its latest data from the ad platform when available.
13551
+ *
13100
13552
  * Returns the local audience record and fresh data from Meta (if available).
13553
+ *
13101
13554
  */
13102
13555
  export const getAdAudience = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<GetAdAudienceData, ThrowOnError>) => {
13103
13556
  return (options?.client ?? client).get<GetAdAudienceResponse, GetAdAudienceError, ThrowOnError>({
@@ -13108,7 +13561,9 @@ export const getAdAudience = <ThrowOnError extends boolean = false>(options: Opt
13108
13561
 
13109
13562
  /**
13110
13563
  * Update an audience
13111
- * Update an audience. `saved_targeting` audiences accept `name`, `description`, and `spec`
13564
+ * Renames or redescribes an audience, or replaces a saved targeting audience's rules; platform audience rules cannot change.
13565
+ *
13566
+ * `saved_targeting` audiences accept `name`, `description`, and `spec`
13112
13567
  * (full replacement, no merge, Zernio-only, no platform call). Platform audiences
13113
13568
  * (uploaded/website/lookalike) accept `name` and `description` only, updated on the
13114
13569
  * platform first and then mirrored locally; their rules are immutable, so `spec` returns
@@ -13126,6 +13581,8 @@ export const updateAdAudience = <ThrowOnError extends boolean = false>(options:
13126
13581
 
13127
13582
  /**
13128
13583
  * Delete custom audience
13584
+ * Removes a custom audience from its ad platform (archiving it where the platform does not delete).
13585
+ *
13129
13586
  * Removes the audience on its ad platform, then deletes the Zernio record. Meta, Google, TikTok,
13130
13587
  * LinkedIn list and engagement segments, and X are deleted; Pinterest audiences and LinkedIn
13131
13588
  * `website_retargeting` segments are archived, which is how those platforms remove them.
@@ -13145,7 +13602,9 @@ export const deleteAdAudience = <ThrowOnError extends boolean = false>(options:
13145
13602
 
13146
13603
  /**
13147
13604
  * Add users to audience
13148
- * Upload user data to a customer_list audience. Data is SHA256-hashed server-side before sending to the platform.
13605
+ * Uploads customer emails (and phone numbers on Meta) to a customer list audience, hashed before they are sent.
13606
+ *
13607
+ * Data is SHA256-hashed server-side before sending to the platform.
13149
13608
  * Email is used on every platform; phone is used on Meta only (other platforms ignore it). On TikTok and Pinterest,
13150
13609
  * the first upload also provisions the audience (deferred create). LinkedIn uploads are full-replace. Max 10,000 users per request.
13151
13610
  *
@@ -13193,6 +13652,8 @@ export const replaceAdAudienceCompanies = <ThrowOnError extends boolean = false>
13193
13652
 
13194
13653
  /**
13195
13654
  * Get Event Match Quality
13655
+ * Shows how well your server-side conversion events match users, with event match quality and coverage for Meta or Pinterest.
13656
+ *
13196
13657
  * Reads Meta Event Match Quality (EMQ) and pixel↔CAPI event coverage for a
13197
13658
  * pixel/dataset, live from Meta's Dataset Quality API. Web events only (a
13198
13659
  * Meta limitation). Other platforms return 405, except Pinterest. Requires the Ads add-on.
@@ -13212,6 +13673,8 @@ export const getConversionsQuality = <ThrowOnError extends boolean = false>(opti
13212
13673
 
13213
13674
  /**
13214
13675
  * Send conversion events
13676
+ * Sends conversion events, such as purchases or leads, from your server to an ad platform so it can attribute and optimize ads.
13677
+ *
13215
13678
  * Relay one or more conversion events to the target ad platform's native Conversions API.
13216
13679
  * Platform is inferred from the provided `accountId`. Requires the Ads add-on.
13217
13680
  *
@@ -13286,6 +13749,8 @@ export const sendConversions = <ThrowOnError extends boolean = false>(options: O
13286
13749
 
13287
13750
  /**
13288
13751
  * Adjust uploaded conversions
13752
+ * Retracts, restates the value of, or enhances conversions you already sent to Google Ads, for refunds or late customer data.
13753
+ *
13289
13754
  * Adjust conversions that were previously uploaded via `POST /v1/ads/conversions`:
13290
13755
  * retract them, restate their value, or enhance them with first-party data. Requires
13291
13756
  * the Ads add-on.
@@ -13325,6 +13790,8 @@ export const adjustConversions = <ThrowOnError extends boolean = false>(options:
13325
13790
 
13326
13791
  /**
13327
13792
  * List conversion actions
13793
+ * Lists the conversion actions in a Google Ads account, with the website tag snippets to install where available.
13794
+ *
13328
13795
  * Lists Google Ads conversion actions on the resolved customer, all types by
13329
13796
  * default. Each action's `tagSnippets` (global site tag + event snippet) is
13330
13797
  * included when Google has them for that action's type, e.g. `WEBPAGE`.
@@ -13349,6 +13816,8 @@ export const listConversionActions = <ThrowOnError extends boolean = false>(opti
13349
13816
 
13350
13817
  /**
13351
13818
  * Create website conversion action
13819
+ * Creates a Google Ads website conversion action and returns the tag snippets to install on your site.
13820
+ *
13352
13821
  * Creates a `WEBPAGE` conversion action (category `DEFAULT`) and returns it with
13353
13822
  * its tag snippets, read back after creation since Google never returns them on
13354
13823
  * the create response itself. Invalidates the cached list `GET` on this resource
@@ -13365,6 +13834,8 @@ export const createConversionAction = <ThrowOnError extends boolean = false>(opt
13365
13834
 
13366
13835
  /**
13367
13836
  * List account conversion goals
13837
+ * Lists a Google Ads account's default conversion goals, which ones are used for bidding, and the conversion actions in each.
13838
+ *
13368
13839
  * Google Ads account-default conversion goals (CustomerConversionGoal), one per
13369
13840
  * category and origin, with `biddable` (whether the goal is used for bidding and
13370
13841
  * reported in the Conversions column) and the conversion actions that belong to it,
@@ -13381,6 +13852,8 @@ export const listAdConversionGoals = <ThrowOnError extends boolean = false>(opti
13381
13852
 
13382
13853
  /**
13383
13854
  * Update account conversion goals
13855
+ * Turns bidding on or off for a Google Ads account's default conversion goals, which campaigns using account goals follow.
13856
+ *
13384
13857
  * Sets `biddable` on one or more account-default goals, addressed by category and
13385
13858
  * origin, in one mutate. Campaigns that use account-level goals
13386
13859
  * (`goalConfigLevel: CUSTOMER`) follow the change. Returns the re-read goal list.
@@ -13394,6 +13867,8 @@ export const updateAdConversionGoals = <ThrowOnError extends boolean = false>(op
13394
13867
 
13395
13868
  /**
13396
13869
  * Update a conversion action's settings
13870
+ * Changes a Google Ads conversion action's settings, such as primary or secondary, counting, value and lookback windows, or removes or restores it.
13871
+ *
13397
13872
  * Updates a Google Ads conversion action in one mutate, each field sent written on its own
13398
13873
  * update mask leaf so omitted fields keep their value. Send at least one field.
13399
13874
  *
@@ -13416,7 +13891,10 @@ export const updateConversionAction = <ThrowOnError extends boolean = false>(opt
13416
13891
 
13417
13892
  /**
13418
13893
  * List custom conversion goals
13894
+ * Lists the custom conversion goals in a Google Ads account, each a named set of conversion actions a campaign can bid on.
13895
+ *
13419
13896
  * Google Ads custom conversion goals (a named set of conversion actions a campaign can bid on). Removed goals are excluded. Cached like the other Google reads.
13897
+ *
13420
13898
  */
13421
13899
  export const listCustomConversionGoals = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListCustomConversionGoalsData, ThrowOnError>) => {
13422
13900
  return (options?.client ?? client).get<ListCustomConversionGoalsResponse, ListCustomConversionGoalsError, ThrowOnError>({
@@ -13427,7 +13905,10 @@ export const listCustomConversionGoals = <ThrowOnError extends boolean = false>(
13427
13905
 
13428
13906
  /**
13429
13907
  * Create a custom conversion goal
13908
+ * Creates a Google Ads custom conversion goal from a set of conversion actions, so a campaign can bid on just those.
13909
+ *
13430
13910
  * Creates a custom conversion goal from conversion action ids. Point a campaign at it with `PATCH /v1/ads/campaigns/{campaignId}/conversion-goals`.
13911
+ *
13431
13912
  */
13432
13913
  export const createCustomConversionGoal = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<CreateCustomConversionGoalData, ThrowOnError>) => {
13433
13914
  return (options?.client ?? client).post<CreateCustomConversionGoalResponse, CreateCustomConversionGoalError, ThrowOnError>({
@@ -13438,7 +13919,10 @@ export const createCustomConversionGoal = <ThrowOnError extends boolean = false>
13438
13919
 
13439
13920
  /**
13440
13921
  * Update a custom conversion goal
13441
- * Renames the goal and/or replaces its conversion actions. Returns the re-read goal.
13922
+ * Renames a Google Ads custom conversion goal or replaces the conversion actions in it.
13923
+ *
13924
+ * Returns the re-read goal.
13925
+ *
13442
13926
  */
13443
13927
  export const updateCustomConversionGoal = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<UpdateCustomConversionGoalData, ThrowOnError>) => {
13444
13928
  return (options?.client ?? client).patch<UpdateCustomConversionGoalResponse, UpdateCustomConversionGoalError, ThrowOnError>({
@@ -13449,7 +13933,10 @@ export const updateCustomConversionGoal = <ThrowOnError extends boolean = false>
13449
13933
 
13450
13934
  /**
13451
13935
  * Remove a custom conversion goal
13452
- * Removes the goal. Google refuses (400) while any campaign still uses it: switch those campaigns to another goal first.
13936
+ * Deletes a Google Ads custom conversion goal; switch any campaigns using it to another goal first.
13937
+ *
13938
+ * Google refuses (400) while any campaign still uses it: switch those campaigns to another goal first.
13939
+ *
13453
13940
  */
13454
13941
  export const removeCustomConversionGoal = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<RemoveCustomConversionGoalData, ThrowOnError>) => {
13455
13942
  return (options?.client ?? client).delete<RemoveCustomConversionGoalResponse, RemoveCustomConversionGoalError, ThrowOnError>({
@@ -13460,6 +13947,8 @@ export const removeCustomConversionGoal = <ThrowOnError extends boolean = false>
13460
13947
 
13461
13948
  /**
13462
13949
  * Get campaign conversion goals
13950
+ * Shows which conversion goals a Google campaign bids on, and whether it follows the account defaults or uses its own or a custom goal.
13951
+ *
13463
13952
  * A Google campaign's conversion goals (CampaignConversionGoal, `biddable` per category
13464
13953
  * and origin) and its goal config (ConversionGoalCampaignConfig): `goalConfigLevel`
13465
13954
  * CUSTOMER means the campaign follows the account-default goals, CAMPAIGN means it uses
@@ -13474,6 +13963,8 @@ export const getCampaignConversionGoals = <ThrowOnError extends boolean = false>
13474
13963
 
13475
13964
  /**
13476
13965
  * Update campaign conversion goals
13966
+ * Changes which conversions a Google campaign bids on, switching between account-default goals, its own goals or a custom goal.
13967
+ *
13477
13968
  * Sets `biddable` on campaign goals, switches `goalConfigLevel`, and/or points the
13478
13969
  * campaign at a custom conversion goal, in one mutate. `customConversionGoalId: null`
13479
13970
  * clears it; Google refuses that (400) while the campaign stays at CAMPAIGN level with
@@ -13489,6 +13980,8 @@ export const updateCampaignConversionGoals = <ThrowOnError extends boolean = fal
13489
13980
 
13490
13981
  /**
13491
13982
  * List conversion destinations
13983
+ * Lists where an ad account can receive conversion events (pixels, conversion actions or rules), so you know where to send them.
13984
+ *
13492
13985
  * Returns the list of pixels (Meta), conversion actions (Google),
13493
13986
  * conversion rules (LinkedIn), pixels (OpenAI Ads) or ad accounts
13494
13987
  * (Pinterest) accessible to the connected ads account. Use the returned `id` as `destinationId` when
@@ -13514,7 +14007,9 @@ export const listConversionDestinations = <ThrowOnError extends boolean = false>
13514
14007
 
13515
14008
  /**
13516
14009
  * Create a conversion destination
13517
- * Create a new conversion destination on the platform. Supported for
14010
+ * Creates a new place to send conversion events: a Google Ads conversion action or a LinkedIn conversion rule.
14011
+ *
14012
+ * Supported for
13518
14013
  * LinkedIn (conversion rule) and Google Ads (conversion action). Meta
13519
14014
  * and OpenAI Ads pixels are created via their own tracking-tags flow
13520
14015
  * instead (`POST /v1/accounts/{accountId}/tracking-tags`); this endpoint
@@ -13560,6 +14055,8 @@ export const createConversionDestination = <ThrowOnError extends boolean = false
13560
14055
 
13561
14056
  /**
13562
14057
  * Get a conversion destination
14058
+ * Shows one LinkedIn conversion rule with its full settings.
14059
+ *
13563
14060
  * LinkedIn-only today. Returns the full destination record for one
13564
14061
  * conversion rule. The `adAccountId` query parameter is required because
13565
14062
  * LinkedIn rules are scoped to a sponsored ad account.
@@ -13574,6 +14071,8 @@ export const getConversionDestination = <ThrowOnError extends boolean = false>(o
13574
14071
 
13575
14072
  /**
13576
14073
  * Update a conversion destination
14074
+ * Changes a LinkedIn conversion rule's name, value, attribution windows, or turns it on or off.
14075
+ *
13577
14076
  * Partial-update a conversion rule. LinkedIn-only today. Whitelisted
13578
14077
  * fields: `name`, `enabled`, attribution windows, `valueType`, `value`,
13579
14078
  * `attributionType`. The rule's `type` and parent ad account are
@@ -13590,6 +14089,8 @@ export const updateConversionDestination = <ThrowOnError extends boolean = false
13590
14089
 
13591
14090
  /**
13592
14091
  * Delete a conversion destination
14092
+ * Disables a LinkedIn conversion rule, which is how LinkedIn deletes it; the rule can still be read afterwards.
14093
+ *
13593
14094
  * LinkedIn-only today. LinkedIn does not expose hard-delete on conversion
13594
14095
  * rules; what their UI calls "delete" is the same `enabled: false` flip
13595
14096
  * we apply here. The rule remains fetchable via GET with
@@ -13609,6 +14110,8 @@ export const deleteConversionDestination = <ThrowOnError extends boolean = false
13609
14110
 
13610
14111
  /**
13611
14112
  * List associated campaigns
14113
+ * Lists the LinkedIn campaigns that track a conversion rule, so you can spot newer campaigns that still need linking.
14114
+ *
13612
14115
  * LinkedIn-only today. Returns the campaigns currently associated with
13613
14116
  * this conversion rule. Auto-association on rule creation
13614
14117
  * runs once at create time; campaigns created after the rule still need
@@ -13624,7 +14127,9 @@ export const listConversionAssociations = <ThrowOnError extends boolean = false>
13624
14127
 
13625
14128
  /**
13626
14129
  * Associate campaigns
13627
- * Associate one or more campaigns with this conversion rule. Returns a
14130
+ * Links campaigns to a LinkedIn conversion rule so they track it, reporting which links succeeded or failed.
14131
+ *
14132
+ * Returns a
13628
14133
  * per-campaign success/failure result so callers can retry only the
13629
14134
  * rows that failed (e.g. wrong campaign type for the rule's objective).
13630
14135
  *
@@ -13638,7 +14143,8 @@ export const addConversionAssociations = <ThrowOnError extends boolean = false>(
13638
14143
 
13639
14144
  /**
13640
14145
  * Remove associated campaigns
13641
- * Remove one or more campaign associations from this conversion rule.
14146
+ * Unlinks campaigns from a LinkedIn conversion rule so they stop tracking it.
14147
+ *
13642
14148
  * Pass `adAccountId` and `campaignIds` as query parameters
13643
14149
  * (`campaignIds` is comma-separated). The route also accepts a JSON
13644
14150
  * body with the same fields for clients that prefer DELETE-with-body,
@@ -13656,6 +14162,8 @@ export const removeConversionAssociations = <ThrowOnError extends boolean = fals
13656
14162
 
13657
14163
  /**
13658
14164
  * Get attribution metrics
14165
+ * Shows a LinkedIn conversion rule's attributed conversions, value, leads and cost over time.
14166
+ *
13659
14167
  * LinkedIn-only today. Returns conversion-attribution metrics
13660
14168
  * (`externalWebsiteConversions`, `externalWebsitePostClickConversions`,
13661
14169
  * `externalWebsitePostViewConversions`, `conversionValueInLocalCurrency`,
@@ -13742,6 +14250,8 @@ export const sendWhatsAppConversion = <ThrowOnError extends boolean = false>(opt
13742
14250
 
13743
14251
  /**
13744
14252
  * Create messaging ad
14253
+ * Creates a Meta ad that opens a chat with you on WhatsApp, Messenger or Instagram Direct when someone taps it.
14254
+ *
13745
14255
  * Creates a click-to-message ad; `destination` selects where the tapped ad opens a
13746
14256
  * conversation: WhatsApp, the Page's Messenger inbox or the linked Instagram account's Direct inbox.
13747
14257
  * `destinations` puts two or three of them on one ad set and lets Meta pick the app per viewer.
@@ -13769,6 +14279,8 @@ export const createMessagingAd = <ThrowOnError extends boolean = false>(options:
13769
14279
 
13770
14280
  /**
13771
14281
  * Create Click-to-Call ad
14282
+ * Creates a Meta ad with a Call Now button that dials your phone number, optimized for quality calls.
14283
+ *
13772
14284
  * Same shape and flow as POST /v1/ads/ctwa, but the CTA is CALL_NOW dialing `phoneNumber`
13773
14285
  * via a tel: link. The ad set is destination_type PHONE_CALL optimizing QUALITY_CALL
13774
14286
  * and the campaign objective defaults to OUTCOME_LEADS.
@@ -13817,7 +14329,10 @@ export const createCtwaAd = <ThrowOnError extends boolean = false>(options: Opti
13817
14329
 
13818
14330
  /**
13819
14331
  * List custom conversions
14332
+ * Lists a Meta ad account's custom conversions, including archived ones.
14333
+ *
13820
14334
  * The ad account's Meta custom conversions, including archived ones (`isArchived`).
14335
+ *
13821
14336
  */
13822
14337
  export const listCustomConversions = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListCustomConversionsData, ThrowOnError>) => {
13823
14338
  return (options?.client ?? client).get<ListCustomConversionsResponse, ListCustomConversionsError, ThrowOnError>({
@@ -13828,6 +14343,8 @@ export const listCustomConversions = <ThrowOnError extends boolean = false>(opti
13828
14343
 
13829
14344
  /**
13830
14345
  * Create custom conversion
14346
+ * Creates a Meta custom conversion for ads to optimise toward, reusing an existing one with the same name and pixel.
14347
+ *
13831
14348
  * Provision the Meta custom conversion an ads flow optimises toward, and hand back the
13832
14349
  * `customConversionId` for `promotedObject.customConversionId` on POST /v1/ads/create.
13833
14350
  * Removes the manual "create it in Ads Manager first" step.
@@ -14456,6 +14973,8 @@ export const startBusinessAgentEvalRun = <ThrowOnError extends boolean = false>(
14456
14973
 
14457
14974
  /**
14458
14975
  * List tracking tags
14976
+ * Lists the pixels and other measurement tags an ads account can see, so you can inspect or install them.
14977
+ *
14459
14978
  * Returns the tracking tags (Meta Pixels, or OpenAI Ads pixels) the
14460
14979
  * connected ads account can see. Pass `?adAccountId=act_...` (Meta only)
14461
14980
  * to scope the list to a single ad account; omit it to list every pixel
@@ -14500,6 +15019,8 @@ export const listTrackingTags = <ThrowOnError extends boolean = false>(options:
14500
15019
 
14501
15020
  /**
14502
15021
  * Create a tracking tag
15022
+ * Creates a measurement pixel on an ad account and returns the snippet to install on your site.
15023
+ *
14503
15024
  * Meta: creates a Meta Pixel on the given ad account (`POST /act_{id}/adspixels`,
14504
15025
  * where `name` is the only input). Returns the created tag including its
14505
15026
  * install `code`. The pixel is owned by the Business Manager that owns the
@@ -14570,6 +15091,8 @@ export const createTrackingTag = <ThrowOnError extends boolean = false>(options:
14570
15091
 
14571
15092
  /**
14572
15093
  * Get a tracking tag
15094
+ * Shows one pixel or measurement tag in full, including its install snippet, when it last fired and its conversion events.
15095
+ *
14573
15096
  * Returns the full tag record including the base-code `code` snippet,
14574
15097
  * `lastFiredTime`, `ownerBusinessId`, `isUnavailable`, etc. Meta only
14575
15098
  * (platform `metaads`); other platforms return 501.
@@ -14612,6 +15135,8 @@ export const getTrackingTag = <ThrowOnError extends boolean = false>(options: Op
14612
15135
 
14613
15136
  /**
14614
15137
  * Update a tracking tag
15138
+ * Changes a pixel's settings, such as its name or automatic matching, on platforms that allow edits.
15139
+ *
14615
15140
  * Partial-update a pixel. Whitelisted fields: `name` (rename),
14616
15141
  * `enableAutomaticMatching`, `automaticMatchingFields`,
14617
15142
  * `firstPartyCookieStatus`, `dataUseSetting`. At least one is required.
@@ -14667,6 +15192,8 @@ export const updateTrackingTag = <ThrowOnError extends boolean = false>(options:
14667
15192
 
14668
15193
  /**
14669
15194
  * List accounts it is shared with
15195
+ * Lists the other ad accounts a pixel is shared with.
15196
+ *
14670
15197
  * Meta (`metaads`) and LinkedIn (`linkedinads`); other platforms return 501.
14671
15198
  *
14672
15199
  * LinkedIn (`linkedinads`): the ad accounts this connection can see that hold access to the
@@ -14686,8 +15213,9 @@ export const listTrackingTagSharedAccounts = <ThrowOnError extends boolean = fal
14686
15213
 
14687
15214
  /**
14688
15215
  * Share with an ad account
14689
- * Shares the pixel with another ad account so campaigns/audiences in that
14690
- * account can use it. Requires that you administer both the pixel's owning
15216
+ * Shares a pixel with another ad account so its campaigns and audiences can use it.
15217
+ *
15218
+ * Requires that you administer both the pixel's owning
14691
15219
  * Business Manager and the target ad account; a pixel on a personal
14692
15220
  * (non-BM) ad account can't be shared (Meta will reject the call). Meta
14693
15221
  * and LinkedIn; other platforms return 501.
@@ -14712,6 +15240,8 @@ export const addTrackingTagSharedAccount = <ThrowOnError extends boolean = false
14712
15240
 
14713
15241
  /**
14714
15242
  * Stop sharing with an account
15243
+ * Stops sharing a pixel with an ad account.
15244
+ *
14715
15245
  * `adAccountId` may be passed as a query parameter (recommended) or as a
14716
15246
  * JSON body field for clients that can send DELETE bodies. Meta and
14717
15247
  * LinkedIn; other platforms return 501.
@@ -14732,6 +15262,8 @@ export const removeTrackingTagSharedAccount = <ThrowOnError extends boolean = fa
14732
15262
 
14733
15263
  /**
14734
15264
  * Install on a Shopify store or WordPress site
15265
+ * Installs a pixel on a connected Shopify store or WordPress site, so store visits and purchases are reported without editing the theme.
15266
+ *
14735
15267
  * Puts the Meta pixel on a connected Shopify store's storefront and checkout through
14736
15268
  * Zernio's Shopify web pixel (a Shopify app pixel, no theme edits). The store then sends
14737
15269
  * PageView, ViewContent, AddToCart, Search, InitiateCheckout, AddPaymentInfo and Purchase
@@ -14820,6 +15352,8 @@ export const installTrackingTagOnStore = <ThrowOnError extends boolean = false>(
14820
15352
 
14821
15353
  /**
14822
15354
  * Get store install status
15355
+ * Shows whether a tracking tag is live on your Shopify store or WordPress site, and whether a WordPress install would be blocked.
15356
+ *
14823
15357
  * Whether this tag is the one the Shopify store fires for its platform. `installedTagId`
14824
15358
  * names the tag of that platform the store currently fires, which can be a different tag,
14825
15359
  * and `tags` lists every Zernio tag on the store (all platforms).
@@ -14841,7 +15375,9 @@ export const getTrackingTagStoreInstall = <ThrowOnError extends boolean = false>
14841
15375
 
14842
15376
  /**
14843
15377
  * Remove from a Shopify store or WordPress site
14844
- * Removes the tag from the store. Idempotent: nothing installed returns 200 with
15378
+ * Removes a tracking tag from your Shopify store or WordPress site, leaving other platforms' tags and hand-added pixel code in place.
15379
+ *
15380
+ * Idempotent: nothing installed returns 200 with
14845
15381
  * `installed: false`. If the store fires a different tag of the same platform, nothing is
14846
15382
  * removed and the call answers 409 `invalid_resource_state`. Shopify: other platforms'
14847
15383
  * tags stay; the web pixel itself is deleted once no tag remains.
@@ -14859,6 +15395,8 @@ export const removeTrackingTagFromStore = <ThrowOnError extends boolean = false>
14859
15395
 
14860
15396
  /**
14861
15397
  * List conversion events
15398
+ * Lists the conversion events tied to a tracking tag, such as Google conversion actions or Meta custom conversions.
15399
+ *
14862
15400
  * The tag's conversion events, on platforms where each conversion is its own object:
14863
15401
  * Google conversion actions, LinkedIn conversion rules, X web event tags, OpenAI event
14864
15402
  * settings, TikTok pixel events, Meta custom conversions, Pinterest advertiser defined
@@ -14911,7 +15449,9 @@ export const listTrackingTagEvents = <ThrowOnError extends boolean = false>(opti
14911
15449
 
14912
15450
  /**
14913
15451
  * Create a conversion event
14914
- * Creates a conversion event tied to the tag. Pass the platform's own event type in `type`
15452
+ * Creates a conversion event on a tracking tag, such as a purchase or lead, so ads can measure and optimise toward it.
15453
+ *
15454
+ * Pass the platform's own event type in `type`
14915
15455
  * (e.g. Google `PURCHASE`, LinkedIn `ADD_TO_CART`, X `CHECKOUT_INITIATED`) or a neutral
14916
15456
  * `siteEvent` the platform maps to its closest type. Each platform stores a subset of the
14917
15457
  * optional fields; sending one it does not store answers 400 naming the supported fields.
@@ -14991,6 +15531,8 @@ export const createTrackingTagEvent = <ThrowOnError extends boolean = false>(opt
14991
15531
 
14992
15532
  /**
14993
15533
  * Update a conversion event
15534
+ * Changes a conversion event's settings, such as its name or default value, where the platform allows edits.
15535
+ *
14994
15536
  * Partial update; at least one field. A field the platform does not store answers 400.
14995
15537
  *
14996
15538
  * OpenAI Ads answers 501: OpenAI documents only list and create for event settings, and
@@ -15028,7 +15570,9 @@ export const updateTrackingTagEvent = <ThrowOnError extends boolean = false>(opt
15028
15570
 
15029
15571
  /**
15030
15572
  * Delete a conversion event
15031
- * Removes the conversion event. Platforms without a hard delete archive or disable it
15573
+ * Removes a conversion event from a tracking tag, or archives or disables it on platforms that have no hard delete.
15574
+ *
15575
+ * Platforms without a hard delete archive or disable it
15032
15576
  * instead; `state` in the response says which (`deleted`, `archived`, `disabled`).
15033
15577
  *
15034
15578
  * OpenAI Ads answers 501: there is no delete or archive route for event settings
@@ -15066,7 +15610,9 @@ export const deleteTrackingTagEvent = <ThrowOnError extends boolean = false>(opt
15066
15610
 
15067
15611
  /**
15068
15612
  * List tag users
15069
- * People and system users of the owning business with access to the tag. Platforms without
15613
+ * Lists the people and system users in the owning Meta business who have access to a pixel.
15614
+ *
15615
+ * Platforms without
15070
15616
  * tag user assignment answer 501.
15071
15617
  *
15072
15618
  * Meta: the pixel's assigned users in its owning Business Manager. A pixel on a personal ad
@@ -15084,7 +15630,9 @@ export const listTrackingTagUsers = <ThrowOnError extends boolean = false>(optio
15084
15630
 
15085
15631
  /**
15086
15632
  * Assign a user to a tag
15087
- * Gives a user of the owning business access to the tag. Assigning an already assigned user
15633
+ * Gives a person in the owning Meta business access to a pixel, or replaces the tasks they already have on it.
15634
+ *
15635
+ * Assigning an already assigned user
15088
15636
  * replaces their task set.
15089
15637
  *
15090
15638
  * Meta: `tasks` are `AA_ANALYZE`, `ADVERTISE`, `ANALYZE`, `EDIT`, `UPLOAD`; `userId` is the
@@ -15117,7 +15665,9 @@ export const removeTrackingTagUser = <ThrowOnError extends boolean = false>(opti
15117
15665
 
15118
15666
  /**
15119
15667
  * List partner businesses of a tag
15120
- * Other businesses the tag is shared with. Read-only. Platforms without partner sharing
15668
+ * Lists the partner businesses a Meta pixel is shared with (read-only, sharing with new partners is not supported).
15669
+ *
15670
+ * Read-only. Platforms without partner sharing
15121
15671
  * answer 501.
15122
15672
  *
15123
15673
  * Meta: the pixel's shared agencies. Sharing a pixel with a new partner is not available:
@@ -15134,7 +15684,9 @@ export const listTrackingTagPartners = <ThrowOnError extends boolean = false>(op
15134
15684
 
15135
15685
  /**
15136
15686
  * Get tag diagnostics
15137
- * The platform's health checks for the tag. Platforms without tag diagnostics answer 501.
15687
+ * Shows Meta's health checks for a pixel, such as events missing parameters or product ids that do not match your catalogs.
15688
+ *
15689
+ * Platforms without tag diagnostics answer 501.
15138
15690
  *
15139
15691
  * Meta: the pixel's checks from Events Manager (`da_checks`), e.g. whether events miss
15140
15692
  * parameters or their content ids do not match the pixel's catalogs.
@@ -15149,8 +15701,9 @@ export const getTrackingTagDiagnostics = <ThrowOnError extends boolean = false>(
15149
15701
 
15150
15702
  /**
15151
15703
  * Get aggregated event stats
15152
- * Returns event counts / health for the tag, where the platform exposes
15153
- * them. Meta: aggregated counts (`GET /{pixel_id}/stats`), rows passed
15704
+ * Shows event counts or health for a tracking tag so you can confirm it is firing, where the platform reports them.
15705
+ *
15706
+ * Meta: aggregated counts (`GET /{pixel_id}/stats`), rows passed
15154
15707
  * through as-is; their shape depends on the `aggregation` requested.
15155
15708
  * Platforms without a stats API answer 501.
15156
15709
  *
@@ -16422,7 +16975,10 @@ export const listTikTokAdPixels = <ThrowOnError extends boolean = false>(options
16422
16975
 
16423
16976
  /**
16424
16977
  * List partnership ad content
16425
- * Private beta. Lists creator Instagram posts available to the advertiser for Partnership Ads. Supply creatorUsername or postUrl. Requires instagram_branded_content_ads_brand permission and an advertiser Instagram Business Account.
16978
+ * Lists a creator's Instagram posts you can run as Partnership Ads, looked up by creator or post link (private beta).
16979
+ *
16980
+ * Lists creator Instagram posts available to the advertiser for Partnership Ads. Supply creatorUsername or postUrl. Requires instagram_branded_content_ads_brand permission and an advertiser Instagram Business Account.
16981
+ *
16426
16982
  */
16427
16983
  export const listPartnershipAdContent = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListPartnershipAdContentData, ThrowOnError>) => {
16428
16984
  return (options?.client ?? client).get<ListPartnershipAdContentResponse, ListPartnershipAdContentError, ThrowOnError>({
@@ -16433,7 +16989,10 @@ export const listPartnershipAdContent = <ThrowOnError extends boolean = false>(o
16433
16989
 
16434
16990
  /**
16435
16991
  * List partnership permissions
16436
- * Private beta. Lists granted or pending creator permissions for the advertiser Instagram Business Account. Requires instagram_branded_content_ads_brand permission.
16992
+ * Lists the creators who have granted, or have pending, permission for your Instagram account to run Partnership Ads with them (private beta).
16993
+ *
16994
+ * Lists granted or pending creator permissions for the advertiser Instagram Business Account. Requires instagram_branded_content_ads_brand permission.
16995
+ *
16437
16996
  */
16438
16997
  export const listPartnershipAdPermissions = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<ListPartnershipAdPermissionsData, ThrowOnError>) => {
16439
16998
  return (options?.client ?? client).get<ListPartnershipAdPermissionsResponse, ListPartnershipAdPermissionsError, ThrowOnError>({
@@ -16444,7 +17003,10 @@ export const listPartnershipAdPermissions = <ThrowOnError extends boolean = fals
16444
17003
 
16445
17004
  /**
16446
17005
  * Set partnership permission
16447
- * Private beta. Requests permission from a creator or revokes it when revoke is true. Requests require the creator to approve in Instagram. Requires instagram_branded_content_ads_brand permission.
17006
+ * Asks a creator for permission to run Partnership Ads with their content, or revokes it (private beta).
17007
+ *
17008
+ * Requests permission from a creator or revokes it when revoke is true. Requests require the creator to approve in Instagram. Requires instagram_branded_content_ads_brand permission.
17009
+ *
16448
17010
  */
16449
17011
  export const setPartnershipAdPermission = <ThrowOnError extends boolean = false>(options: OptionsLegacyParser<SetPartnershipAdPermissionData, ThrowOnError>) => {
16450
17012
  return (options?.client ?? client).post<SetPartnershipAdPermissionResponse, SetPartnershipAdPermissionError, ThrowOnError>({