Ads · Ad Campaigns
Returns Google Ads recommendations. Works with Google Ads.
GET
https://api.pozy.ai/v1/ads/recommendationsGoogle WorkspacelistGoogleRecommendations
Guide: Google Ads
Request
Send your API key as Authorization: Bearer pz_live_.... Read-only keys can call it. Keys with the ads resource group disabled get 403 resource_group_disabled. Authentication
Query parameters
| Name | Type | Notes |
|---|---|---|
accountIdrequired | string | |
adAccountId | string | |
customerId | string | |
campaignId | string | Matches ^\d+$ |
types | string |
Example
curl -X GET "https://api.pozy.ai/v1/ads/recommendations?accountId=696e0b682d0a31188e7a2ba9" \
-H "Authorization: Bearer $POZY_API_KEY"const res = await fetch("https://api.pozy.ai/v1/ads/recommendations?accountId=696e0b682d0a31188e7a2ba9", {
headers: { Authorization: `Bearer ${process.env.POZY_API_KEY}` },
});
const data = await res.json();
if (!res.ok) throw new Error(data?.error ?? `Request failed with status ${res.status}`);
console.log(data);import os
import requests
resp = requests.get(
"https://api.pozy.ai/v1/ads/recommendations",
headers={"Authorization": f"Bearer {os.environ['POZY_API_KEY']}"},
params={
"accountId": "696e0b682d0a31188e7a2ba9",
},
timeout=30,
)
resp.raise_for_status()
print(resp.json())Response
200 on success
adAccountIdstringrequiredrecommendationsarray of objectrequired10 child fields
resourceNamestringrequiredidstringrequiredtypestringrequireddismissedbooleanrequiredcampaignIdstringrequiredCan be null.
campaignIdsarray of stringrequiredadGroupIdstringrequiredCan be null.
campaignBudgetIdstringrequiredCan be null.
impactobjectrequiredCan be null.
2 child fields
baseobject6 child fields
impressionsnumberclicksnumbercostnumberconversionsnumberconversionsValuenumbervideoViewsnumber
potentialobject6 child fields
impressionsnumberclicksnumbercostnumberconversionsnumberconversionsValuenumbervideoViewsnumber
detailsobjectrequiredCan be null.
cachedAtstring (date-time)requiredCan be null.
stalebooleanrequired
200 response
{
"adAccountId": "666219aad7bab67ace411e4f",
"recommendations": [
{
"resourceName": "Acme",
"id": "6bfebd43ddc270f6d2c56fc5",
"type": "string",
"dismissed": true,
"campaignId": "65a3737dd8b11ea61f199e6e",
"campaignIds": [
"string"
],
"adGroupId": "6ad180be375f36f2c328e52b",
"campaignBudgetId": "6407dc8beeb92b957b58e4dc",
"impact": {
"base": {
"impressions": 12.5,
"clicks": 12.5,
"cost": 12.5,
"conversions": 12.5,
"conversionsValue": 12.5,
"videoViews": 12.5
},
"potential": {
"impressions": 12.5,
"clicks": 12.5,
"cost": 12.5,
"conversions": 12.5,
"conversionsValue": 12.5,
"videoViews": 12.5
}
},
"details": {}
}
],
"cachedAt": "2026-10-02T09:00:00.000Z",
"stale": true
}Errors
Errors use one shape: { error, type, code, param?, details? }. The ones you are most likely to see here:
| 400 | invalid_request_error | A parameter or body field is missing or invalid. param names it. |
| 401 | authentication_error | The API key is missing, revoked or expired. |
| 403 | permission_error | The key is scoped to other profiles or has this resource group disabled. |
| 429 | rate_limit_error | Too many requests this minute. Wait for Retry-After seconds. |
Every code is listed in Errors.
More in Ad Campaigns
GETList adsPOSTApply Google Ads recommendationsPOSTDismiss Google Ads recommendationsGETList portfolio bid strategiesPOSTCreate portfolio bid strategyPATCHUpdate portfolio bid strategyGETList shared budgetsPOSTCreate a shared budgetGETList Search keywordsPOSTAdd Search ad-group keywordsPATCHPause or enable a Search keywordDELRemove a Search keywordGETList campaignsPOSTCreate a standalone campaignPUTPause or resume a campaignGETRead a campaign's ad schedule (dayparting)PUTReplace a campaign's ad schedule (dayparting)GETRead a campaign's current biddingGETGet live campaign detailsPUTUpdate a campaignDELDelete a campaignGETList campaign-level negative keywordsPUTReplace campaign-level negative keywordsPOSTPause or resume many campaignsPOSTDuplicate a campaignGETRead a Google campaign's device, location, excluded location, and language targetingPUTEdit a Google campaign's device, location, excluded location, or language targetingGETList ad setsPOSTCreate a standalone ad groupPOSTDuplicate an ad setPOSTDuplicate an adGETGet live ad-set detailsPUTUpdate an ad setDELDelete an ad setGETRead a Reddit ad group's targeting and schedulePUTPause or resume a single ad setGETGet campaign treeGETGet daily account metricsGETGet ad detailsPUTUpdate adDELCancel an adPUTPause or resume a single adGETList campaign assetsPOSTAttach campaign assetsPUTUpdate campaign assetsDELRemove campaign assetsGETList ad-group assetsPOSTAttach ad-group assetsPUTUpdate ad-group assetsDELRemove ad-group assetsGETRead the platform's review verdict for an adGETReview status of each creative in a TikTok Smart+ adGETList ads that need attentionPOSTDismiss an ads alertGETReview status of every TikTok Smart+ ad of an advertiserGETList campaign negative listsPUTReplace campaign negative listsPOSTBoost post as adGETList Performance Max asset groupsPOSTCreate a Performance Max asset groupGETGet a Performance Max asset groupPATCHUpdate a Performance Max asset groupDELRemove a Performance Max asset groupPOSTLink or unlink asset group assetsPUTReplace an asset group's listing-group treePOSTCreate standalone adGETGet campaign conversion goalsPATCHUpdate campaign conversion goals