---
title: "Propose"
method: POST
path: "/api/v1/workspaces/{workspace_id}/changes"
---

# Propose

`POST /api/v1/workspaces/{workspace_id}/changes`

## Request

- Base URL: `https://ads.adace.website` (the document declares no server; this is the origin it was published from)
- URL: `https://ads.adace.website/api/v1/workspaces/{workspace_id}/changes`
- Auth: none declared

## Path parameters

- `workspace_id` string, uuid, required

## Request body

- ChangeInput: Пропозиція зміни. Вид визначає, яке з полів обов'язкове. budget: budget_minor; status: status; negative_keywords і keywords: keywords; ad_set_budget (Meta, F-1c): ad_set_id і budget_minor — денний бюджет однієї групи оголошень; ad_set_status / ad_status (F-2e): status і ad_set_id / ad_id — пауза чи увімкнення групи або оголошення. tracking_suffix (UTM ч.2, Google): url_suffix — новий суфікс кінцевої URL-адреси кампанії («» — прибрати). bid_strategy (F-2): bid_strategy і, за потреби, ціль — target_cpa_minor, target_roas, cpc_ceiling_minor (Google, кампанія) або bid_amount_minor з ad_set_id (Meta, група оголошень). extensions (F-2, Google): extensions — додаткові посилання й уточнення кампанії (лише додавання). ad_set_targeting (Meta): ad_set_id і targeting — лише змінювані поля таргетингу групи (TargetingPatch). ad_set_audiences (Google, Microsoft): ad_set_id і google_audiences — списки аудиторій групи (включення з коригуванням, виключення). extensions_remove (Google): extension_asset_ids — зняти розширення з кампанії (актив лишається в бібліотеці кабінету). campaign_targeting (Google): google_targeting — лише змінювані поля таргетингу кампанії (гео, мови, розклад, пристрої); Microsoft (08.10.2026) — countries: увесь новий перелік країн показу (коди ISO); LinkedIn (09.10.2026) — linkedin_targeting. keyword_update (Google, Microsoft): ad_set_id і keyword_changes — статус і/або ставка наявних ключових слів групи. ad_set_bid (Google, Microsoft): ad_set_id і cpc_bid_minor — ставка групи за замовчуванням (ручна ціна за клік); ChatGPT Ads ч.2Б — ad_set_id і openai_bidding (стратегія й ставка групи). keywords (08.10.2026): необов'язковий ad_set_id — група цієї кампанії, куди додати слова (інакше службова група). ad_final_url (Google, 29.09.2026): ad_id і final_url — кінцеве посилання наявного оголошення (з відкатом); Snapchat ч.2 — посилання креативу WEB_VIEW. ad_text (Google, Microsoft, 10.10.2026): ad_id і headlines та/або descriptions — нові тексти адаптивного пошукового оголошення (увесь перелік; незмінний перелік можна не передавати), з відкатом. Snapchat ч.2 — ad_id і snapchat_creative (заголовок, назва бренду, кнопка — лише змінювані). campaign_settings (LinkedIn, 09.10.2026): linkedin_settings — назва, дата завершення, загальний бюджет, статус групи кампаній, оптимізація автоматичної ставки, ротація креативів (лише змінювані поля). override_reason дозволяє власнику перевищити ліміт з обґрунтуванням.
  - `campaign_id` string, uuid, required
  - `kind` 'budget' | 'status' | 'negative_keywords' | 'keywords' | 'ad_set_budget' | 'ad_set_status' | 'ad_status' | 'tracking_suffix' | 'bid_strategy' | 'extensions' | 'ad_set_targeting' | 'keyword_update' | 'ad_set_bid' | 'campaign_targeting' | 'extensions_remove' | 'ad_set_audiences' | 'ad_group_targeting' | 'ad_final_url' | 'campaign_settings' | 'ad_text'
  - `ad_set_id` string, uuid, nullable
  - `ad_id` string, uuid, nullable
  - `budget_minor` string, nullable
  - `status` 'enabled' | 'paused', nullable
  - `keywords` KeywordInput[], nullable
    - `text` string, required
    - `match_type` 'EXACT' | 'PHRASE' | 'BROAD'
  - `url_suffix` string, nullable
  - `bid_strategy` 'MAXIMIZE_CONVERSIONS' | 'MAXIMIZE_CONVERSION_VALUE' | 'TARGET_SPEND' | 'MANUAL_CPC' | 'LOWEST_COST_WITHOUT_CAP' | 'COST_CAP' | 'LOWEST_COST_WITH_BID_CAP' | 'MAXIMUM_DELIVERY' | 'MANUAL_BID' | 'ENHANCED_CPC', nullable
  - `target_cpa_minor` string, nullable
  - `target_roas` string, nullable
  - `cpc_ceiling_minor` string, nullable
  - `bid_amount_minor` string, nullable
  - `extensions` ExtensionInput[], nullable
    - `type` 'sitelink' | 'callout' | 'structured_snippet' | 'call' | 'action', required
    - `text` string, required
    - `final_url` string, nullable
    - `description1` string, nullable
    - `description2` string, nullable
    - `values` string[], nullable
    - `country_code` string, nullable
  - `targeting` TargetingPatch: Зміна таргетингу групи Meta: лише передані поля; решта таргетингу лишається як є.
    - `countries` string[], nullable
    - `regions` RegionItem[], nullable
      - `key` string, required
      - `name` string, nullable
    - `cities` CityItem[], nullable
      - `key` string, required
      - `name` string, nullable
      - `radius` integer, nullable
      - `distance_unit` 'kilometer' | 'mile', nullable
    - `age_min` integer, nullable
    - `age_max` integer, nullable
    - `genders` 'all' | 'male' | 'female', nullable
    - `advantage_audience` boolean, nullable
    - `placements` PlacementsInput: Плейсменти групи Meta. Порожні publisher_platforms — автоматичні (Advantage+ placements); порожній перелік позицій платформи — усі її позиції; порожні device_platforms — усі пристрої.
      - `publisher_platforms` string[]
      - `facebook_positions` string[]
      - `instagram_positions` string[]
      - `audience_network_positions` string[]
      - `messenger_positions` string[]
      - `threads_positions` string[]
      - `device_platforms` string[]
    - `custom_audiences` TargetingItem[], nullable
      - `id` string, required
      - `name` string, nullable
    - `excluded_audiences` TargetingItem[], nullable
      - `id` string, required
      - `name` string, nullable
    - `interests` TargetingItem[], nullable
      - `id` string, required
      - `name` string, nullable
    - `languages` LocaleItem[], nullable
      - `key` integer, required
      - `name` string, nullable
  - `keyword_changes` KeywordChange[], nullable
    - `criterion_id` string, required
    - `status` 'enabled' | 'paused', nullable
    - `cpc_bid_minor` string, nullable
  - `cpc_bid_minor` string, nullable
  - `google_targeting` GoogleTargetingPatch: Редагування Google ч.2: лише змінювані поля таргетингу кампанії; кожен перелік — повний новий.
    - `locations` GooglePlace[], nullable
      - `id` string, required
      - `name` string, nullable
    - `excluded_locations` GooglePlace[], nullable
      - `id` string, required
      - `name` string, nullable
    - `languages` GooglePlace[], nullable
      - `id` string, required
      - `name` string, nullable
    - `schedule` ScheduleSlot[], nullable
      - `day` 'MONDAY' | 'TUESDAY' | 'WEDNESDAY' | 'THURSDAY' | 'FRIDAY' | 'SATURDAY' | 'SUNDAY', required
      - `start_hour` integer, required
      - `start_minute` 0 | 15 | 30 | 45
      - `end_hour` integer, required
      - `end_minute` 0 | 15 | 30 | 45
      - `bid_modifier` number, nullable
    - `devices` object, nullable
  - `google_ad_group_targeting` GoogleAdGroupTargetingPatch: Demand Gen ч.1: лише змінювані поля таргетингу групи Google — гео, виключення, мови (кожен перелік — повний новий) і канали показу групи Demand Gen (усі шість прапорців). Ч.3: аудиторія групи Demand Gen — одна аудиторія кабінету або порожній перелік (прибрати аудиторію).
    - `locations` GooglePlace[], nullable
      - `id` string, required
      - `name` string, nullable
    - `excluded_locations` GooglePlace[], nullable
      - `id` string, required
      - `name` string, nullable
    - `languages` GooglePlace[], nullable
      - `id` string, required
      - `name` string, nullable
    - `channels` object, nullable
    - `audience` GooglePlace[], nullable
      - `id` string, required
      - `name` string, nullable
  - `google_audiences` GoogleAudiencePatch: Аудиторії групи Google: повний новий перелік включених і/або виключених списків.
    - `audiences` GoogleAudienceItem[], nullable
      - `id` string, required
      - `name` string, nullable
      - `bid_modifier` number, nullable
    - `excluded_audiences` GoogleAudienceItem[], nullable
      - `id` string, required
      - `name` string, nullable
      - `bid_modifier` number, nullable
  - `extension_asset_ids` string[], nullable
  - `final_url` string, nullable
  - `countries` string[], nullable
  - `linkedin_targeting` LinkedInTargetingPatch: LinkedIn ч.2 (09.10.2026): лише змінювані поля таргетингу кампанії; кожен перелік — повний новий (urn із пошуку LinkedIn).
    - `locations` LinkedInEntity[], nullable
      - `urn` string, required
      - `name` string, nullable
    - `excluded_locations` LinkedInEntity[], nullable
      - `urn` string, required
      - `name` string, nullable
    - `languages` LinkedInEntity[], nullable
      - `urn` string, required
      - `name` string, nullable
    - `job_functions` LinkedInEntity[], nullable
      - `urn` string, required
      - `name` string, nullable
    - `seniorities` LinkedInEntity[], nullable
      - `urn` string, required
      - `name` string, nullable
    - `industries` LinkedInEntity[], nullable
      - `urn` string, required
      - `name` string, nullable
    - `titles` LinkedInEntity[], nullable
      - `urn` string, required
      - `name` string, nullable
    - `skills` LinkedInEntity[], nullable
      - `urn` string, required
      - `name` string, nullable
    - `company_sizes` LinkedInEntity[], nullable
      - `urn` string, required
      - `name` string, nullable
    - `audience_network` boolean, nullable
    - `audience_expansion` boolean, nullable
    - `excluded_site_categories` string[], nullable
  - `linkedin_settings` LinkedInSettingsPatch: LinkedIn ч.5 (09.10.2026): точкові налаштування кампанії — лише змінювані поля (linkedin_settings.py).
    - `name` string, nullable
    - `end_date` string, nullable
    - `total_budget_minor` string, nullable
    - `group_status` 'active' | 'paused', nullable
    - `optimization` 'MAX_CLICK' | 'MAX_CONVERSION' | 'MAX_QUALIFIED_LEAD' | 'MAX_LEAD' | 'MAX_IMPRESSION' | 'MAX_REACH' | 'MAX_VIDEO_VIEW', nullable
    - `creative_rotation` 'OPTIMIZED' | 'ROUND_ROBIN', nullable
    - `frequency_cap` integer, nullable
  - `microsoft_settings` MicrosoftSettingsPatch: Microsoft ч.4 (09.10.2026): назва кампанії, Microsoft Audience Network, пошукові партнери — лише змінювані поля.
    - `name` string, nullable
    - `audience_network` boolean, nullable
    - `search_partners` boolean, nullable
    - `conversion_goals` string[], nullable
  - `microsoft_targeting` MicrosoftTargetingPatch: Microsoft ч.7 (09.10.2026): розклад показів (до 7 інтервалів на день, 49 разом), коригування за пристроями (усі три; 0 — не показувати) і намір місця кампанії — лише змінювані поля.
    - `schedule` ScheduleSlot[], nullable
      - `day` 'MONDAY' | 'TUESDAY' | 'WEDNESDAY' | 'THURSDAY' | 'FRIDAY' | 'SATURDAY' | 'SUNDAY', required
      - `start_hour` integer, required
      - `start_minute` 0 | 15 | 30 | 45
      - `end_hour` integer, required
      - `end_minute` 0 | 15 | 30 | 45
      - `bid_modifier` number, nullable
    - `devices` object, nullable
    - `location_intent` 'people_in' | 'people_in_or_interested', nullable
    - `locations` GooglePlace[], nullable
      - `id` string, required
      - `name` string, nullable
    - `excluded_locations` GooglePlace[], nullable
      - `id` string, required
      - `name` string, nullable
  - `negative_list` string, nullable
  - `headlines` string[], nullable
  - `descriptions` string[], nullable
  - `snapchat_targeting` SnapchatTargetingPatch: Snapchat ч.2 (10.10.2026): лише змінювані поля таргетингу групи (ad squad); кожен перелік — повний новий. Решта таргетингу (поштові індекси, метро, пристрої, розширення аудиторії) лишається як є (snapchat_targeting).
    - `countries` string[], nullable
    - `regions` SnapchatRegion[], nullable
      - `id` string, required
      - `name` string, nullable
      - `country` string, required
    - `age_min` integer, nullable
    - `age_max` integer, nullable
    - `gender` 'all' | 'male' | 'female', nullable
    - `languages` string[], nullable
    - `interests` SnapchatItem[], nullable
      - `id` string, required
      - `name` string, nullable
    - `custom_audiences` SnapchatItem[], nullable
      - `id` string, required
      - `name` string, nullable
    - `excluded_audiences` SnapchatItem[], nullable
      - `id` string, required
      - `name` string, nullable
  - `snapchat_creative` SnapchatCreativePatch: Snapchat ч.2: тексти креативу наявного оголошення — заголовок (до 34 символів), назва бренду (до 32) і кнопка; лише змінювані. Креатив змінюється латкою (PATCH) і проходить перевірку Snapchat знову.
    - `headline` string, nullable
    - `brand_name` string, nullable
    - `call_to_action` 'APPLY_NOW' | 'MORE' | 'ORDER_NOW' | 'PLAY' | 'READ' | 'SHOP_NOW' | 'SHOW' | 'SIGN_UP' | 'VIEW' | 'WATCH' | 'DONATE' | 'DOWNLOAD' | 'RESPOND' | 'BUY_TICKETS' | 'SHOWTIMES' | 'BOOK_NOW' | 'GET_NOW' | 'LISTEN' | 'TRY' | 'VOTE' | 'VIEW_MENU' | 'PRE_REGISTER' | 'PLAY_GAME', nullable
  - `reddit_targeting` RedditTargetingPatch: Зміна таргетингу групи Reddit: лише передані поля; решта таргетингу лишається як є. Порожній перелік — прибрати.
    - `geolocations` string[], nullable
    - `excluded_geolocations` string[], nullable
    - `communities` string[], nullable
    - `excluded_communities` string[], nullable
    - `interests` string[], nullable
    - `keywords` string[], nullable
    - `excluded_keywords` string[], nullable
    - `custom_audience_ids` string[], nullable
    - `excluded_custom_audience_ids` string[], nullable
    - `devices` RedditDevice[], nullable
      - `type` 'DESKTOP' | 'MOBILE', required
      - `os` 'ANDROID' | 'IOS', nullable
    - `languages` string[], nullable
    - `gender` 'all' | 'male' | 'female', nullable
    - `age_min` integer, nullable
    - `age_max` integer, nullable
    - `expand_targeting` boolean, nullable
    - `schedule` RedditSlot[], nullable
      - `start_day` integer, required
      - `start_hour` integer, required
      - `end_day` integer, required
      - `end_hour` integer, required
  - `reddit_headline` string, nullable
  - `reddit_body` string, nullable
  - `openai_bidding` OpenAiBidding: Ставка й стратегія групи ChatGPT Ads. fixed_bid — з max_bid (основні одиниці валюти, до 6 знаків: ставка за покази — за один показ); maximize_clicks і maximize_conversions — без ставки. Сервіс завжди пише в OpenAI увесь bidding_config.
    - `strategy` 'fixed_bid' | 'maximize_clicks' | 'maximize_conversions', required
    - `max_bid` string, nullable
  - `openai_creative` OpenAiCreativePatch: Зміна креативу оголошення ChatGPT Ads: заголовок 3–50 символів, текст до 100, ціна (рядок до 100). Сервіс читає креатив, змінює лише передані поля й пише увесь об'єкт; оголошення проходить перевірку знову.
    - `title` string, nullable
    - `body` string, nullable
    - `price` string, nullable
  - `openai_targeting` OpenAiTargetingPatch: Таргетинг кампанії ChatGPT Ads: країни, місця з довідника (id), виключені місця й платформи показу. Лише передані поля; сервіс читає весь targeting, замінює ці частини й пише його повністю (оновлення гео замінює старі критерії).
    - `countries` string[], nullable
    - `location_ids` string[], nullable
    - `excluded_countries` string[], nullable
    - `excluded_location_ids` string[], nullable
    - `platforms` string[], nullable
  - `openai_settings` OpenAiSettingsPatch: Розклад кампанії ChatGPT Ads: перший і останній день показу в часовому поясі кабінету (YYYY-MM-DD; "" — без дати).
    - `start_date` string, nullable
    - `end_date` string, nullable
  - `openai_context_hints` string[], nullable
  - `reason` string, required
  - `override_reason` string, nullable

## Response `201`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/adace/apis/adace-ads.md) · [All operations](https://skmtc.dev/adace/apis/adace-ads/llms.txt) · [OpenAPI document](https://skmtc.dev/adace/apis/adace-ads/revisions/c719d1ccac25?raw)
