This API creates one or more negative keywords in an ad group of a keyword-bidded campaign. The request body must be a JSON array of one or more NegativeKeywordCreate objects (batch size up to 50). Each row is validated and persisted independently; the response array is returned in input order with a per-row code (success or failure) and details message.
On write, the submitted keywordText is trimmed and, for in-scope (campaignType, negativeMatchType) combinations, normalized to Polaris canonical form (for example, "Yellow-Banana" becomes "yellow banana"). The response keywordText echoes the stored form so the client can verify what was persisted. Out-of-scope match types (currently negativeBroad) and rows for tenants where normalization is not yet rolled out fall back to the legacy lowercase-trimmed form.
Per-row failure reasons include duplicate rows in the same request, duplicate rows that collapse to the same canonical text after normalization, keyword text over 80 characters after trim, disallowed (campaignType, negativeMatchType) pairs, and exceeding the per-ad-group cap of 500 enabled negative keywords.
400Whole-request failure — for example, request body is null, malformed JSON, or batch size exceeds the maximum of 50.
401Missing or invalid partner-API authentication headers.
403Negative keywords are not enabled for this tenant, or the caller lacks write access.
