---
title: "Update an ad group"
method: PUT
path: "/api/v1/ad-groups/{id}"
tags: ["ad-groups"]
---

# Update an ad group

`PUT /api/v1/ad-groups/{id}`

## Request

- Base URL: `https://api.growomat.com`
- URL: `https://api.growomat.com/api/v1/ad-groups/{id}`
- Auth: HTTP bearer

Partial update. Send only the fields you want to change; omitted fields keep their values, and a field you do send replaces the stored value in full (arrays included). Changes reach the ad platforms on the next sync.

**Errors**

- `404 NOT_FOUND`: no ad group with this id in the active Space.
- `400 VALIDATION_ERROR`: the body failed validation; `details.issues[]` names each field.

## Path parameters

- `id` string, required

## Headers

- `X-Space-Id` string

## Request body

- AdGroupUpdate: Partial update of an ad group: any subset of `AdGroupCreate` fields. Omitted fields keep their values.
  - `_native` NativeExtensions: Settings that exist on one platform only, keyed by platform id (for example `google-ads`). Each value is a free-form object that is stored and returned exactly as sent; keys Growomat does not know are kept. Absent by default. Keys read by platforms whose ad is a post (on the ad, with the campaign as fallback): `postType` (`TEXT` or `IMAGE`), `postTitle`, `postBody`, `callToAction`, `imageUrl`, `videoUrl`, `videoThumbnailUrl`, `carouselCards` (`[{ imageUrl, destinationUrl }]`), `communities`, `interests`. Delivery keys read on the campaign: `objective`, `goalType`, `startTime`, `endTime`, `optimizationGoal`, `conversionPixelId`.
  - `campaignId` string: The campaign this ad group belongs to.
  - `name` string: Ad group name.
  - `status` 'ENABLED' | 'PAUSED' | 'REMOVED': A paused ad group serves nothing, whatever its ads say.
  - `type` string: The platform's ad group type. Leave the default unless the platform requires otherwise.
  - `cpc` number
  - `cpcBid` number: Default maximum cost per click for the ad group's keywords, in the campaign currency.
  - `audiences` AdGroupAudience[]
    - `type` string, required: The platform's audience type.
    - `id` string, required: The platform's audience id.
    - `bidAdjustment` number: Percent bid adjustment for this audience.
  - `customLabels` string[]: Free-form labels for your own grouping and reporting.
  - `trackingUrlTemplate` string: Tracking template for this ad group; overrides the campaign's.
  - `finalUrlSuffix` string: Query string appended to final URLs; overrides the campaign's.
  - `urlCustomParameters` object: Custom `{_name}` parameters available to tracking templates.

## Response `200`

OK. The result is in `data`. List responses also carry `meta` with `nextCursor` and `total`.

- SuccessEnvelope: The shape of every successful response.
  - `data` unknown, required
  - `meta` object: Present on list responses.
    - `nextCursor` union: Pass as `cursor` to get the next page. `null` on the last page.
      - string
      - number
    - `total` integer: Number of items in this page.

## Other responses

- `400`: The request is malformed or fails validation. `error.code` is `VALIDATION_ERROR` (with `details.issues[]` naming each field), `INVALID_REQUEST` (the body is not valid JSON or has the wrong shape), or one of the specific codes listed in this operation's description.
- `401`: The bearer token is missing, invalid, expired or revoked (`INVALID_TOKEN`).
- `403`: The token lacks the scope this operation needs (`INSUFFICIENT_SCOPE`), the plan is read-only (`READ_ONLY_MODE`), or the caller is not a member of the Space named in `X-Space-Id` (`NOT_A_MEMBER`).
- `404`: No such resource in the active Space (`NOT_FOUND`), or `X-Space-Id` names a Space that does not exist (`SPACE_NOT_FOUND`).
- `409`: The request conflicts with the current state, for example a delete blocked by dependents or a sync already running. This operation's description names the `error.code` values it can return.
- `429`: Too many requests (`RATE_LIMITED`). Wait for the number of seconds in the `Retry-After` header, then retry.

---

[API](https://skmtc.dev/growomat/apis/growomat-public-api.md) · [All operations](https://skmtc.dev/growomat/apis/growomat-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/growomat/apis/growomat-public-api/revisions/f02611b531aa?raw)
