zernio-sdk 0.0.550 → 0.0.552

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.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +73 -75
  3. data/docs/AdAccountsApi.md +915 -0
  4. data/docs/AdCampaignsApi.md +615 -15
  5. data/docs/AdCreativesApi.md +815 -0
  6. data/docs/AdInsightsApi.md +415 -0
  7. data/docs/AdTargetingApi.md +371 -0
  8. data/docs/AnalyticsApi.md +7 -7
  9. data/docs/BoostPostRequestTracking.md +1 -1
  10. data/docs/{CreateLeadFormRequestQuestionsInnerOptionsInner.md → BoostPostRequestTrackingUrlTagsInner.md} +2 -2
  11. data/docs/ConversionsApi.md +890 -0
  12. data/docs/CreateLeadFormRequestQuestionsInner.md +1 -1
  13. data/docs/LeadGenApi.md +527 -0
  14. data/docs/MessagingAdsApi.md +215 -0
  15. data/docs/ReachAndFrequencyApi.md +294 -0
  16. data/docs/TrackingTagsApi.md +141 -0
  17. data/docs/YouTubeDailyViewsResponse.md +2 -0
  18. data/docs/YouTubeDemographicsResponse.md +2 -0
  19. data/docs/YouTubeVideoRetentionResponse.md +2 -0
  20. data/lib/zernio-sdk/api/ad_accounts_api.rb +958 -0
  21. data/lib/zernio-sdk/api/ad_campaigns_api.rb +618 -12
  22. data/lib/zernio-sdk/api/ad_creatives_api.rb +826 -0
  23. data/lib/zernio-sdk/api/ad_insights_api.rb +446 -0
  24. data/lib/zernio-sdk/api/ad_targeting_api.rb +404 -0
  25. data/lib/zernio-sdk/api/analytics_api.rb +8 -8
  26. data/lib/zernio-sdk/api/conversions_api.rb +936 -0
  27. data/lib/zernio-sdk/api/lead_gen_api.rb +547 -0
  28. data/lib/zernio-sdk/api/messaging_ads_api.rb +226 -0
  29. data/lib/zernio-sdk/api/reach_and_frequency_api.rb +316 -0
  30. data/lib/zernio-sdk/api/tracking_tags_api.rb +137 -0
  31. data/lib/zernio-sdk/models/boost_post_request_tracking.rb +5 -2
  32. data/lib/zernio-sdk/models/{create_lead_form_request_questions_inner_options_inner.rb → boost_post_request_tracking_url_tags_inner.rb} +3 -3
  33. data/lib/zernio-sdk/models/create_lead_form_request_questions_inner.rb +1 -1
  34. data/lib/zernio-sdk/models/you_tube_daily_views_response.rb +11 -1
  35. data/lib/zernio-sdk/models/you_tube_demographics_response.rb +11 -1
  36. data/lib/zernio-sdk/models/you_tube_video_retention_response.rb +11 -1
  37. data/lib/zernio-sdk/version.rb +1 -1
  38. data/lib/zernio-sdk.rb +9 -2
  39. data/openapi.yaml +329 -163
  40. data/spec/api/ad_accounts_api_spec.rb +206 -0
  41. data/spec/api/ad_campaigns_api_spec.rb +119 -6
  42. data/spec/api/ad_creatives_api_spec.rb +182 -0
  43. data/spec/api/ad_insights_api_spec.rb +120 -0
  44. data/spec/api/ad_targeting_api_spec.rb +101 -0
  45. data/spec/api/analytics_api_spec.rb +4 -4
  46. data/spec/api/conversions_api_spec.rb +199 -0
  47. data/spec/api/lead_gen_api_spec.rb +131 -0
  48. data/spec/api/messaging_ads_api_spec.rb +71 -0
  49. data/spec/api/reach_and_frequency_api_spec.rb +87 -0
  50. data/spec/api/tracking_tags_api_spec.rb +25 -0
  51. data/spec/models/{create_lead_form_request_questions_inner_options_inner_spec.rb → boost_post_request_tracking_url_tags_inner_spec.rb} +6 -6
  52. data/spec/models/you_tube_daily_views_response_spec.rb +6 -0
  53. data/spec/models/you_tube_demographics_response_spec.rb +6 -0
  54. data/spec/models/you_tube_video_retention_response_spec.rb +6 -0
  55. metadata +38 -10
  56. data/docs/AdsApi.md +0 -5278
  57. data/lib/zernio-sdk/api/ads_api.rb +0 -5391
  58. data/spec/api/ads_api_spec.rb +0 -1015
data/openapi.yaml CHANGED
@@ -338,21 +338,59 @@ tags:
338
338
  `platformPostId` to match comments on every post on the account, with unlimited
339
339
  automations stacked per account). Supports dedup, optional public comment reply, and
340
340
  auto-creates contacts.
341
- - name: Ads
342
- description: |
343
- Paid advertising management across Meta (Facebook/Instagram), Google, TikTok, LinkedIn, Pinterest, and X/Twitter.
344
- Create, boost, pause/resume ads and campaigns, view metrics, and manage audiences.
345
- Requires the Ads add-on.
346
341
  - name: Ad Campaigns
347
342
  description: |
348
- Campaign-level operations. Campaigns are virtual aggregations of ads grouped by their platform campaign ID.
349
- List campaigns with aggregate metrics, or pause/resume all ads in a campaign at once.
343
+ The advertising structure: campaigns, ad sets, and ads. Create standalone campaigns/ads, boost an
344
+ organic post, duplicate at any level, pause/resume, and read the full tree and timeline. Campaigns
345
+ are virtual aggregations of ads grouped by their platform campaign ID.
346
+ Per-operation platform support is shown by the platform badges. Requires the Ads add-on.
347
+ - name: Ad Creatives
348
+ description: |
349
+ Creative assets: the standalone creative library (create/reuse/rename), the ad-account image library
350
+ (list + base64 upload), rendered ad previews, and product catalogs for Advantage+/dynamic ads. Meta only.
350
351
  Requires the Ads add-on.
351
352
  - name: Ad Audiences
352
353
  description: |
353
- Custom audience management for ad targeting. Create customer lists, website retargeting audiences,
354
- and lookalike audiences. Upload user data (hashed server-side). Currently Meta-only for creation,
355
- read-only for other platforms.
354
+ Custom audiences for targeting: customer lists (hashed upload), website + engagement + lookalike
355
+ audiences, and reusable saved-targeting presets. Creation support varies by platform (badges show which);
356
+ LinkedIn adds company-list and engagement segments.
357
+ Requires the Ads add-on.
358
+ - name: Ad Targeting
359
+ description: |
360
+ Targeting discovery: search interests/behaviors/geo/demographics, estimate reach, and (LinkedIn)
361
+ bid pricing and supply forecasts. Feeds the targeting fields on create.
362
+ Requires the Ads add-on.
363
+ - name: Ad Insights
364
+ description: |
365
+ Measurement: cached aggregate analytics per ad/campaign, plus live Meta Graph insight queries
366
+ (arbitrary fields, breakdowns, filtering, attribution windows) and async report runs.
367
+ Requires the Ads add-on.
368
+ - name: Conversions
369
+ description: |
370
+ Server-side Conversions API: send + adjust conversion events (with hashed matching and consent/LDU
371
+ forwarding), read Event Match Quality, and manage conversion destinations (pixels/datasets) and their
372
+ ad-account associations. Supported on Meta, Google, TikTok and LinkedIn (badges show per operation).
373
+ Requires the Ads add-on.
374
+ - name: Messaging Ads
375
+ description: |
376
+ Click-to-message and click-to-call destination ads: WhatsApp (CTWA), Messenger, Instagram Direct,
377
+ and Call ads. Meta only.
378
+ Requires the Ads add-on.
379
+ - name: Reach and Frequency
380
+ description: |
381
+ Fixed-price reserved (Reach & Frequency) buying: quote a prediction, reserve price + inventory, and
382
+ buy via a RESERVED campaign. Meta only.
383
+ Requires the Ads add-on.
384
+ - name: Lead Gen
385
+ description: |
386
+ Instant lead forms on Facebook Pages: create/list/archive forms and retrieve (or test) their leads.
387
+ Meta only.
388
+ Requires the Ads add-on.
389
+ - name: Ad Accounts
390
+ description: |
391
+ Ad accounts and operational/diagnostic reads: list accounts, account finances, change/audit log,
392
+ A/B studies, high-demand periods, ad labels, DSA defaults + recommendations, and Business Managers
393
+ (Meta) / Business Centers (TikTok).
356
394
  Requires the Ads add-on.
357
395
  - name: Tracking Tags
358
396
  description: |
@@ -1657,6 +1695,10 @@ components:
1657
1695
  endDate:
1658
1696
  type: string
1659
1697
  format: date
1698
+ provisionalSince:
1699
+ type: string
1700
+ format: date
1701
+ description: 'Present only when the range reaches into YouTube''s ~3-day processing window: the first date whose numbers are provisional and may still be revised by YouTube.'
1660
1702
  totalViews:
1661
1703
  type: integer
