# API Яндекс Директа v5: Выгрузить ключевые фразы кампании

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

Аудит семантики: какие фразы есть в кампании, их статусы и ставки.

1. Отправь запрос: POST /json/v5/keywords с method = get, SelectionCriteria.CampaignIds (до 10 кампаний) и FieldNames — например, Id, Keyword, AdGroupId, State, Status, Bid.
2. Поля StatisticsSearch и StatisticsNetwork замедляют ответ — запрашивай их только когда нужны.
3. Для больших кампаний листай через Page.Limit и Page.Offset.

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

## Базовые 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/keywords — Keywords.get: получение ключевых фраз

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `method` | body | string | да | get |
| `params.SelectionCriteria` | body | object | да | Нужен один из Ids, AdGroupIds, CampaignIds |
| `params.SelectionCriteria.Ids` | body | array | нет | ID фраз и автотаргетингов, до 10 000 |
| `params.SelectionCriteria.AdGroupIds` | body | array | нет | ID групп, до 1000 |
| `params.SelectionCriteria.CampaignIds` | body | array | нет | ID кампаний, до 10 |
| `params.FieldNames` | body | array | да | Возвращаемые поля; StatisticsSearch и StatisticsNetwork замедляют большие выборки |
| `params.Page` | body | object | нет | Limit и Offset |

## Нюансы

- Все запросы — 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/poluchit-spisok-kampaniy.md)
- [Создать объявления в группе](https://mcp-everything.ru/integrations/yandex-direct/scenarios/sozdat-obyavleniya-v-gruppe.md)

---

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