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.
Authorization
bearerAuth API key authentication: send your Zernio API key in the Authorization header, prefixed with Bearer.
In: header
Query Parameters
Page number (1-based)
1 <= value11 <= value <= 50050Account ID
Platform ad account ID (Google customer ID). Mirrors the same filter on /v1/ads.
Profile ID
Platform campaign ID
Platform ad group ID (Google ad group)
Keyword criterion status
Value in
- "active"
- "paused"
Value in
- "exact"
- "phrase"
- "broad"
- "unknown"
true = negative keywords only, false = positive only. Omit for both.
Case-insensitive substring match on the keyword text
length <= 200Response 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 }}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.