# API VK Рекламы: Получить токен доступа к рекламному кабинету

Сценарий из mcp-everything. Актуально на 2026-10-24.

Первый шаг интеграции: токен для своего кабинета или для клиентов агентства.

1. Получи client_id и client_secret доступа к API в кабинете VK Рекламы.
2. Запроси токен для своего кабинета: POST /api/v2/oauth2/token.json с grant_type = client_credentials, client_id и client_secret (form-urlencoded). Для клиента агентства — grant_type = agency_client_credentials и agency_client_name или agency_client_id.
3. Токен живёт сутки (expires_in = 86400). Продлевай его тем же методом с grant_type = refresh_token, а не запрашивай новый: на пару «client_id + пользователь» — не больше 5 токенов одновременно, сверх лимита придёт 403.
4. Передавай токен в заголовке Authorization: Bearer <access_token>.

```bash
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>
```

## Базовые URL

- Боевой: `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}
```

## Методы сценария

### POST /api/v2/oauth2/token.json — Получение токена

В ответе: `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` в списке кампаний.
- Посуточная статистика доступна не больше чем за последние 365 дней.
- Временные токены удаляются автоматически после месяца без использования.
- Есть отдельные эндпоинты статистики по целям (`/api/v2/statistics/goals/...`), in-app событиям (`/api/v2/statistics/inapp/...`) и офлайн-конверсиям.
- Для агентств и менеджеров — ресурсы AgencyClients и ManagerClients и токен с `grant_type=agency_client_credentials`.

## Другие сценарии

- [Выгрузить статистику кампаний по дням](https://mcp-everything.ru/integrations/vk-ads/scenarios/vygruzit-statistiku-kampaniy-po-dnyam.md)
- [Создать кампанию с группой объявлений](https://mcp-everything.ru/integrations/vk-ads/scenarios/sozdat-kampaniyu-s-gruppoy-obyavleniy.md)

---

Если этого недостаточно — официальная документация: https://ads.vk.ru/en/doc/api/info/Authorization
Вся интеграция одним документом: https://mcp-everything.ru/integrations/vk-ads.md
