# API Яндекс Директа v5: Получить список кампаний

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

Обзор кампаний аккаунта: названия, статусы, состояние — для своей панели управления рекламой.

1. Отправь запрос: POST /json/v5/campaigns с method = get и params: SelectionCriteria (пустой — все кампании, или Ids, States, Statuses) и FieldNames — например, Id, Name, State, Status, DailyBudget.
2. Ответ — result.Campaigns. Метод возвращает не больше 10 000 объектов; если выборка обрезана, придёт LimitedBy — запроси следующую страницу через Page.Offset.
3. Ошибки уровня запроса приходят с HTTP 200 в объекте error — проверяй его наличие. Расход баллов виден в заголовке Units.

```bash
curl -X POST https://api.direct.yandex.com/json/v5/campaigns \
  -H "Authorization: Bearer $DIRECT_TOKEN" -H 'Content-Type: application/json; charset=utf-8' \
  -d '{"method": "get", "params": {"SelectionCriteria": {}, "FieldNames": ["Id", "Name", "State", "Status"]}}'
```

## Базовые URL

- Боевой: `https://api.direct.yandex.com`
- Тестовый (песочница): `https://api-sandbox.direct.yandex.com`
- Песочница (SOAP): `https://api-sandbox.direct.yandex.com/v5/{service}`

## Авторизация

Тип: OAuth 2.0

OAuth 2.0: приложение регистрируется заранее, OAuth-токен пользователя Директа передаётся в заголовке `Authorization: Bearer <токен>`.

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

### POST /json/v5/campaigns — Campaigns.get: получение кампаний

Тело: `"method": "get"` и `params`. Возвращает не больше 10 000 объектов; при обрезке выборки приходит `LimitedBy`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `method` | body | string | да | get |
| `params.SelectionCriteria.Ids` | body | array | нет | ID кампаний, до 1000; пустой SelectionCriteria — все кампании |
| `params.SelectionCriteria.Types` | body | array | нет | Типы кампаний |
| `params.SelectionCriteria.States` | body | array | нет | Состояния |
| `params.SelectionCriteria.Statuses` | body | array | нет | Статусы |
| `params.FieldNames` | body | array | да | Имена возвращаемых полей кампании |
| `params.Page.Limit` | body | integer | нет | Размер страницы |
| `params.Page.Offset` | body | integer | нет | Смещение |

## Нюансы

- Все запросы — HTTPS POST; в теле JSON всегда есть `method` и, как правило, `params`. Поддерживается и SOAP/XML.
- Ошибки уровня запроса приходят с HTTP 200 в объекте `error` (`request_id`, `error_code`, `error_string`, `error_detail`) — проверяйте наличие `error`, а не только статус.
- Ошибки отдельных объектов при `add`/`update` возвращаются в `Errors` соответствующего элемента результата.
- Заголовки ответа: `RequestId` (указывать в обращениях в поддержку), `Units` (`списано/остаток/суточный лимит`, например `10/20828/64000`), `Units-Used-Login`.
- Денежные значения в фильтрах Reports — целые числа, умноженные на 1 000 000.
- Товарные объявления работают через адрес `https://api.direct.yandex.com/v501/`.
- В песочнице действуют те же ограничения; данные удаляются через месяц после последнего обращения.

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

- [Выгрузить статистику рекламных кампаний](https://mcp-everything.ru/integrations/yandex-direct/scenarios/vygruzit-statistiku-reklamnyh-kampaniy.md)
- [Создать объявления в группе](https://mcp-everything.ru/integrations/yandex-direct/scenarios/sozdat-obyavleniya-v-gruppe.md)
- [Выгрузить ключевые фразы кампании](https://mcp-everything.ru/integrations/yandex-direct/scenarios/vygruzit-klyuchevye-frazy-kampanii.md)

---

Если этого недостаточно — официальная документация: https://yandex.ru/dev/direct/doc/ru/
Вся интеграция одним документом: https://mcp-everything.ru/integrations/yandex-direct.md