1662
1704
  description: Sum of views across all days in the range
@@ -1728,6 +1770,10 @@ components:
1728
1770
  endDate:
1729
1771
  type: string
1730
1772
  format: date
1773
+ provisionalSince:
1774
+ type: string
1775
+ format: date
1776
+ description: 'Present only when the range reaches into YouTube''s ~3-day processing window: the first date whose numbers are provisional and may still be revised by YouTube.'
1731
1777
  retentionCurve:
1732
1778
  type: array
1733
1779
  description: Up to 100 points covering the video timeline, aggregated over the date range. Empty for videos with very few views.
@@ -1935,6 +1981,10 @@ components:
1935
1981
  endDate:
1936
1982
  type: string
1937
1983
  example: "2026-03-31"
1984
+ provisionalSince:
1985
+ type: string
1986
+ format: date
1987
+ description: 'Present only when the range reaches into YouTube''s ~3-day processing window: the first date whose numbers are provisional and may still be revised by YouTube.'
1938
1988
  note:
1939
1989
  type: string
1940
1990
  example: "Age/gender values are viewer percentages (0-100). Country values are view counts. Data based on signed-in viewers only, with 2-3 day delay."
@@ -8895,7 +8945,9 @@ paths:
8895
8945
  summary: Get YouTube daily views
8896
8946
  description: |
8897
8947
  Returns daily view counts for a YouTube video including views, watch time, and subscriber changes.
8898
- Requires yt-analytics.readonly scope (re-authorization may be needed). Data has a 2-3 day delay. Max 90 days, defaults to last 30 days.
8948
+ Requires yt-analytics.readonly scope (re-authorization may be needed). YouTube finalizes analytics
8949
+ with a ~3-day delay; by default only finalized days are returned, and an explicit endDate can reach
8950
+ into the delay window (see the endDate parameter). Max 90 days, defaults to last 30 days.
8899
8951
  parameters:
8900
8952
  - name: videoId
8901
8953
  in: query
@@ -8914,7 +8966,12 @@ paths:
8914
8966
  - name: endDate
8915
8967
  in: query
8916
8968
  schema: { type: string, format: date }
8917
- description: End date (YYYY-MM-DD). Defaults to 3 days ago (YouTube data latency).
8969
+ description: |
8970
+ End date (YYYY-MM-DD). Defaults to 3 days ago, the newest fully finalized day
8971
+ (YouTube finalizes analytics with a ~3-day delay). An explicit endDate is honored
8972
+ up to today: days inside the delay window are provisional and may still be revised
8973
+ by YouTube (see provisionalSince in the response), and days YouTube has not
8974
+ processed yet are omitted from dailyViews.
8918
8975
  responses:
8919
8976
  '200':
8920
8977
  description: Daily views breakdown
@@ -9053,7 +9110,11 @@ paths:
9053
9110
  - name: endDate
9054
9111
  in: query
9055
9112
  schema: { type: string, format: date }
9056
- description: End date (YYYY-MM-DD). Defaults to 3 days ago (YouTube data latency).
9113
+ description: |
9114
+ End date (YYYY-MM-DD). Defaults to 3 days ago, the newest fully finalized day
9115
+ (YouTube finalizes analytics with a ~3-day delay). An explicit endDate is honored
9116
+ up to today: days inside the delay window are provisional and may still be revised
9117
+ by YouTube (see provisionalSince in the response).
9057
9118
  responses:
9058
9119
  '200':
9059
9120
  description: Audience retention curve
@@ -9624,7 +9685,10 @@ paths:
9624
9685
  in: query
9625
9686
  schema: { type: string, format: date }
9626
9687
  description: |
9627
- End date in YYYY-MM-DD format. Defaults to 3 days ago (YouTube data latency).
9688
+ End date (YYYY-MM-DD). Defaults to 3 days ago, the newest fully finalized day
9689
+ (YouTube finalizes analytics with a ~3-day delay). An explicit endDate is honored
9690
+ up to today: days inside the delay window are provisional and may still be revised
9691
+ by YouTube (see provisionalSince in the response).
9628
9692
  responses:
9629
9693
  '200':
9630
9694
  description: Demographic insights data
@@ -33238,7 +33302,8 @@ paths:
33238
33302
  /v1/ads:
33239
33303
  get:
33240
33304
  operationId: listAds
33241
- tags: [Ads]
33305
+ tags: ["Ad Campaigns"]
33306
+ x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
33242
33307
  summary: List ads
33243
33308
  description: |
33244
33309
  Returns a paginated list of ads with metrics computed over an optional date range.
@@ -33292,7 +33357,8 @@ paths:
33292
33357
  /v1/ads/campaigns:
33293
33358
  get:
33294
33359
  operationId: listAdCampaigns
33295
- tags: [Ad Campaigns]
33360
+ tags: ["Ad Campaigns"]
33361
+ x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
33296
33362
  summary: List campaigns
33297
33363
  description: |
33298
33364
  Returns campaigns as virtual aggregations over ad documents grouped by platform campaign ID.
@@ -33329,14 +33395,15 @@ paths:
33329
33395
 
33330
33396
  post:
33331
33397
  operationId: createAdCampaign
33332
- tags: [Ad Campaigns]
33333
- summary: Create a standalone campaign (Meta)
33398
+ tags: ["Ad Campaigns"]
33399
+ x-platforms: ["meta"]
33400
+ summary: Create a standalone campaign
33334
33401
  description: |-
33335
33402
  Creates a campaign WITHOUT its first ad set / ad (the ODAX shell only). Ad sets join it
33336
33403
  later via `existingCampaignId` on the create endpoints. A budget here is campaign-level
33337
33404
  (CBO) by definition; omit it for ABO (each ad set carries its own budget). Created
33338
33405
  `PAUSED` unless `status: ACTIVE`. The campaign materializes in `/v1/ads/tree` via the
33339
- next sync discovery pass. Meta only.
33406
+ next sync discovery pass.
33340
33407
  security:
33341
33408
  - bearerAuth: []
33342
33409
  requestBody:
@@ -33379,7 +33446,8 @@ paths:
33379
33446
  /v1/ads/campaigns/{campaignId}/status:
33380
33447
  put:
33381
33448
  operationId: updateAdCampaignStatus
33382
- tags: [Ad Campaigns]
33449
+ tags: ["Ad Campaigns"]
33450
+ x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
33383
33451
  summary: Pause or resume a campaign
33384
33452
  description: |
33385
33453
  Updates the status of all ads in a campaign. Makes one platform API call (not per-ad) since status cascades through the campaign hierarchy.
@@ -33419,7 +33487,8 @@ paths:
33419
33487
  /v1/ads/campaigns/{campaignId}:
33420
33488
  put:
33421
33489
  operationId: updateAdCampaign
33422
- tags: [Ad Campaigns]
33490
+ tags: ["Ad Campaigns"]
33491
+ x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
33423
33492
  summary: Update a campaign
33424
33493
  description: |
33425
33494
  Campaign-level edits. At least one of `budget`, `bidStrategy`, `name` or `platformSpecificData` is required.
@@ -33485,7 +33554,8 @@ paths:
33485
33554
 
33486
33555
  delete:
33487
33556
  operationId: deleteAdCampaign
33488
- tags: [Ad Campaigns]
33557
+ tags: ["Ad Campaigns"]
33558
+ x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
33489
33559
  summary: Delete a campaign
33490
33560
  description: |
33491
33561
  Deletes the whole campaign on the platform, cascading to its ad sets
@@ -33524,7 +33594,8 @@ paths:
33524
33594
  /v1/ads/campaigns/bulk-status:
33525
33595
  post:
33526
33596
  operationId: bulkUpdateAdCampaignStatus
33527
- tags: [Ad Campaigns]
33597
+ tags: ["Ad Campaigns"]
33598
+ x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
33528
33599
  summary: Pause or resume many campaigns
33529
33600
  description: |
33530
33601
  Process up to 50 campaigns in one call. Each campaign is updated
@@ -33581,7 +33652,8 @@ paths:
33581
33652
  /v1/ads/campaigns/{campaignId}/duplicate:
33582
33653
  post:
33583
33654
  operationId: duplicateAdCampaign
33584
- tags: [Ad Campaigns]
33655
+ tags: ["Ad Campaigns"]
33656
+ x-platforms: ["meta", "tiktok", "linkedin"]
33585
33657
  summary: Duplicate a campaign
33586
33658
  description: |
33587
33659
  Duplicates a campaign, including its ad sets, ads, creatives, and
@@ -33666,14 +33738,15 @@ paths:
33666
33738
  /v1/ads/ad-sets/{adSetId}/duplicate:
33667
33739
  post:
33668
33740
  operationId: duplicateAdSet
33669
- tags: [Ad Campaigns]
33670
- summary: Duplicate an ad set (Meta)
33741
+ tags: ["Ad Campaigns"]
33742
+ x-platforms: ["meta"]
33743
+ summary: Duplicate an ad set
33671
33744
  description: |-
33672
33745
  Duplicates an ad set, including its ads and creatives by default (`deepCopy: true`),
