Сценарий из mcp-everything. Актуально на 2026-10-24.
Запускать типовые кампании из своей системы: под новый товар, город или акцию.
curl -X POST https://ads.vk.ru/api/v2/ad_plans.json \
-H "Authorization: Bearer $VKADS_TOKEN" -H 'Content-Type: application/json' \
-d '{
"name": "Кружки — осень 2026",
"status": "blocked",
"date_start": "2026-11-01 00:00:00",
"date_end": "2026-11-30 00:00:00",
"autobidding_mode": "max_goals",
"budget_limit_day": "1000",
"budget_limit": "20000",
"objective": "<цель кампании>",
"ad_groups": []
}'
https://ads.vk.ru/api/v2/Тип: OAuth 2.0
Токен получают методом POST /api/v2/oauth2/token.json (application/x-www-form-urlencoded) и передают в заголовке:
Токен живёт сутки (expires_in = 86400) и продлевается через refresh_token. На пару «client_id + пользователь» — не больше 5 токенов одновременно; запрос сверх лимита возвращает HTTP 403.
Authorization: Bearer {access_token}
Если status не передан, ставится active. Ответ: id (и ad_groups, если кампания создана с группами); 400 — ошибка валидации.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
name |
body | string | нет | Название кампании |
status |
body | string | нет | Статус, по умолчанию active |
date_start |
body | string | нет | Дата начала |
date_end |
body | string | нет | Дата окончания |
autobidding_mode |
body | string | нет | Стратегия ставок, например max_goals |
budget_limit_day |
body | string | нет | Дневной бюджет |
budget_limit |
body | string | нет | Общий бюджет |
objective |
body | string | нет | Цель кампании |
ad_groups |
body | array | нет | Группы объявлений |
Пример запроса:
POST /api/v2/ad_plans.json
{
"name": "My new campaign",
"status": "active",
"date_start": "2022-04-01 00:00:00",
"date_end": "2022-04-15 00:00:00",
"autobidding_mode": "max_goals",
"budget_limit_day": "1000",
"budget_limit": "5000",
"enable_utm": "False",
"enable_offline_goals": "False",
"objective": "playersengagement",
"ad_groups": []
}
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
limit |
query | integer | нет | Число групп, по умолчанию 20 |
offset |
query | integer | нет | Смещение |
_id |
query | integer | нет | Фильтр по ID (_id__in) |
_status |
query | string | нет | active, blocked, deleted |
_last_updated |
query | string | нет | Дата обновления с __lt, __lte, __gt, __gte |
sorting |
query | string | нет | id, name, status |
Ответ: id и banners (если объявления переданы).
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
name |
body | string | нет | Название группы |
status |
body | string | нет | По умолчанию active |
date_start |
body | string | нет | Дата начала |
date_end |
body | string | нет | Дата окончания |
budget_limit_day |
body | string | нет | Дневной бюджет |
budget_limit |
body | string | нет | Общий бюджет (кратно budget_limit_step) |
package_id |
body | integer | нет | Пакет (формат размещения) |
banners |
body | array | нет | Объявления: content, urls, textblocks |
targetings |
body | object | нет | Таргетинги: пол, возраст, гео, интересы, pads |
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
limit |
query | integer | нет | По умолчанию 20 |
offset |
query | integer | нет | Смещение |
_id |
query | integer | нет | Фильтр по ID (_id__in) |
_campaign_id |
query | integer | нет | Фильтр по кампании (_campaign_id__in) |
_status |
query | string | нет | active, blocked, deleted |
_updated |
query | string | нет | Дата обновления с __lt, __lte, __gt, __gte |
_url |
query | string | нет | Поиск по URL объявления (с учётом регистра) |
_textblock |
query | string | нет | Поиск по тексту объявления (с учётом регистра) |
_ и суффиксами __in, __ne, __lt, __lte, __gt, __gte.ad_groups нельзя запрашивать через fields в списке кампаний./api/v2/statistics/goals/...), in-app событиям (/api/v2/statistics/inapp/...) и офлайн-конверсиям.grant_type=agency_client_credentials.Если этого недостаточно — официальная документация: https://ads.vk.ru/en/doc/api/info/Authorization Вся интеграция одним документом: https://mcp-everything.ru/integrations/vk-ads.md