List campaign-level negative keywords
Returns the campaign-level negative keywords (campaign_criterion.negative),
distinct from the ad-group-level negatives under GET /v1/ads/keywords. Read
live from Google on every call (not synced to Postgres), and gated by the
shared Google Ads operations budget like every other on-demand Google surface.
The platform is always discovered from the campaign itself; a non-Google
campaign returns 501 rather than 404, whether or not platform was passed.
API key authentication - use your Zernio API key as a Bearer token
In: header
Path Parameters
Platform campaign ID
Query Parameters
Optional and NOT authoritative: the resolved campaign's own platform decides 200 vs 501, never this hint.
"facebook" | "instagram" | "tiktok" | "linkedin" | "pinterest" | "google" | "twitter" | "openai"Response Body
application/json
application/json
import Zernio from '@zernio/node';const zernio = new Zernio({ apiKey: process.env.ZERNIO_API_KEY });const { data } = await zernio.adcampaigns.listCampaignNegativeKeywords({ path: { campaignId: 'campaign_abc123', },});console.log(data);{
"keywords": [
{
"criterionId": "string",
"text": "string",
"matchType": "exact"
}
]
}{
"error": "Unauthorized"
}Add Search keywords to an ad group POST
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.
Remove a Search keyword DELETE
Removes one keyword criterion (positive or negative) from its ad group (M.140).