33673
33746
  via Meta's native `POST /{adset-id}/copies`. The copy is created paused so callers can
33674
33747
  review before launching. `campaignId` retargets the copy into another campaign; omitted
33675
33748
  = the source's own campaign. The new hierarchy materializes asynchronously — sync
33676
- discovery is triggered automatically (`syncAfter: false` to skip). Meta only.
33749
+ discovery is triggered automatically (`syncAfter: false` to skip).
33677
33750
  security:
33678
33751
  - bearerAuth: []
33679
33752
  parameters:
@@ -33715,13 +33788,14 @@ paths:
33715
33788
  /v1/ads/{adId}/duplicate:
33716
33789
  post:
33717
33790
  operationId: duplicateAd
33718
- tags: [Ads]
33719
- summary: Duplicate an ad (Meta)
33791
+ tags: ["Ad Campaigns"]
33792
+ x-platforms: ["meta"]
33793
+ summary: Duplicate an ad
33720
33794
  description: |-
33721
33795
  Duplicates a single ad via Meta's native `POST /{ad-id}/copies`. The copy is created
33722
33796
  paused. `adSetId` retargets the copy into another ad set; omitted = the source's own ad
33723
33797
  set. Accepts the Zernio ad id or the platform ad id. Sync discovery is triggered
33724
- automatically (`syncAfter: false` to skip). Meta only.
33798
+ automatically (`syncAfter: false` to skip).
33725
33799
  security:
33726
33800
  - bearerAuth: []
33727
33801
  parameters:
@@ -33758,14 +33832,15 @@ paths:
33758
33832
  /v1/ads/ad-sets/{adSetId}:
33759
33833
  get:
33760
33834
  operationId: getAdSetDetails
33761
- tags: [Ad Campaigns]
33762
- summary: Live ad-set details incl. learning phase (Meta)
33835
+ tags: ["Ad Campaigns"]
33836
+ x-platforms: ["meta"]
33837
+ summary: Live ad-set details incl. learning phase
33763
33838
  description: |-
33764
33839
  Reads the ad set live from Meta, returned verbatim. The default projection includes
33765
33840
  `learning_stage_info` (learning-phase status: LEARNING / SUCCESS / FAIL / WAIVING — Meta
33766
33841
  omits its `status` key on paused ad sets), delivery settings, budgets, schedule and
33767
33842
  targeting. `fields` is a raw-passthrough override; unknown fields return Meta's 400
33768
- verbatim. Meta only.
33843
+ verbatim.
33769
33844
  security:
33770
33845
  - bearerAuth: []
33771
33846
  parameters:
@@ -33786,7 +33861,8 @@ paths:
33786
33861
  '501': { description: Only supported on Meta (facebook/instagram) }
33787
33862
  put:
33788
33863
  operationId: updateAdSet
33789
- tags: [Ad Campaigns]
33864
+ tags: ["Ad Campaigns"]
33865
+ x-platforms: ["meta", "tiktok"]
33790
33866
  summary: Update an ad set
33791
33867
  description: |
33792
33868
  Ad-set-level writes. Use this for ABO budget updates, ad-set-scoped
@@ -33897,7 +33973,8 @@ paths:
33897
33973
  /v1/ads/ad-sets/{adSetId}/status:
33898
33974
  put:
33899
33975
  operationId: updateAdSetStatus
33900
- tags: [Ad Campaigns]
33976
+ tags: ["Ad Campaigns"]
33977
+ x-platforms: ["meta", "tiktok"]
33901
33978
  summary: Pause or resume a single ad set
33902
33979
  description: |
