Сценарий из mcp-everything. Актуально на 2026-10-24.
Первый шаг интеграции: токен для своего кабинета или для клиентов агентства.
curl -X POST https://ads.vk.ru/api/v2/oauth2/token.json \
-d grant_type=client_credentials -d client_id=<client_id> -d client_secret=<client_secret>
# Продление
curl -X POST https://ads.vk.ru/api/v2/oauth2/token.json \
-d grant_type=refresh_token -d refresh_token=<refresh_token> -d client_id=<client_id> -d client_secret=<client_secret>
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}
В ответе: access_token, token_type, scope, expires_in, refresh_token.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
grant_type |
body | string | да | client_credentials, agency_client_credentials, authorization_code или refresh_token |
client_id |
body | string | да | ID клиента API |
client_secret |
body | string | нет | Секрет; нужен для client_credentials, agency_client_credentials, refresh_token |
agency_client_name |
body | string | нет | Клиент агентства/менеджера (или agency_client_id) |
agency_client_id |
body | string | нет | ID клиента агентства/менеджера |
code |
body | string | нет | Код из редиректа для authorization_code |
refresh_token |
body | string | нет | Refresh-токен для продления |
_ и суффиксами __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