Масовий запуск кампаній Unity Ads: що вміють xlsx-таблиці
Таблиці Bulk Campaign Management правлять таргетинг, ставки й розклади, але не бюджети, і не створюють кампанії з Automated Bidding. Розбір за докою Unity.
Масовий запускUnity API5 хв читання

Advertiser Public API замінив Advertising Management API: нова база, id апок, мікродолари, інші поля. Порядок міграції та що прибрано.

У вересні 2026 року Advertiser Public API замінив Advertising Management API (/advertise/v1). Якщо ваші скрипти чи сервіси ходять у старий API, їх доведеться переписувати: у нового інша база й префікс шляху, id апок стали UUID, гроші передаються в мікродоларах, частину полів перейменовано, частину прибрано. Дати вимкнення старого API в документації Unity немає.
Запис за вересень 2026 на сторінці What’s new in User Acquisition каже прямо: Advertiser Public API замінює Advertising Management API (/advertise/v1), а кому є інтеграція зі старим API, тому потрібно перейти на новий. Сторінка про керування кампаніями через API називає /advertise/v1 попередньою версією advertiser API. Через новий можна програмно керувати апками, кампаніями, ставками, ставками за сорсами й ROAS-цілями, бюджетами, креативами та креативними паками. У дашборді він лежить у Settings > API management.
Докладну мапу перенесення Unity винесла на окрему сторінку, Advertiser API migration reference. Усе нижче про маршрути, поля й порядок узято звідти. Сторінка сама каже, що написана для LLM-агентів, які пишуть код, а з дати на ній лише позначка «Last updated 2 months ago». Читається як довідник, а не як інструкція для людей.
Хост лишається колишнім, services.api.unity.com. Змінюються база й шлях:
prod: https://services.api.unity.com/ads/advertiser
staging: https://staging.services.api.unity.com/ads/advertiser
| Що | Старий API | Новий API |
|---|---|---|
| Префікс шляху | /advertise/v1 |
/public/v1 |
| Апка в шляху | apps/{campaignSetId} |
applications/{applicationId} |
| Авторизація | HTTP Basic (ключ service account) | HTTP Basic працює, додатково приймається Bearer JWT |
Приклад нового маршруту зі сторінки Unity:
…/ads/advertiser/public/v1/organizations/{orgId}/applications/{applicationId}/campaigns
Ключ service account лишається тим самим, але потрібні ролі й дозволи інші. Тому 403 із тим самим ключем, за довідником Unity, означає невидану роль, а не помилку в запиті. Як це шукати й лагодити, розібрано в статті про помилку 403 Invalid Credentials. Якщо у вас кілька організацій, ролі перевіряйте в кожній: про підключення кількох організацій є сторінка про кабінети.
Раніше апку визначали через campaignSetId, 24 символи hex. Тепер це applicationId у форматі UUID. Unity радить зберегти таблицю відповідності «старий id → новий»: без неї старі дані з новими маршрутами не звʼяжете.
Id кампаній, креативів і creative packs не змінюються, це, як і раніше, 24 символи hex. Чи переживає id креатива повторне завантаження, сторінка не каже й пропонує перевірити самому.
Раніше суми були десятковими рядками в доларах. Тепер це цілі числа в мікродоларах, 1 USD дорівнює 1 000 000. Приклади зі сторінки Unity: "2500.20" перетворюється на "2500200000", а ставка "0.201" на 201000. Зверніть увагу: у прикладах Unity сума подана в лапках, ставка без. Точний тип поля звіряйте зі схемою, а не з цією статтею.
Ціль за ROAS теж змінилася. Було goal із відсотком рядком ("12.34"), стало target із часткою числом (0.1234).
Переводити множенням на 1e6 не варто: дробове число біля межі округлення може дати хвіст. Надійніше різати рядок:
// "2500.20" -> 2500200000n, "0.201" -> 201000n
// знаки після шостого відкидаються, відʼємні суми не перевірялися
function usdToMicros(usd) {
const [whole, frac = ""] = String(usd).split(".");
return BigInt(whole + frac.padEnd(6, "0").slice(0, 6));
}
Вибірка з довідника Unity:
| Було | Стало | Примітка |
|---|---|---|
store |
store + обовʼязковий platform |
платформу тепер треба вказувати |
goal |
optimizationType |
installs став cpi, eventOptimization став appEventConversion |
scheduleStart / scheduleEnd |
start / end |
|
enabled |
paused |
сенс перевернуто |
biddingStrategy |
bidConfigurationMethod |
automated став auto |
cpiBids[] |
manualBids[] |
|
sourceBids[] |
manualSourceBids[] |
|
eventOptimizationBids[] |
appEventBids[] |
Найдорожча помилка тут — enabled → paused. Булеве значення переноситься механічно, а сенс у нього зворотний: якщо пересадити enabled: true у paused: true, жива кампанія стане на паузу, а вимкнена запуститься.
З обраних Unity прикладів:
GET …/apps став GET …/applications.GET …/organizations/{orgId}/campaigns?appIds={applicationId}.cpi-bids, source-bids, roas-bids, event-optimization-bids) злилися в один PATCH …/campaigns/{campaignId}/bids.PATCH …/campaigns/{campaignId}/budget-cap і PATCH …/campaigns/{campaignId}/targeting.PATCH …/assign-creative-pack і DELETE …/unassign-creative-pack.GET campaign?includeFields=….Про новий PATCH …/bids Unity пише, що він замінює весь набір ставок цього типу: треба слати повний масив, а [] очищає набір. Звідси практичний висновок: якщо раніше ви додавали одну ставку за сорсом окремим запитом, то тепер надсилання одного елемента зітре всі інші ставки за сорсами. Спершу прочитайте поточний набір, потім змінюйте й надсилайте цілком.
У новому API немає:
limitedAdTracking, connectionType, screenSize, screenDensity, allowedDevices, osMax.adomain.squareVideo: він не підтримується.Якщо ваша звʼязка спиралася на щось із цього списку, переписувати треба логіку, а не лише назви полів.
Порядок, який пропонує сама сторінка Unity:
optimizationType і start, решту дозаповнити через PATCH.Логіка зрозуміла: спершу те, на що посилається решта (апки та їхні id), потім самі кампанії, потім усе, що до них кріпиться.
Сторінки, які ми прочитали, мовчать про кілька речей, про які ви спитаєте першими:
/advertise/v1, ні строку, поки старий API ще працює, ніде не вказано. Вважати, що час є, не можна. Вважати, що його немає, теж: просто невідомо.DarkCore Ramet працює з Unity Ads через офіційний Unity API: організацію підключають ключем service account або своїм Unity ID. Пари «апка — гео» перетворюються на кампанії пачкою з превʼю до надсилання, а ставки, денний бюджет і паузи можна редагувати одразу в багатьох кампаній і кабінетів. Кожна зміна читається назад із Unity, перш ніж вважатися виконаною.
Залив через офіційний Unity API пачкою
DarkCore Ramet запускає й редагує кампанії Unity Ads пакетно через офіційний Unity API. Організацію підключаєте ключем service account.
Таблиці Bulk Campaign Management правлять таргетинг, ставки й розклади, але не бюджети, і не створюють кампанії з Automated Bidding. Розбір за докою Unity.
Масовий запускUnity API5 хв читання

Блеклист виключає апки зі ставок, вайтлист лишає лише список. Що про це пише Unity і чого в доках немає: ліміти, швидкість, автоблок.
Source app ID4 хв читання

Source App ID 000000000000 зʼявляється, коли в паблішера немає валідного store ID. Що сказано в довідці Unity, чого бракує і як перевірити вплив на обсяг.
Source app ID3 хв читання