33903
33980
  Ad-set-scoped pause/resume (doesn't touch sibling ad sets). Thin wrapper
@@ -33935,7 +34012,8 @@ paths:
33935
34012
  /v1/ads/tree:
33936
34013
  get:
33937
34014
  operationId: getAdTree
33938
- tags: [Ad Campaigns]
34015
+ tags: ["Ad Campaigns"]
34016
+ x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
33939
34017
  summary: Get campaign tree
33940
34018
  description: |
33941
34019
  Returns a nested Campaign > Ad Set > Ad hierarchy with rolled-up metrics at each level.
@@ -33990,7 +34068,8 @@ paths:
33990
34068
  /v1/ads/timeline:
33991
34069
  get:
33992
34070
  operationId: getAdsTimeline
33993
- tags: [Ad Campaigns]
34071
+ tags: ["Ad Campaigns"]
34072
+ x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
33994
34073
  summary: Get daily account metrics
33995
34074
  description: |
33996
34075
  Returns daily aggregate metrics across all ads in a SocialAccount as a single
@@ -34060,7 +34139,8 @@ paths:
34060
34139
  /v1/ads/{adId}:
34061
34140
  get:
34062
34141
  operationId: getAd
34063
- tags: [Ads]
34142
+ tags: ["Ad Campaigns"]
34143
+ x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
34064
34144
  summary: Get ad details
34065
34145
  description: |
34066
34146
  Returns an ad with its creative, targeting, status, and performance metrics.
@@ -34094,7 +34174,8 @@ paths:
34094
34174
  '404': { $ref: '#/components/responses/NotFound' }
34095
34175
  put:
34096
34176
  operationId: updateAd
34097
- tags: [Ads]
34177
+ tags: ["Ad Campaigns"]
34178
+ x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
34098
34179
  summary: Update ad
34099
34180
  description: |
34100
34181
  Patch one or more fields on an ad. Status, budget, targeting, and creative changes
@@ -34177,7 +34258,8 @@ paths:
34177
34258
  '501': { description: "targeting or creative not supported on the platform (Meta + TikTok only)" }
34178
34259
  delete:
34179
34260
  operationId: deleteAd
34180
- tags: [Ads]
34261
+ tags: ["Ad Campaigns"]
34262
+ x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
34181
34263
  summary: Cancel an ad
34182
34264
  description: Cancels the ad on the platform and marks it as cancelled in the database. The ad is preserved for history.
34183
34265
  security:
@@ -34199,7 +34281,8 @@ paths:
34199
34281
  /v1/ads/{adId}/status:
34200
34282
  put:
34201
34283
  operationId: updateAdStatus
34202
- tags: [Ads]
34284
+ tags: ["Ad Campaigns"]
34285
+ x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
34203
34286
  summary: Pause or resume a single ad
34204
34287
  description: |
34205
34288
  Ad-scoped pause/resume — touches ONLY this ad, never its parent ad set or
@@ -34243,7 +34326,8 @@ paths:
34243
34326
  /v1/ads/campaigns/{campaignId}/analytics:
34244
34327
  get:
34245
34328
  operationId: getCampaignAnalytics
34246
- tags: [Ads]
34329
+ tags: ["Ad Insights"]
34330
+ x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
34247
34331
  summary: Get campaign analytics
34248
34332
  description: |
34249
34333
  Returns performance analytics for a whole campaign in one call: summary metrics, a daily
@@ -34326,13 +34410,14 @@ paths:
34326
34410
  /v1/ads/preview:
34327
34411
  post:
34328
34412
  operationId: generateAdPreviews
34329
- tags: [Ads]
34330
- summary: Render pre-create ad previews (Meta)
34413
+ tags: ["Ad Creatives"]
34414
+ x-platforms: ["meta"]
34415
+ summary: Render pre-create ad previews
34331
34416
  description: |
34332
34417
  Renders how a creative would look per placement BEFORE any ad exists, via Meta's
34333
34418
  `/generatepreviews`. Provide exactly one creative source: `existingCreativeId` or `creativeSpec`.
34334
34419
  Each preview is an HTML `<iframe>` snippet embeddable directly. Unknown `formats` values
34335
- return Meta's 400 verbatim. Meta only.
34420
+ return Meta's 400 verbatim.
34336
34421
  security:
34337
34422
  - bearerAuth: []
34338
34423
  requestBody:
@@ -34379,12 +34464,12 @@ paths:
34379
34464
  /v1/ads/{adId}/preview:
34380
34465
  get:
34381
34466
  operationId: getAdPreviews
34382
- tags: [Ads]
34383
- summary: Render previews of an existing ad (Meta)
34467
+ tags: ["Ad Creatives"]
34468
+ x-platforms: ["meta"]
34469
+ summary: Render previews of an existing ad
34384
34470
  description: |
34385
34471
  Renders an EXISTING ad per placement via Meta's `/{ad_id}/previews`. Each preview is an HTML
34386
34472
  `<iframe>` snippet embeddable directly. Unknown `formats` values return Meta's 400 verbatim.
34387
- Meta only.
34388
34473
  security:
34389
34474
  - bearerAuth: []
34390
34475
  parameters:
@@ -34415,8 +34500,9 @@ paths:
34415
34500
  /v1/ads/insights:
34416
34501
  get:
34417
34502
  operationId: queryAdInsights
34418
- tags: [Ads]
34419
- summary: Flexible live insights query (Meta)
34503
+ tags: ["Ad Insights"]
34504
+ x-platforms: ["meta"]
34505
+ summary: Flexible live insights query
34420
34506
  description: |
34421
34507
  Live, flexible insights query against Meta's Graph API. Unlike GET /v1/ads/{adId}/analytics
34422
34508
  (fixed metric set, cached), this forwards caller-chosen `fields`, `breakdowns` and `filtering`
@@ -34427,7 +34513,7 @@ paths:
34427
34513
 
34428
34514
  Semantic validation is Meta's: an unknown field or invalid breakdown combination returns a 400
34429
34515
  carrying Meta's message. For long ranges or agency-scale accounts prefer the async variant
34430
- (POST /v1/ads/insights/reports). Meta only.
34516
+ (POST /v1/ads/insights/reports).
34431
34517
  security:
34432
34518
  - bearerAuth: []
34433
34519
  parameters:
@@ -34471,13 +34557,14 @@ paths:
34471
34557
  /v1/ads/insights/reports:
34472
34558
  post:
34473
34559
  operationId: createAdInsightsReport
34474
- tags: [Ads]
34475
- summary: Submit an async insights report run (Meta)
34560
+ tags: ["Ad Insights"]
34561
+ x-platforms: ["meta"]
34562
+ summary: Submit an async insights report run
34476
34563
  description: |
34477
34564
  Submits an asynchronous Meta insights report. Same query surface as GET /v1/ads/insights, but
34478
34565
  in the JSON body; Meta processes the report server-side, which is the right choice for long
34479
34566
  ranges or large accounts where the sync query is slow or rate-limited. Returns a `reportRunId`
34480
- to poll via GET /v1/ads/insights/reports/{reportRunId}. Meta only.
34567
+ to poll via GET /v1/ads/insights/reports/{reportRunId}.
34481
34568
  security:
34482
34569
  - bearerAuth: []
34483
34570
  requestBody:
@@ -34533,8 +34620,9 @@ paths:
34533
34620
  /v1/ads/insights/reports/{reportRunId}:
34534
34621
  get:
34535
34622
  operationId: getAdInsightsReport
34536
- tags: [Ads]
34537
- summary: Poll an async insights report run (Meta)
34623
+ tags: ["Ad Insights"]
34624
+ x-platforms: ["meta"]
34625
+ summary: Poll an async insights report run
34538
34626
  description: |
34539
34627
  Status and results for a report run created via POST /v1/ads/insights/reports. While the job
34540
34628
  runs, returns `status` and `percentCompletion`. Once `status` is "Job Completed" the response
@@ -34575,7 +34663,8 @@ paths:
34575
34663
  /v1/ads/{adId}/analytics:
34576
34664
  get:
34577
34665
  operationId: getAdAnalytics
34578
- tags: [Ads]
34666
+ tags: ["Ad Insights"]
34667
+ x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
34579
34668
  summary: Get ad analytics
34580
34669
  description: |
34581
34670
  Returns detailed performance analytics for an ad. Includes summary metrics, a daily timeline
@@ -34655,7 +34744,8 @@ paths:
34655
34744
  /v1/ads/{adId}/tracking-tags:
34656
34745
  get:
34657
34746
  operationId: getAdTrackingTags
34658
- tags: [Ads]
34747
+ tags: ["Tracking Tags"]
34748
+ x-platforms: ["meta"]
34659
34749
  summary: Get ad tracking tags
34660
34750
  description: |
34661
34751
  Unified read of the platform's native click-URL tracking params.
@@ -34689,7 +34779,8 @@ paths:
34689
34779
  '405': { description: "Platform has no click-URL tracking surface" }
34690
34780
  patch:
34691
34781
  operationId: updateAdTrackingTags
34692
- tags: [Ads]
34782
+ tags: ["Tracking Tags"]
34783
+ x-platforms: ["meta"]
34693
34784
  summary: Set ad tracking tags
34694
34785
  description: |
34695
34786
  Unified update. Send only the fields for the ad's platform:
@@ -34746,7 +34837,8 @@ paths:
34746
34837
  /v1/ads/{adId}/comments:
34747
34838
  get:
34748
34839
  operationId: getAdComments
34749
- tags: [Ads]
34840
+ tags: ["Ad Accounts"]
34841
+ x-platforms: ["meta"]
34750
34842
  summary: List comments on an ad
34751
34843
  description: |
34752
34844
  Returns comments on an ad's underlying creative post. Useful for moderating or analyzing
@@ -34844,7 +34936,8 @@ paths:
34844
34936
  /v1/ads/business-centers:
34845
34937
  get:
34846
34938
  operationId: listAdsBusinessCenters
34847
- tags: [Ads]
34939
+ tags: ["Ad Accounts"]
34940
+ x-platforms: ["tiktok"]
34848
34941
  summary: List TikTok Business Centers
34849
34942
  description: |
34850
34943
  Returns the TikTok Business Centers (BCs) the connected `tiktokads` account can read.
@@ -34874,14 +34967,15 @@ paths:
34874
34967
  /v1/ads/activity:
34875
34968
  get:
34876
34969
  operationId: getAdsActivityLog
34877
- tags: [Ads]
34878
- summary: Ad account change / audit log (Meta)
34970
+ tags: ["Ad Accounts"]
34971
+ x-platforms: ["meta"]
34972
+ summary: Ad account change / audit log
34879
34973
  description: |-
34880
34974
  Account-level audit log from Meta's `/act_X/activities`: who changed what and when
34881
34975
  (creates, edits, status flips, budget changes...) with Meta's translated event names and
34882
34976
  the structured before/after in `extra_data`. Rows are returned verbatim. Meta has no
34883
34977
  server-side per-object filter on this edge, so `objectId` filters the returned page
34884
- client-side (combine with paging to walk history for one campaign/ad set/ad). Meta only.
34978
+ client-side (combine with paging to walk history for one campaign/ad set/ad).
34885
34979
  security:
34886
34980
  - bearerAuth: []
34887
34981
  parameters:
@@ -34915,8 +35009,9 @@ paths:
34915
35009
  /v1/ads/rf-predictions:
34916
35010
  post:
34917
35011
  operationId: createRfPrediction
34918
- tags: [Ads]
34919
- summary: Create a Reach & Frequency prediction (Meta)
35012
+ tags: ["Reach and Frequency"]
35013
+ x-platforms: ["meta"]
35014
+ summary: Create a Reach & Frequency prediction
34920
35015
  description: |-
34921
35016
  Creates an R&F prediction — a QUOTE, nothing is bought and no ad entities are created.
34922
35017
  Provide a date range plus exactly one of `budgetAmount` (Meta predicts reach) or `reach`
@@ -34927,7 +35022,7 @@ paths:
34927
35022
 
34928
35023
  Reservation campaigns reject automatic placements, so omitted `placements` default to
34929
35024
  Facebook feed (+ Instagram stream when a linked IG professional account resolves);
34930
- Instagram placements require that IG account. Meta only.
35025
+ Instagram placements require that IG account.
34931
35026
  security:
34932
35027
  - bearerAuth: []
34933
35028
  requestBody:
@@ -34966,8 +35061,9 @@ paths:
34966
35061
  /v1/ads/rf-predictions/{predictionId}:
34967
35062
  get:
34968
35063
  operationId: getRfPrediction
34969
- tags: [Ads]
34970
- summary: Read a Reach & Frequency prediction (Meta)
35064
+ tags: ["Reach and Frequency"]
35065
+ x-platforms: ["meta"]
35066
+ summary: Read a Reach & Frequency prediction
34971
35067
  security:
34972
35068
  - bearerAuth: []
34973
35069
  parameters:
@@ -34990,8 +35086,9 @@ paths:
34990
35086
  '501': { description: Only supported on Meta (facebook/instagram) }
34991
35087
  delete:
34992
35088
  operationId: cancelRfReservation
34993
- tags: [Ads]
34994
- summary: Cancel a Reach & Frequency reservation (Meta)
35089
+ tags: ["Reach and Frequency"]
35090
+ x-platforms: ["meta"]
35091
+ summary: Cancel a Reach & Frequency reservation
34995
35092
  description: Releases a RESERVATION's locked price and inventory. Unreserved predictions expire on their own.
34996
35093
  security:
34997
35094
  - bearerAuth: []
@@ -35009,12 +35106,13 @@ paths:
35009
35106
  /v1/ads/rf-predictions/{predictionId}/reserve:
35010
35107
  post:
35011
35108
  operationId: reserveRfPrediction
35012
- tags: [Ads]
35013
- summary: Reserve a Reach & Frequency prediction (Meta)
35109
+ tags: ["Reach and Frequency"]
35110
+ x-platforms: ["meta"]
35111
+ summary: Reserve a Reach & Frequency prediction
35014
35112
  description: |-
35015
35113
  Locks the quoted price + inventory until the returned `expiresAt` and mints a NEW
35016
35114
  prediction id — pass that RESERVED id (not the original) as `rfPredictionId` on
35017
- POST /v1/ads/create. Release an unused reservation via DELETE. Meta only.
35115
+ POST /v1/ads/create. Release an unused reservation via DELETE.
35018
35116
  security:
35019
35117
  - bearerAuth: []
35020
35118
  parameters:
@@ -35046,12 +35144,13 @@ paths:
35046
35144
  /v1/ads/studies:
35047
35145
  get:
35048
35146
  operationId: listAdStudies
35049
- tags: [Ads]
35050
- summary: A/B tests and lift studies (Meta)
35147
+ tags: ["Ad Accounts"]
35148
+ x-platforms: ["meta"]
35149
+ summary: A/B tests and lift studies
35051
35150
  description: |-
35052
35151
  Lists the ad account's A/B tests and lift studies (Meta's `/act_X/ad_studies`), rows
