Zernio
Zernio
API Reference

Campaigns and Ads

Overview

Get campaign treeGETGet daily account metricsGET

Campaigns

List campaignsGETCreate a standalone campaignPOSTUpdate a campaignPUTDuplicate a campaignPOSTDelete a campaignDELETEPause or resume a campaignPUTPause or resume many campaignsPOSTList campaign assetsGETAttach campaign assetsPOSTUpdate campaign assetsPUTRemove campaign assetsDELETERead a Google campaign's device, location, and language targetingGETEdit a Google campaign's device, location, or language targetingPUTList Performance Max asset groupsGET

Ad Sets

List ad setsGETCreate a standalone ad groupPOSTGet live ad-set detailsGETUpdate an ad setPUTDuplicate an ad setPOSTDelete an ad setDELETEPause or resume a single ad setPUTList ad-group assetsGETAttach ad-group assetsPOSTUpdate ad-group assetsPUTRemove ad-group assetsDELETE

Ads

List adsGETGet ad detailsGETCreate standalone adPOSTBoost post as adPOSTUpdate adPUTDuplicate an adPOSTCancel an adDELETEPause or resume a single adPUT

Keywords

List Search keywordsGETAdd Search ad-group keywordsPOSTPause or enable a Search keywordPATCHRemove a Search keywordDELETEList campaign-level negative keywordsGETReplace campaign-level negative keywordsPUTList campaign negative listsGETReplace campaign negative listsPUT

Bidding

Read a campaign's current biddingGETList portfolio bid strategiesGETCreate portfolio bid strategyPOSTUpdate portfolio bid strategyPATCH
Dashboard
llms.txtOpenAPI
OverviewPlatformsAPI ReferenceResources
Campaigns and Ads

List Search keywords

Returns the Google Search keyword criteria (positive and negative) synced from connected Google Ads accounts, one row per ad-group keyword. Refreshed about once a week per Google Ads customer (the keyword sweep rides the ads discovery pass on a slower slot, to stay inside Google's shared daily API quota), so keywords added on Google can take several days to appear. A customer synced for the first time is populated on the next discovery pass rather than waiting for its weekly slot, and connecting an account or triggering a manual sync refreshes it immediately. Campaign-level negative keywords are not included; only ad-group-level criteria are.


PlatformsGoogle
GET
/v1/ads/keywords

Authorization

bearerAuth
AuthorizationBearer <token>

API key authentication: send your Zernio API key in the Authorization header, prefixed with Bearer.

In: header

Query Parameters

page?integer

Page number (1-based)

Range1 <= value
Default1
limit?integer
Range1 <= value <= 500
Default50
accountId?string

Account ID

adAccountId?string

Platform ad account ID (Google customer ID). Mirrors the same filter on /v1/ads.

profileId?string

Profile ID

campaignId?string

Platform campaign ID

adSetId?string

Platform ad group ID (Google ad group)

status?string

Keyword criterion status

Value in

  • "active"
  • "paused"
matchType?string

Value in

  • "exact"
  • "phrase"
  • "broad"
  • "unknown"
negative?boolean

true = negative keywords only, false = positive only. Omit for both.

search?string

Case-insensitive substring match on the keyword text

Lengthlength <= 200

Response Body

application/json

application/json

application/json

{  "keywords": [    {      "id": "string",      "accountId": "string",      "profileId": "string",      "platform": "google",      "adAccountId": "string",      "campaignId": "string",      "campaignName": "string",      "campaignStatus": "string",      "adSetId": "string",      "adSetName": "string",      "adSetStatus": "string",      "keyword": "string",      "matchType": "exact",      "status": "active",      "negative": true,      "qualityScore": 0,      "syncedAt": "2019-08-24T14:15:22Z",      "metrics": {        "windowDays": 0,        "clicks": 0,        "impressions": 0,        "cost": 0,        "conversions": 0,        "firstPageCpc": 0,        "firstPositionCpc": 0      }    }  ],  "pagination": {    "page": 0,    "limit": 0,    "total": 0,    "pages": 0  }}
Was this page helpful?

Pause or resume a single ad

Ad-scoped pause/resume: touches ONLY this ad, never its parent ad set or campaign (so sibling ads keep running). Thin wrapper over the `status` field of PUT /v1/ads/{adId}, for callers that want a URL symmetric to /v1/ads/campaigns/{campaignId}/status and /v1/ads/ad-sets/{adSetId}/status. `{adId}` accepts the same identifier dialects as GET/PUT /v1/ads/{adId} (Zernio hex `_id`, Meta numeric `platformAdId`, or the creative's effective story/media IDs). `platform` is inferred from the ad, so it's not required in the body. Ads in terminal statuses (rejected, completed, cancelled) and no-op flips (already in the target state) are skipped.

Add Search ad-group keywords

Adds one or more keyword criteria to an existing Google Search ad group, without touching the keywords already there (unlike the whole-set diff on `PUT /v1/ads/{adId}`, `keywords`/`negativeKeywords` in `platformSpecificData`, which replaces the set). Set `negative: true` to add ad-group-level negatives instead of positive keywords.