---
title: "Add structured snippet extensions"
method: POST
path: "/api/v1/tools/google_add_structured_snippets/execute"
tags: ["Google Ads"]
---

# Add structured snippet extensions

`POST /api/v1/tools/google_add_structured_snippets/execute`

## Request

- Base URL: `https://adako.ai`
- URL: `https://adako.ai/api/v1/tools/google_add_structured_snippets/execute`
- Auth: HTTP bearer

Creates a structured snippet asset — a fixed header such as "Types" or "Brands" followed by 3–10 values — and links it to the account, a campaign or an ad group.
Use when: the user has a list that genuinely fits one of Google's headers.
Do not use when: no header fits. Google only accepts its own header list (Amenities, Brands, Courses, Degree programs, Destinations, Featured hotels, Insurance coverage, Models, Neighborhoods, Service catalog, Shows, Styles, Types); inventing one fails. Callouts are the right tool for free-form selling points.
The header must be Google's exact translation for the language of the ads. Pass header in English and, when the ads are not in English, language as Google's locale code (for example "de", "fr", "ja", "pt-BR", "zh-TW"): the tool sends Google's translated header, and refuses a header Google has not translated for that locale. When language is left out the header is sent in English and the preview warns if the campaign targets other languages. If you do not know the language of the ads, ask.
Each value is 25 characters or fewer (12 in Chinese, Japanese or Korean) and at least three values are required. An identical header+values snippet already linked at the same level is skipped.
If you are unsure which account, campaign or period the user means, ask them — do not guess ids or dates.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `arguments` object, required
    - `customer_id` string: Google Ads customer id (10 digits, dashes optional). Omit to use the primary account; list_connected_accounts shows the valid ids.
    - `campaign_id` string: Attach at campaign level. Leave out to attach to the whole account.
    - `ad_group_id` string: Attach at ad group level. Narrower than campaign level.
    - `header` 'Amenities' | 'Brands' | 'Courses' | 'Degree programs' | 'Destinations' | 'Featured hotels' | 'Insurance coverage' | 'Models' | 'Neighborhoods' | 'Service catalog' | 'Shows' | 'Styles' | 'Types', required: One of Google's predefined snippet headers, in English; see language.
    - `language` 'en' | 'ar' | 'bg' | 'ca' | 'zh-HK' | 'zh-CN' | 'zh-TW' | 'hr' | 'cs' | 'da' | 'nl' | 'en-AU' | 'en-GB' | 'et' | 'fil' | 'fi' | 'fr' | 'de' | 'el' | 'iw' | 'hi' | 'hu' | 'id' | 'it' | 'ja' | 'ko' | 'lv' | 'lt' | 'ms' | 'no' | 'pl' | 'pt-BR' | 'pt-PT' | 'ro' | 'ru' | 'sr' | 'sk' | 'sl' | 'es-419' | 'es' | 'sv' | 'th' | 'tr' | 'uk' | 'vi': Google locale code of the ad text, e.g. "de", "es-419", "ja". The header is sent as Google's exact translation for it. Omit for English.
    - `values` string[], required: 3–10 values, 25 characters or fewer each.
    - `idempotency_key` string: Optional caller-supplied key; identical keys never execute twice.

## Response `200`

The tool ran. A write returns proposal_id and approve_url while the change waits for approval.

- SuccessEnvelope
  - `success` unknown, required
  - `tool` string, required
  - `data` object, required: Machine-readable result.
  - `markdown` string, required: The same result written for a person or a model.
  - `quota` Quota: Task usage for the current billing period.
    - `plan` string
    - `used` integer
    - `limit` integer
    - `period_end` string
    - `upgrade_url` string
  - `proposal_id` string: Present for writes. Nothing changes on the ad platform until it is approved.
  - `approve_url` string: Where a person approves the proposal.
  - `request_id` string, required

## Other responses

- `400`: Invalid arguments, or the ad account could not be resolved.
- `401`: Missing, invalid, revoked or expired API key.
- `402`: Monthly task quota used up, or the plan does not include this tool.
- `403`: The connected ad account lacks the access level this tool needs.
- `404`: Unknown tool name.
- `409`: Not connected, reconnect needed, confirmation required, a proposal already pending or no longer pending, an identical create that failed earlier today (proposal_failed_before), a create that duplicates an approved one (duplicate_create), the ad-account limit of the plan reached (account_limit), or an Idempotency-Key reused with different arguments.
- `429`: Rate limited by Adako or by the ad platform. See Retry-After.
- `500`: Unexpected error inside Adako.
- `502`: The ad platform returned an error.

---

[API](https://skmtc.dev/adako/apis/adako-rest-api.md) · [All operations](https://skmtc.dev/adako/apis/adako-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/adako/apis/adako-rest-api/revisions/59ee60d48a56?raw)