35053
35152
  returned verbatim. The default projection covers id, name, type, timing and cells with
35054
- split percentages; `fields` is a raw-passthrough override. Meta only.
35153
+ split percentages; `fields` is a raw-passthrough override.
35055
35154
  security:
35056
35155
  - bearerAuth: []
35057
35156
  parameters:
@@ -35083,12 +35182,13 @@ paths:
35083
35182
  /v1/ads/businesses:
35084
35183
  get:
35085
35184
  operationId: listMetaBusinesses
35086
- tags: [Ads]
35087
- summary: Businesses list (Meta)
35185
+ tags: ["Ad Accounts"]
35186
+ x-platforms: ["meta"]
35187
+ summary: Businesses list
35088
35188
  description: |-
35089
35189
  Business Manager portfolios the connected Meta user belongs to (Meta's `/me/businesses`),
35090
35190
  rows returned verbatim (id, name, verification_status, created_time). Token-scoped, so no
35091
- `adAccountId` is needed. Meta only; for TikTok Business Centers use
35191
+ `adAccountId` is needed. For TikTok Business Centers use
35092
35192
  `GET /v1/ads/business-centers`.
35093
35193
  security:
35094
35194
  - bearerAuth: []
@@ -35118,11 +35218,12 @@ paths:
35118
35218
  /v1/ads/labels:
35119
35219
  get:
35120
35220
  operationId: listAdLabels
35121
- tags: [Ads]
35122
- summary: Ad labels (Meta)
35221
+ tags: ["Ad Accounts"]
35222
+ x-platforms: ["meta"]
35223
+ summary: Ad labels
35123
35224
  description: |-
35124
35225
  Lists the ad account's organizational labels (Meta's `/act_X/adlabels`), rows returned
35125
- verbatim (id, name, created/updated time). Meta only.
35226
+ verbatim (id, name, created/updated time).
35126
35227
  security:
35127
35228
  - bearerAuth: []
35128
35229
  parameters:
@@ -35153,13 +35254,14 @@ paths:
35153
35254
  /v1/ads/high-demand-periods:
35154
35255
  get:
35155
35256
  operationId: listHighDemandPeriods
35156
- tags: [Ads]
35157
- summary: High demand periods / budget schedules (Meta)
35257
+ tags: ["Ad Accounts"]
35258
+ x-platforms: ["meta"]
35259
+ summary: High demand periods / budget schedules
35158
35260
  description: |-
35159
35261
  Scheduled budget increases (Meta's budget-scheduling API). The Graph edge lives on the
35160
35262
  campaign and ad-set nodes only, so exactly one of `campaignId` / `adSetId` (platform
35161
35263
  ids) is required. Rows returned verbatim (budget_value, budget_value_type, time window,
35162
- recurrence). Meta only.
35264
+ recurrence).
35163
35265
  security:
35164
35266
  - bearerAuth: []
35165
35267
  parameters:
@@ -35191,14 +35293,15 @@ paths:
35191
35293
  /v1/ads/creatives:
35192
35294
  get:
35193
35295
  operationId: listAdCreatives
35194
- tags: [Ads]
35195
- summary: Creative library (Meta)
35296
+ tags: ["Ad Creatives"]
35297
+ x-platforms: ["meta"]
35298
+ summary: Creative library
35196
35299
  description: |-
35197
35300
  Lists the ad account's creative library (Meta's `/act_X/adcreatives`), rows returned
35198
35301
  verbatim. The default projection covers id, name, status, object type, thumbnail,
35199
35302
  object_story_spec / asset_feed_spec and url_tags; `fields` is a raw-passthrough
35200
35303
  override. Any creative id here is reusable on the create endpoints via
35201
- `existingCreativeId`. Meta only.
35304
+ `existingCreativeId`.
35202
35305
  security:
35203
35306
  - bearerAuth: []
35204
35307
  parameters:
@@ -35228,14 +35331,15 @@ paths:
35228
35331
  '501': { description: Only supported on Meta (facebook/instagram) }
35229
35332
  post:
35230
35333
  operationId: createAdCreative
35231
- tags: [Ads]
35232
- summary: Create a standalone creative (Meta)
35334
+ tags: ["Ad Creatives"]
35335
+ x-platforms: ["meta"]
35336
+ summary: Create a standalone creative
35233
35337
  description: |-
35234
35338
  Creates a creative in the library WITHOUT an ad, reusable on the create endpoints via
35235
35339
  `existingCreativeId`. Provide exactly one of `imageUrl` (uploaded server-side),
35236
35340
  `imageHash` (from POST /v1/ads/images or the library list), or `carouselCards` (2-10
35237
35341
  hand-built cards). The Page (and linked Instagram account, when present) is resolved
35238
- from `accountId` as the story actor. Meta only.
35342
+ from `accountId` as the story actor.
35239
35343
  security:
35240
35344
  - bearerAuth: []
35241
35345
  requestBody:
@@ -35291,11 +35395,12 @@ paths:
35291
35395
  /v1/ads/creatives/{creativeId}:
35292
35396
  get:
35293
35397
  operationId: getAdCreative
35294
- tags: [Ads]
35295
- summary: Creative details (Meta)
35398
+ tags: ["Ad Creatives"]
35399
+ x-platforms: ["meta"]
35400
+ summary: Creative details
35296
35401
  description: |-
35297
35402
  One creative's details, verbatim from Meta. `fields` is a raw-passthrough override of
35298
- the default projection. Meta only.
35403
+ the default projection.
35299
35404
  security:
35300
35405
  - bearerAuth: []
35301
35406
  parameters:
@@ -35316,12 +35421,13 @@ paths:
35316
35421
  '501': { description: Only supported on Meta (facebook/instagram) }
35317
35422
  put:
35318
35423
  operationId: updateAdCreative
35319
- tags: [Ads]
35320
- summary: Rename a creative (Meta)
35424
+ tags: ["Ad Creatives"]
35425
+ x-platforms: ["meta"]
35426
+ summary: Rename a creative
35321
35427
  description: |-
35322
35428
  Renames a creative. Creatives are immutable on Meta beyond `name` — for content changes
35323
35429
  create a new creative (POST /v1/ads/creatives) and swap it onto the ad
35324
- (PUT /v1/ads/{adId} with `creative`). Meta only.
35430
+ (PUT /v1/ads/{adId} with `creative`).
35325
35431
  security:
35326
35432
  - bearerAuth: []
35327
35433
  parameters:
@@ -35352,8 +35458,9 @@ paths:
35352
35458
  '501': { description: Only supported on Meta (facebook/instagram) }
35353
35459
  delete:
35354
35460
  operationId: deleteAdCreative
35355
- tags: [Ads]
35356
- summary: Delete a creative (Meta)
35461
+ tags: ["Ad Creatives"]
35462
+ x-platforms: ["meta"]
35463
+ summary: Delete a creative
35357
35464
  description: |-
35358
35465
  Deletes a creative from the library. Meta only allows deleting creatives not referenced
35359
35466
  by any ad — otherwise its 400 surfaces verbatim.
@@ -35379,12 +35486,13 @@ paths:
35379
35486
  /v1/ads/accounts/finance:
35380
35487
  get:
35381
35488
  operationId: getAdAccountFinance
35382
- tags: [Ads]
35383
- summary: Ad account finances (Meta)
35489
+ tags: ["Ad Accounts"]
35490
+ x-platforms: ["meta"]
35491
+ summary: Ad account finances
35384
35492
  description: |-
35385
35493
  Finances of one Meta ad account: prepaid `balance`, lifetime `amountSpent`, account
35386
35494
  `spendCap` (null = no cap) and the `fundingSource`. Money values are converted from
35387
- Meta's minor units to whole units of `currency`. Meta only.
35495
+ Meta's minor units to whole units of `currency`.
35388
35496
  security:
35389
35497
  - bearerAuth: []
35390
35498
  parameters:
@@ -35415,7 +35523,8 @@ paths:
35415
35523
  /v1/ads/accounts:
35416
35524
  get:
35417
35525
  operationId: listAdAccounts
35418
- tags: [Ads]
35526
+ tags: ["Ad Accounts"]
35527
+ x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
35419
35528
  summary: List ad accounts
35420
35529
  description: |
35421
35530
  Returns the platform ad accounts available for the given social account (e.g. Meta ad
@@ -35459,7 +35568,8 @@ paths:
35459
35568
  description: Platform ads connection required (TikTok Ads, X Ads) or Instagram missing linked Facebook account
35460
35569
  patch:
35461
35570
  operationId: updateAdAccount
35462
- tags: [Ads]
35571
+ tags: ["Ad Accounts"]
35572
+ x-platforms: ["meta"]
35463
35573
  summary: Update ad account settings
35464
35574
  description: |
35465
35575
  Sets the default DSA beneficiary and payor on a Meta ad account (EU DSA, Article 26).
@@ -35515,7 +35625,8 @@ paths:
35515
35625
  /v1/ads/dsa-defaults:
35516
35626
  get:
35517
35627
  operationId: getDsaDefaults
35518
- tags: [Ads]
35628
+ tags: ["Ad Accounts"]
35629
+ x-platforms: ["meta"]
35519
35630
  summary: Get ad account DSA defaults
35520
35631
  description: |
35521
35632
  Returns the default DSA beneficiary and payor currently set on a Meta ad account,
@@ -35549,7 +35660,8 @@ paths:
35549
35660
  /v1/ads/dsa-recommendations:
35550
35661
  get:
35551
35662
  operationId: getDsaRecommendations
35552
- tags: [Ads]
35663
+ tags: ["Ad Accounts"]
35664
+ x-platforms: ["meta"]
35553
35665
  summary: List DSA beneficiary/payor suggestions
35554
35666
  description: |
35555
35667
  Returns Meta's suggested beneficiary/payor names for an ad account, derived by Meta
@@ -35586,7 +35698,8 @@ paths:
35586
35698
  /v1/ads/boost:
35587
35699
  post:
35588
35700
  operationId: boostPost
35589
- tags: [Ads]
35701
+ tags: ["Ad Campaigns"]
35702
+ x-platforms: ["meta"]
35590
35703
  summary: Boost post as ad
35591
35704
  description: Creates a paid ad campaign from an existing published post. Creates the full platform campaign hierarchy (campaign, ad set, ad).
35592
35705
  security:
@@ -35731,7 +35844,14 @@ paths:
35731
35844
  description: "Meta only. Tracking specs (pixel, URL tags)."
35732
35845
  properties:
35733
35846
  pixelId: { type: string }
35734
- urlTags: { type: string }
35847
+ urlTags:
35848
+ type: array
35849
+ description: 'URL parameters appended to the ad link, rendered as `key=value` pairs joined with `&`.'
35850
+ items:
35851
+ type: object
35852
+ properties:
35853
+ key: { type: string }
35854
+ value: { type: string }
35735
35855
  specialAdCategories:
35736
35856
  type: array
35737
35857
  description: "Meta only. Required for housing, employment, credit, or political ads."
@@ -35808,7 +35928,8 @@ paths:
35808
35928
  /v1/ads/create:
35809
35929
  post:
35810
35930
  operationId: createStandaloneAd
35811
- tags: [Ads]
35931
+ tags: ["Ad Campaigns"]
35932
+ x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
35812
35933
  summary: Create standalone ad
35813
35934
  description: >-
35814
35935
  Creates a paid ad with custom creative across Meta, Google Ads,
@@ -36595,7 +36716,8 @@ paths:
36595
36716
  /v1/ads/leads:
36596
36717
  get:
36597
36718
  operationId: listLeads
36598
- tags: [Ads]
36719
+ tags: ["Lead Gen"]
36720
+ x-platforms: ["meta"]
36599
36721
  summary: List submitted leads
36600
36722
  description: >
36601
36723
  Returns persisted Meta Lead Gen leads for your team, newest-first, with
@@ -36644,7 +36766,8 @@ paths:
36644
36766
  /v1/ads/lead-forms:
36645
36767
  get:
36646
36768
  operationId: listLeadForms
36647
- tags: [Ads]
36769
+ tags: ["Lead Gen"]
36770
+ x-platforms: ["meta"]
36648
36771
  summary: List lead forms
36649
36772
  description: Lists the Lead Gen forms owned by the connected Facebook Page. Requires the Ads add-on.
36650
36773
  parameters:
@@ -36666,7 +36789,8 @@ paths:
36666
36789
  '403': { description: Ads add-on required. }
36667
36790
  post:
36668
36791
  operationId: createLeadForm
36669
- tags: [Ads]
36792
+ tags: ["Lead Gen"]
36793
+ x-platforms: ["meta"]
36670
36794
  summary: Create a lead form
36671
36795
  description: >
36672
36796
  Creates a Lead Gen form on the connected Facebook Page (POST
@@ -36721,7 +36845,8 @@ paths:
36721
36845
  /v1/ads/lead-forms/{formId}:
36722
36846
  get:
36723
36847
  operationId: getLeadForm
36724
- tags: [Ads]
36848
+ tags: ["Lead Gen"]
36849
+ x-platforms: ["meta"]
36725
36850
  summary: Get a lead form
36726
36851
  parameters:
36727
36852
  - { name: formId, in: path, required: true, schema: { type: string } }
@@ -36735,7 +36860,8 @@ paths:
36735
36860
  '401': { $ref: '#/components/responses/Unauthorized' }
36736
36861
  delete:
36737
36862
  operationId: archiveLeadForm
36738
- tags: [Ads]
36863
+ tags: ["Lead Gen"]
36864
+ x-platforms: ["meta"]
36739
36865
  summary: Archive a lead form
36740
36866
  description: Meta has no hard delete for forms; this archives the form (status=ARCHIVED).
36741
36867
  parameters:
@@ -36752,7 +36878,8 @@ paths:
36752
36878
  /v1/ads/lead-forms/{formId}/leads:
36753
36879
  get:
36754
36880
  operationId: listFormLeads
36755
- tags: [Ads]
36881
+ tags: ["Lead Gen"]
36882
+ x-platforms: ["meta"]
36756
36883
  summary: List leads for a single form
36757
36884
  description: >
36758
36885
  Returns leads for one form. Serves persisted leads (ingested via the
@@ -36789,7 +36916,8 @@ paths:
36789
36916
  /v1/ads/lead-forms/{formId}/test-leads:
36790
36917
  post:
36791
36918
  operationId: createTestLead
36792
- tags: [Ads]
36919
+ tags: ["Lead Gen"]
36920
+ x-platforms: ["meta"]
36793
36921
  summary: Create a test lead
36794
36922
  description: >
36795
36923
  Submits a test lead against the form (POST /{form-id}/test_leads) to
@@ -36826,13 +36954,14 @@ paths:
36826
36954
  /v1/ads/images:
36827
36955
  post:
36828
36956
  operationId: uploadAdImage
36829
- tags: [Ads]
36830
- summary: Upload an ad image from base64 (Meta)
36957
+ tags: ["Ad Creatives"]
36958
+ x-platforms: ["meta"]
36959
+ summary: Upload an ad image from base64
36831
36960
  description: |-
36832
36961
  Uploads raw image bytes to the Meta ad account's image library — for callers whose
36833
36962
  creatives aren't hosted at a public URL. Returns the image `hash` (Meta's identifier for
36834
36963
  the asset) and the Meta-hosted `url`, which can be used directly as `imageUrl` on the
36835
- create endpoints. Max 30 MB decoded. Meta only.
36964
+ create endpoints. Max 30 MB decoded.
36836
36965
  security:
36837
36966
  - bearerAuth: []
36838
36967
  requestBody:
@@ -36867,13 +36996,14 @@ paths:
36867
36996
 
36868
36997
  get:
36869
36998
  operationId: listAdImages
36870
- tags: [Ads]
36871
- summary: Ad image library (Meta)
36999
+ tags: ["Ad Creatives"]
37000
+ x-platforms: ["meta"]
37001
+ summary: Ad image library
36872
37002
  description: |-
36873
37003
  Lists the ad account's image library (Meta's `/act_X/adimages`), rows returned verbatim.
36874
37004
  The default projection covers hash, url, name, dimensions and status; `fields` is a
36875
37005
  raw-passthrough override. Any `hash` here is reusable wherever Meta accepts
36876
- `image_hash` (e.g. `imageHash` on POST /v1/ads/creatives). Meta only.
37006
+ `image_hash` (e.g. `imageHash` on POST /v1/ads/creatives).
36877
37007
  security:
36878
37008
  - bearerAuth: []
36879
37009
  parameters:
@@ -36906,7 +37036,8 @@ paths:
36906
37036
  get:
36907
37037
  operationId: searchAdInterests
36908
37038
  deprecated: true
36909
- tags: [Ads]
37039
+ tags: ["Ad Targeting"]
37040
+ x-platforms: ["meta"]
36910
37041
  summary: Search targeting interests
36911
37042
  description: |
36912
37043
  Deprecated alias for `GET /v1/ads/targeting/search?dimension=interest`. Kept for
@@ -36941,7 +37072,8 @@ paths:
36941
37072
  /v1/ads/targeting/search:
36942
37073
  get:
36943
37074
  operationId: searchAdTargeting
36944
- tags: [Ads]
37075
+ tags: ["Ad Targeting"]
37076
+ x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest"]
36945
37077
  summary: Search targeting options
36946
37078
  description: |
36947
37079
  Resolve a human-readable query into the platform's opaque targeting ids used in
@@ -37002,7 +37134,8 @@ paths:
37002
37134
  /v1/ads/targeting/reach-estimate:
37003
37135
  post:
37004
37136
  operationId: estimateAdReach
37005
- tags: [Ads]
37137
+ tags: ["Ad Targeting"]
37138
+ x-platforms: ["meta"]
37006
37139
  summary: Estimate audience reach
37007
37140
  description: |
37008
37141
  Returns a normalized pre-flight audience-size estimate for a targeting spec,
@@ -37059,8 +37192,9 @@ paths:
37059
37192
  /v1/ads/targeting/bid-pricing:
37060
37193
  post:
37061
37194
  operationId: getLinkedInBidPricing
37062
- tags: [Ads]
37063
- summary: Suggested bid and budget bounds (LinkedIn)
37195
+ tags: ["Ad Targeting"]
37196
+ x-platforms: ["linkedin"]
37197
+ summary: Suggested bid and budget bounds
37064
37198
  description: |
37065
37199
  LinkedIn-only. Returns the suggested bid and bid limits for a targeting
37066
37200
  spec, plus the daily-budget bounds LinkedIn will accept. Use it before
@@ -37129,8 +37263,9 @@ paths:
37129
37263
  /v1/ads/targeting/supply-forecast:
37130
37264
  post:
37131
37265
  operationId: getLinkedInSupplyForecast
37132
- tags: [Ads]
37133
- summary: Impressions, clicks and spend forecast (LinkedIn)
37266
+ tags: ["Ad Targeting"]
37267
+ x-platforms: ["linkedin"]
37268
+ summary: Impressions, clicks and spend forecast
37134
37269
  description: |
37135
37270
  LinkedIn-only. Forecasted impressions, clicks, spend and ~20 other
37136
37271
  metrics for a targeting spec over a time range. Wraps LinkedIn's
@@ -37211,7 +37346,8 @@ paths:
37211
37346
  /v1/ads/catalogs:
37212
37347
  get:
37213
37348
  operationId: listAdCatalogs
37214
- tags: [Ads]
37349
+ tags: ["Ad Creatives"]
37350
+ x-platforms: ["meta"]
37215
37351
  summary: List Meta product catalogs
37216
37352
  description: "Lists the Meta product catalogs reachable from an ad account (owned + agency-shared catalogs of the ad account's business), for Advantage+ catalog ads (`goal: catalog_sales` on POST /v1/ads/create — e.g. vehicle inventory catalogs). Read-only; uses scopes customers already granted (no reconnect needed). Catalog contents (items, feeds) are managed in Meta Commerce Manager, not through this API."
37217
37353
  security:
@@ -37243,7 +37379,8 @@ paths:
37243
37379
  /v1/ads/catalogs/{catalogId}/product-sets:
37244
37380
  get:
37245
37381
  operationId: listAdCatalogProductSets
37246
- tags: [Ads]
37382
+ tags: ["Ad Creatives"]
37383
+ x-platforms: ["meta"]
37247
37384
  summary: List a catalog's product sets
37248
37385
  description: "Lists a Meta product catalog's product sets — the unit a catalog ad promotes. Pass the chosen set as `promotedObject.productSetId` on POST /v1/ads/create with `goal: catalog_sales`."
37249
37386
  security:
@@ -37274,7 +37411,8 @@ paths:
37274
37411
  /v1/ads/audiences:
37275
37412
  get:
37276
37413
  operationId: listAdAudiences
37277
- tags: [Ad Audiences]
37414
+ tags: ["Ad Audiences"]
37415
+ x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
37278
37416
  summary: List custom audiences
37279
37417
  description: Returns custom audiences for the given ad account. Supports Meta, Google, TikTok, Pinterest, LinkedIn, and X (Twitter).
37280
37418
  security:
@@ -37316,7 +37454,8 @@ paths:
37316
37454
  description: Ads access required. Legacy plans need the Ads add-on; included by default on usage-based plans.
37317
37455
  post:
37318
37456
  operationId: createAdAudience
37319
- tags: [Ad Audiences]
37457
+ tags: ["Ad Audiences"]
37458
+ x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
37320
37459
  summary: Create custom audience
37321
37460
  description: |
37322
37461
  Create a custom audience. `customer_list` is supported on Meta, Google, X, LinkedIn, TikTok, and Pinterest;
@@ -37466,7 +37605,8 @@ paths:
37466
37605
  /v1/ads/audiences/{audienceId}:
37467
37606
  get:
37468
37607
  operationId: getAdAudience
37469
- tags: [Ad Audiences]
37608
+ tags: ["Ad Audiences"]
37609
+ x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
37470
37610
  summary: Get audience details
37471
37611
  description: Returns the local audience record and fresh data from Meta (if available).
37472
37612
  security:
@@ -37489,7 +37629,8 @@ paths:
37489
37629
  '404': { $ref: '#/components/responses/NotFound' }
37490
37630
  put:
37491
37631
  operationId: updateAdAudience
37492
- tags: [Ad Audiences]
37632
+ tags: ["Ad Audiences"]
37633
+ x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
37493
37634
  summary: Update an audience
37494
37635
  description: |
37495
37636
  Update an audience. `saved_targeting` audiences accept `name`, `description`, and `spec`
@@ -37538,7 +37679,8 @@ paths:
37538
37679
  description: Platform audience updates are only supported on Meta
37539
37680
  delete:
37540
37681
  operationId: deleteAdAudience
37541
- tags: [Ad Audiences]
37682
+ tags: ["Ad Audiences"]
37683
+ x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
37542
37684
  summary: Delete custom audience
37543
37685
  description: Deletes the audience from both the platform and the local database. `saved_targeting` audiences exist only on Zernio, so only the local record is removed.
37544
37686
  security:
@@ -37562,7 +37704,8 @@ paths:
37562
37704
  /v1/ads/audiences/{audienceId}/users:
37563
37705
  post:
37564
37706
  operationId: addUsersToAdAudience
37565
- tags: [Ad Audiences]
37707
+ tags: ["Ad Audiences"]
37708
+ x-platforms: ["meta", "google", "tiktok", "linkedin", "pinterest", "x"]
37566
37709
  summary: Add users to audience
37567
37710
  description: |
37568
37711
  Upload user data to a customer_list audience. Data is SHA256-hashed server-side before sending to the platform.
@@ -37612,7 +37755,8 @@ paths:
37612
37755
  /v1/ads/conversions/quality:
37613
37756
  get:
37614
37757
  operationId: getConversionsQuality
37615
- tags: [Ads]
37758
+ tags: [Conversions]
37759
+ x-platforms: ["meta"]
37616
37760
  summary: Get Event Match Quality
37617
37761
  description: |
37618
37762
  Reads Meta Event Match Quality (EMQ) and pixel↔CAPI event coverage for a
@@ -37653,7 +37797,8 @@ paths:
37653
37797
  /v1/ads/conversions:
37654
37798
  post:
37655
37799
  operationId: sendConversions
37656
- tags: [Ads]
37800
+ tags: [Conversions]
37801
+ x-platforms: ["meta", "google", "tiktok", "linkedin"]
37657
37802
  summary: Send conversion events
37658
37803
  description: |
37659
37804
  Relay one or more conversion events to the target ad platform's native Conversions API.
@@ -37788,7 +37933,8 @@ paths:
37788
37933
  /v1/ads/conversions/adjustments:
37789
37934
  post:
37790
37935
  operationId: adjustConversions
37791
- tags: [Ads]
37936
+ tags: [Conversions]
37937
+ x-platforms: ["meta"]
37792
37938
  summary: Adjust uploaded conversions
37793
37939
  description: |
37794
37940
  Adjust conversions that were previously uploaded via `POST /v1/ads/conversions` —
@@ -37908,7 +38054,8 @@ paths:
37908
38054
  /v1/accounts/{accountId}/conversion-destinations:
37909
38055
  get:
37910
38056
  operationId: listConversionDestinations
37911
- tags: [Ads]
38057
+ tags: [Conversions]
38058
+ x-platforms: ["meta", "google", "tiktok", "linkedin"]
37912
38059
  summary: List conversion destinations
37913
38060
  description: |
37914
38061
  Returns the list of pixels (Meta), conversion actions (Google), or
@@ -37981,7 +38128,8 @@ paths:
37981
38128
 
37982
38129
  post:
37983
38130
  operationId: createConversionDestination
37984
- tags: [Ads]
38131
+ tags: [Conversions]
38132
+ x-platforms: ["meta", "google", "tiktok", "linkedin"]
37985
38133
  summary: Create a conversion destination
37986
38134
  description: |
37987
38135
  Create a new conversion destination on the platform. Supported for
@@ -38148,7 +38296,8 @@ paths:
38148
38296
  /v1/accounts/{accountId}/conversion-destinations/{destinationId}:
38149
38297
  get:
38150
38298
  operationId: getConversionDestination
38151
- tags: [Ads]
38299
+ tags: [Conversions]
38300
+ x-platforms: ["meta", "google", "tiktok", "linkedin"]
38152
38301
  summary: Get a conversion destination
38153
38302
  description: |
38154
38303
  LinkedIn-only today. Returns the full destination record for one
@@ -38183,7 +38332,8 @@ paths:
38183
38332
 
38184
38333
  patch:
38185
38334
  operationId: updateConversionDestination
38186
- tags: [Ads]
38335
+ tags: [Conversions]
38336
+ x-platforms: ["meta", "google", "tiktok", "linkedin"]
38187
38337
  summary: Update a conversion destination
38188
38338
  description: |
38189
38339
  Partial-update a conversion rule. LinkedIn-only today. Whitelisted
@@ -38257,7 +38407,8 @@ paths:
38257
38407
 
38258
38408
  delete:
38259
38409
  operationId: deleteConversionDestination
38260
- tags: [Ads]
38410
+ tags: [Conversions]
38411
+ x-platforms: ["meta", "google", "tiktok", "linkedin"]
38261
38412
  summary: Delete a conversion destination
38262
38413
  description: |
38263
38414
  LinkedIn-only today. LinkedIn does not expose hard-delete on conversion
@@ -38289,7 +38440,8 @@ paths:
38289
38440
  /v1/accounts/{accountId}/conversion-destinations/{destinationId}/associations:
38290
38441
  get:
38291
38442
  operationId: listConversionAssociations
38292
- tags: [Ads]
38443
+ tags: [Conversions]
38444
+ x-platforms: ["meta", "google", "tiktok", "linkedin"]
38293
38445
  summary: List associated campaigns
38294
38446
  description: |
38295
38447
  LinkedIn-only today. Returns the campaigns currently associated with
@@ -38331,7 +38483,8 @@ paths:
38331
38483
 
38332
38484
  post:
38333
38485
  operationId: addConversionAssociations
38334
- tags: [Ads]
38486
+ tags: [Conversions]
38487
+ x-platforms: ["meta", "google", "tiktok", "linkedin"]
38335
38488
  summary: Associate campaigns
38336
38489
  description: |
38337
38490
  Associate one or more campaigns with this conversion rule. Returns a
@@ -38391,7 +38544,8 @@ paths:
38391
38544
 
38392
38545
  delete:
38393
38546
  operationId: removeConversionAssociations
38394
- tags: [Ads]
38547
+ tags: [Conversions]
38548
+ x-platforms: ["meta", "google", "tiktok", "linkedin"]
38395
38549
  summary: Remove associated campaigns
38396
38550
  description: |
38397
38551
  Remove one or more campaign associations from this conversion rule.
@@ -38443,7 +38597,8 @@ paths:
38443
38597
  /v1/accounts/{accountId}/conversion-destinations/{destinationId}/metrics:
38444
38598
  get:
38445
38599
  operationId: getConversionMetrics
38446
- tags: [Ads]
38600
+ tags: [Conversions]
38601
+ x-platforms: ["meta", "google", "tiktok", "linkedin"]
38447
38602
  summary: Get attribution metrics
38448
38603
  description: |
38449
38604
  LinkedIn-only today. Returns conversion-attribution metrics
@@ -38503,7 +38658,7 @@ paths:
38503
38658
  /v1/whatsapp/conversions:
38504
38659
  get:
38505
38660
  operationId: listWhatsAppConversions
38506
- tags: [WhatsApp, Ads]
38661
+ tags: [WhatsApp]
38507
38662
  summary: List conversion events
38508
38663
  description: |
38509
38664
  Returns the most recent conversion events sent through
@@ -38567,7 +38722,7 @@ paths:
38567
38722
  '404': { description: WhatsApp account not found }
38568
38723
  post:
38569
38724
  operationId: sendWhatsAppConversion
38570
- tags: [WhatsApp, Ads]
38725
+ tags: [WhatsApp]
38571
38726
  summary: Send WhatsApp conversion event
38572
38727
  description: |
38573
38728
  Forward a WhatsApp Business Messaging conversion event (`LeadSubmitted`,
@@ -38743,7 +38898,8 @@ paths:
38743
38898
  /v1/ads/messaging:
38744
38899
  post:
38745
38900
  operationId: createMessagingAd
38746
- tags: [Ads]
38901
+ tags: ["Messaging Ads"]
38902
+ x-platforms: ["meta"]
38747
38903
  summary: Create click-to-message ad (WhatsApp / Messenger / Instagram Direct)
38748
38904
  description: |-
38749
38905
  Creates a click-to-message ad; `destination` selects where the tapped ad opens a
@@ -38779,7 +38935,8 @@ paths:
38779
38935
  /v1/ads/call:
38780
38936
  post:
38781
38937
  operationId: createCallAd
38782
- tags: [Ads]
38938
+ tags: ["Messaging Ads"]
38939
+ x-platforms: ["meta"]
38783
38940
  summary: Create Click-to-Call ad
38784
38941
  description: |-
38785
38942
  Same shape and flow as POST /v1/ads/ctwa, but the CTA is CALL_NOW dialing `phoneNumber`
@@ -38816,7 +38973,8 @@ paths:
38816
38973
  /v1/ads/ctwa:
38817
38974
  post:
38818
38975
  operationId: createCtwaAd
38819
- tags: [Ads]
38976
+ tags: ["Messaging Ads"]
38977
+ x-platforms: ["meta"]
38820
38978
  summary: Create Click-to-WhatsApp ad (deprecated)
38821
38979
  deprecated: true
38822
38980
  description: |-
@@ -38879,7 +39037,8 @@ paths:
38879
39037
  /v1/accounts/{accountId}/tracking-tags:
38880
39038
  get:
38881
39039
  operationId: listTrackingTags
38882
- tags: [Tracking Tags]
39040
+ tags: ["Tracking Tags"]
39041
+ x-platforms: ["meta"]
38883
39042
  summary: List tracking tags
38884
39043
  description: |
38885
39044
  Returns the tracking tags (Meta Pixels) the connected ads account can
@@ -38918,7 +39077,8 @@ paths:
38918
39077
 
38919
39078
  post:
38920
39079
  operationId: createTrackingTag
38921
- tags: [Tracking Tags]
39080
+ tags: ["Tracking Tags"]
39081
+ x-platforms: ["meta"]
38922
39082
  summary: Create a tracking tag
38923
39083
  description: |
38924
39084
  Creates a Meta Pixel on the given ad account (`POST /act_{id}/adspixels`
@@ -38967,7 +39127,8 @@ paths:
38967
39127
  /v1/accounts/{accountId}/tracking-tags/{tagId}:
38968
39128
  get:
38969
39129
  operationId: getTrackingTag
38970
- tags: [Tracking Tags]
39130
+ tags: ["Tracking Tags"]
39131
+ x-platforms: ["meta"]
38971
39132
  summary: Get a tracking tag
38972
39133
  description: |
38973
39134
  Returns the full tag record including the base-code `code` snippet,
@@ -38995,7 +39156,8 @@ paths:
38995
39156
 
38996
39157
  patch:
38997
39158
  operationId: updateTrackingTag
38998
- tags: [Tracking Tags]
39159
+ tags: ["Tracking Tags"]
39160
+ x-platforms: ["meta"]
38999
39161
  summary: Update a tracking tag
39000
39162
  description: |
39001
39163
  Partial-update a pixel. Whitelisted fields: `name` (rename),
@@ -39060,7 +39222,8 @@ paths:
39060
39222
  /v1/accounts/{accountId}/tracking-tags/{tagId}/shared-accounts:
39061
39223
  get:
39062
39224
  operationId: listTrackingTagSharedAccounts
39063
- tags: [Tracking Tags]
39225
+ tags: ["Tracking Tags"]
39226
+ x-platforms: ["meta"]
39064
39227
  summary: List accounts it is shared with
39065
39228
  description: Meta only (platform `metaads`); other platforms return 405.
39066
39229
  security:
@@ -39087,7 +39250,8 @@ paths:
39087
39250
 
39088
39251
  post:
39089
39252
  operationId: addTrackingTagSharedAccount
39090
- tags: [Tracking Tags]
39253
+ tags: ["Tracking Tags"]
39254
+ x-platforms: ["meta"]
39091
39255
  summary: Share with an ad account
39092
39256
  description: |
39093
39257
  Shares the pixel with another ad account so campaigns/audiences in that
@@ -39127,7 +39291,8 @@ paths:
39127
39291
 
39128
39292
  delete:
39129
39293
  operationId: removeTrackingTagSharedAccount
39130
- tags: [Tracking Tags]
39294
+ tags: ["Tracking Tags"]
39295
+ x-platforms: ["meta"]
39131
39296
  summary: Stop sharing with an account
39132
39297
  description: |
39133
39298
  `adAccountId` may be passed as a query parameter (recommended) or as a
@@ -39150,7 +39315,8 @@ paths:
39150
39315
  /v1/accounts/{accountId}/tracking-tags/{tagId}/stats:
39151
39316
  get:
39152
39317
  operationId: getTrackingTagStats
39153
- tags: [Tracking Tags]
39318
+ tags: ["Tracking Tags"]
39319
+ x-platforms: ["meta"]
39154
39320
  summary: Get aggregated event stats
39155
39321
  description: |
39156
39322
  Returns aggregated event counts for the pixel (`GET /{pixel_id}/stats`).