This section lists codes and descriptions of errors and warnings in response messages from the Yandex Direct API version 5.
- Errors
- Warnings
| Error code | Message | Comments and possible reasons |
| Server errors | ||
|---|---|---|
| 52 | Authorization server temporarily unavailable | The Yandex Direct API server is temporarily unable to get information from the Yandex OAuth service. Try calling the method again later. |
| 1000 | Server temporarily unavailable | Internal error on the Yandex Direct API server. Try calling the method again later. If the error persists, contact the support service. |
| 1001 | Service initialization error | |
| 1002 | Operation error | |
| 1003 | Couldn’t create a Yandex user account | An error occurred when creating the account. Try calling the method again later. |
| 1004 | Couldn’t create client | An error occurred when creating a client in Yandex Direct. Try calling the method again later. Use a different username to repeat the request. |
| 1020 | Internal server error | The list of available currencies isn’t defined. Contact the Support service. |
| Authentication error | ||
| 53 | Authorization error |
Invalid OAuth token. The reasons for a token becoming invalid are listed in the section Revoking tokens in the Yandex OAuth guide. |
| Incomplete app registration | ||
| 58 | Incomplete registration | You must submit a request for API access and wait for it to be approved. |
| Permission errors | ||
| 54 | No rights |
|
| 513 | Your login is not enabled for Yandex Direct | The request is on behalf of a user who doesn’t have a Yandex Direct account. To register an account, create an advertising campaign in this user’s name in the web interface. See also Access and authorization. |
| 3000 | No API access |
|
| 3001 | No access to the method |
Access to the AgencyClients.add method is granted to the agency on request. |
| Restrictions, points | ||
| 152 | Not enough Yandex units | |
| 506 | Exceeded limit on number of connections | You have reached the maximum number of simultaneous connections to the Yandex Direct server. |
| Unsupported fields, objects, and operations | ||
| 3500 | Not supported | Attempt to add bid adjustment is not compatible with the campaign type. |
| 3600 | Limited functionality | Attempt to use the PAY_FOR_CONVERSION or PAY_FOR_CONVERSION_PER_CAMPAIGN strategy. |
| Invalid request parameters | ||
| 4000 | Invalid request parameters |
|
| 4001 | Invalid SelectionCriteria filter parameters |
|
| 4002 | Invalid page settings | Invalid value for the Limit or Offset parameter. |
| 4003 | All required parameters were omitted | The request must contain at least one parameter from the set, but none of them were specified. |
| 4004 | More than one parameter was passed | Mutually exclusive parameters were specified. Only one of them can be present in the request. |
| 4005 | A single type of Id must be used within a request | Bids are set with IDs of heterogeneous objects (for example, one Bids structure has CampaignId, but the other structure has AdGroupId). |
| 4006 | Incompatible operations are entered in the same request | To edit ad callouts, either use the ADD and REMOVE operations, or use the SET operation. |
| Invalid field value | ||
| 5000 | Required field | A required field is empty, or the value consists of spaces. |
| 5001 | Exceeded allowed length |
|
| 5002 | Forbidden symbols used |
|
| 5003 | Empty value specified | There is an empty string, for example, in the Href parameter in an ad. |
| 5004 | Invalid format |
Incorrect value for an object field, such as:
|
| 5005 | Field set incorrectly |
Incorrect value for an object field, such as:
|
| 5006 | Invalid use of field |
|
| 5007 | Duplicated element | Sitelink texts are duplicates, or they link to the same webpage. |
| 5008 | All required fields were omitted | The object must have at least one field specified from the set, but none of them are specified. |
| 5009 | More than one field was passed | The object has mutually exclusive fields specified. |
| 5100 | Incorrect template use | Incorrect use of templates (##) in the ad title and text. |
| 5120 | Geotargeting set incorrectly |
|
| 5140 | Keyword contains too many words | Exceeded the number of words in a keyword. |
| 5141 | Incorrect use of stop words | A keyword consists exclusively of stop words. |
| 5142 | Exceeded the maximum word length in a keyword | |
| 5160 | Negative keyword can’t be a phrase | Attempt to use a negative keyword with a space in it. |
| 5161 | Incorrect use of negative keywords |
|
| 5162 | Exceed the maximum length of a negative keyword | |
| 5181 | You cannot change the advertised application | |
| 5200 | Login already in use | Attempt to create a client with a login name that is already used by another Yandex account. |
| Inconsistent object | ||
| 6000 | Inconsistent object state |
|
| 6001 | Wrong object type specified |
|
| 6100 | The display region doesn’t match the ad text (title, text, sitelinks) | When trying to change the display region in a group, the ad language was not appropriate for the new region (for example, the ad has Kazakh letters, but geotargeting is being changed to Russia) |
| 6101 | Language doesn’t match geotargeting | When adding or modifying ads, display region compatibility was violated (for example, an ad was created in Ukrainian but geotargeting is set to Russia) |
| Object restrictions | ||
| 7000 | Number of allowed elements exceeded or equal to zero |
|
| 7001 | Reached the maximum number of objects |
|
| 7002 | This tracking system domain isn’t supported | |
| Request parsing errors | ||
| 55 | Operation not found | Invalid value specified for the method key in a JSON request. |
| 8000 | Invalid request |
|
| Can’t perform operation | ||
| 8300 | Invalid object status |
|
| 8301 | Can’t delete object |
|
| 8302 | Displays can’t be suspended | Attempt to suspend the only active keyword in a group (if there are no audience targets). |
| 8303 | Object can’t be archived |
|
| 8304 | Object can’t be unarchived |
|
| 8305 | Can’t perform action | Attempt to change the daily budget amount more than 3 times during the same day. |
| 8312 | Can’t build a report in online mode | A report with the specified parameters can only be generated in offline mode. Change processingMode in the HTTP request header. See the section Online and offline reports. |
| 8600 | Error enabling the shared account | |
| Object not found | ||
| 8800 | Object not found |
|
| Limits on the number of objects in operations in a single request | ||
| 9300 | Exceeded the limit on the number of objects in operations in a single request | Exceeded the maximum number of objects in the method’s input array |
| 9301 | Selection condition is too broad | Exceeded the maximum number of selected adjustments. The total of the Limit and Offset values must not exceed 120,000. |
| Dependency of bids on strategies | ||
| 9600 | The field does not correspond to the set strategy | The request does not have a field that is required in certain conditions (for example, Bid in the Bids.Set method for manual display strategies). |
| 9601 | Bid can’t be changed |
|
| Duplicated objects | ||
| 9800 | An object can’t be in the request more than once | A single call of the update, set, or delete method contains multiple objects with the same ID |
| 9801 | An object with the specified characteristics already exists | Attempt to add an adjustment that already exists (for example, repeatedly adding a mobile adjustment or an adjustment for the same target audience). |
| 9802 | An item can’t be in the list more than once |
|
| Warning code | Message |
|---|---|
| 10000 | The object is in the request more than once |
| 10020 | The object is already suspended. |
| 10021 | The object is not suspended. |
| 10022 | The object is already archived. |
| 10025 | The object is already marked as deleted |
| 10100 | The specified vCard duplicates a previously created vCard |
| 10120 | The specified set of sitelinks duplicates a previously created set |
| 10140 | Keyword already exists |
| 10141 | New keyword created as the result of updating |
| 10160 | Bid won’t be applied |
| 10161 | Priority won’t be applied |
| 10163 | Setting won’t be changed |
| 10165 | Parameter won’t be applied |
| 10200 | Ad already paused |
| 10201 | Ad not paused |
| 10202 | Ad already archived |
| 10203 | Ad not archived |
| 10240 | Keyword already stopped |
| 10241 | Keyword not stopped |
| 10242 | Dynamic text ad target is already stopped |
| 10243 | Dynamic text ad target is not stopped |
Сегодня мы подробно разберем процесс получения OAuth-токена для доступа к Яндекс.Директ API. Впервые сталкиваясь с процессом получения токена, будь-то API от Google или Яндекса, я по-началу терялся в заявках, регистрациях и прочей бюрократической вакханалии. Поэтому я, буквально, за руку проведу тебя к заветному апи-токену, который мы сразу и проверим.
Как следует из справки Яндекс.Директ API, вся процедура делится на два этапа:
- Регистрация на сервисе Яндекс.OAuth
- Создание заявки на доступ к API
Авторизуемся из под аккаунта с кабинетом Яндекс.Директ, данные которого нас интересуют. Переходим на страницу oauth.yandex.ru, и жмем на желтую кнопку «Зарегистрировать новое приложение». И заполняем поля, согласно плану:
- Название приложения*: DirectDataDealer
- Описание приложения: Необязательное. Но я всё таки напишу: Приложение для проброса данных в системы сквозной аналитики
- Иконка приложения: Необязательное.
- Ссылка на сайт приложения: Необязательное.
- Платформы: Веб-сервисы и в поле Callback Url жмем Подставить URL для разработки.
- Доступы*: Яндекс.Директ -> Использование API Яндекс.Директа
Отлично, приложение создано, на выходе получится что-то похожее на это:

Отлично, пол дела сделано, осталось запросить доступ к API.
Создаем заявку на доступ к Яндекс.Директ API
Теперь создадим заявку, тут всё довольно просто. Идём сюда и создаем заявку на доступ. Начинаем заполнять:
- Введите application_id или выберите из списка*: В дропменю выбираем наше приложение в моём случае это DirectDataDealer.
- Укажите один или несколько контактов, по которым с вами быстро сможет связаться служба поддержки*: Пишем ваш мейл.
- Данные о компании: Скорее всего у вас или у вашего клиента уже есть сайт, в моем случае Akulshin.ru и https://akulshin.ru/
- Выберите утверждение, которое лучше всего описывает специфику вашей работы. Вы:* Я прямой рекламодатель, а вы?
- Технические данные о приложении: Язык программирования — Python, протокол — Json, версия библиотек — 3.8. В примерах из моих статьей используются именно эти версии.
- Для примера успешной работы приложения, укажите один или несколько логинов в Директе, для которых оно используется*: Абсурд, если вы регистрируете своё первое приложение, то просто укажите текущий логин в Яндексе.
- Для чего предназначено приложение*: В моем случае это — Синхронизировать рекламные материалы с данными внутренних систем (товары, деньги, отчетность)
- Основные функции приложения*: Получение статистики и отчетов
- Какие новые возможности работы с Директом дает ваше приложение пользователям?*: Я написал, что «Агрегирую данные в сквозной аналитике и предикторе. Получение статистики Яндекс.Директ и её дальнейшая обработка.»
- Опишите схему взаимодействия вашего приложения с Директом*: Программа запускается автоматически 2 раза в сутки, в основном используем метод «AccountManagement» и сервис Campaign для получения статистики, далее передаем в базу, где обрабатываем.
- Спецификации, скриншоты интерфейса*: Либо нарисуйте блок-схему обработки данных, либо как я заскриньте IDE, пусть какому-нибудь модеру из Яндекса станет за вас стыдно.
- По возможности предоставьте нам демо-доступ к программе: Игнорируем этот пункт
Бум! Всё готово, отправляем на рассмотрение. После прохождения, в итоге получим такую картину:

Получаем OAuth-токен Яндекс.Директ:
Существует 2 способа получения API-токена: Ручной и Автоматический
Так как мы не пишем приложение, которое будут использовать десятки авторизованных пользователей, то нам хватит и ручного получения токена. Теперь дело за малым, делаем запрос на выдачу «API-ключа», который мы будем использовать в нашем приложении. Для этого:
- Открываем новую вкладку в браузере и вводим в адресную строку https://oauth.yandex.ru/authorize?response_type=token&client_id=<идентификатор приложения> Идентификатор приложения берем отсюда:
- Переходим по ссылке https://oauth.yandex.ru/
- Жмем на наше приложение, DirectoDataDealer, в моем случае.
- И копируем из поля ID: 78d2c09*************efbc6a64f6e
- Вставляем ID вместе <идентификатор приложения>, жмем Enter
- О чудо, перед нами явился наш Auth-токен
Ну что, всё готово для тестового запроса, поехали?
Тестовый запрос для проверки работы Яндекс.Директ API:
Давайте запросим список текущих рекламных кампаний в кабинете?
Код примера:
import requests
def get_campaigns(login, token):
# адрес для отправки json-запросов
url = 'https://api.direct.yandex.com/json/v5/campaigns'
# заголовки
headers = {"Authorization": "Bearer " + token, # OAuth-токен. Использование слова Bearer обязательно
"Client-Login": login, # Логин клиента рекламного агентства
"Accept-Language": "ru", # Язык ответных сообщений
}
# тело запроса
body = {"method": "get", # Используемый метод.
"params": {"SelectionCriteria": {},
# Критерий отбора кампаний. Для получения всех кампаний должен быть пустым
"FieldNames": ["Id", "Name"] # Имена параметров, которые требуется получить.
}}
# выполнить запрос
response = requests.post(url, json=body, headers=headers)
# Вытаскиваем список кампаний
campaigns = response.json()['result']['Campaigns']
# принтим
for campaign in campaigns:
print(campaign)
# Вызываем функцию и получаем список кампаний, не забудьте поменять вводные
get_campaigns('ВАШ ЛОГИН', 'ТОКЕН')
Полезные материалы для изучения:
- Регистрация приложения Яндекс.Директ API: https://yandex.ru/dev/direct/doc/dg/concepts/register.html
- Заявка на доступ к API: https://yandex.ru/dev/direct/doc/dg/concepts/register.html#request
При вызове метода возможно возникновение ошибок и предупреждений:
-
Ошибки, исключающие возможность выполнения запроса: неверный формат запроса (в том числе отсутствие обязательного параметра), неверный токен, недоступность сервера API и т. п.
-
Ошибки и предупреждения при выполнении операции с одним из объектов в запросе, которые не влияют на успешность выполнения операции с другими объектами. Подробно об ошибках операции читайте в разделе Операции над массивом объектов.
Коды и описания ошибок и предупреждений приведены в разделе Ошибки и предупреждения.
Примечание. Язык сообщений об ошибках определяется заголовком запроса Accept-Language.
Если выполнение запроса невозможно, возвращается следующая структура:
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Client</faultcode>
<faultstring>(string)</faultstring>
<detail>
<ns3:FaultResponse xmlns:ns3="http://direct.yandex.com/api/v5/general">
<requestId>(string)</requestId>
<errorCode>(int)</errorCode>
<errorDetail>(string)</errorDetail>
</ns3:FaultResponse>
</detail>
</SOAP-ENV:Fault>
| Парамет�� | Тип | Описание |
| Объект Fault | ||
|---|---|---|
faultstring |
string | Текст сообщения об ошибке. |
detail |
ApiExceptionMessage | Сведения об ошибке. |
| Объект ApiExceptionMessage | ||
requestId |
string | Уникальный идентификатор запроса, присвоенный сервером API Директа. Также передается в HTTP-заголовке RequestId. |
errorCode |
int | Числовой код ошибки. |
errorDetail |
string | Подробное описание ошибки. |
{
"error" : {
"request_id": (string),
"error_code": (int),
"error_string": (string),
"error_detail": (string)
}
}
| Параметр | Тип | Описание |
request_id |
string | Уникальный идентификатор запроса, присвоенный сервером API Директа. Также передается в HTTP-заголовке RequestId. |
error_code |
int | Числовой код ошибки. |
error_string |
string | Текст сообщения об ошибке. |
error_detail |
string | Подробное описание ошибки. |
API Яндекс.Директа – это интерфейс рекламной системы для разработчиков программ. Он позволяет автоматизировать работу с Яндекс.Директ и использовать все его функции – от получения статистики до создания рекламных кампаний с нуля. И всё абсолютно бесплатно.
Результат работы с API – ваше приложение по управлению контекстной рекламой в Яндекс.Директ с собственными настройками и алгоритмами. Кстати, для этого совсем не обязательно быть профи в программировании – достаточно базовых знаний PHP или Python.
Как всё это применять и что нужно, чтобы начать работу – смотрите в этой статье.
Для чего нужен API Яндекс.Директ
API Директа дает возможность разрабатывать и внедрять алгоритмы для управления рекламными кампаниями под ваши нужды. Это пригодится как агентствам, так и крупным рекламодателям, которые запускают и ведут масштабные кампании. Их деятельность предполагает множество рутинных действий, например:
- Массовое создание и редактирование кампаний, объявлений и ключевых фраз;
- Управление ставками;
- Получение статистики по показам и кликам;
- Прогноз бюджета.
Инструмент API позволяет создать приложение, в котором все нужные вам однотипные операции выполняются автоматически и в котором можно создавать удобные инструменты для просмотра и редактирования кампаний. Автоматизировать можно практически всё, даже обновление цены за клик по заданному вами алгоритму.
Вы разрабатываете что-то наподобие Директ Коммандера. Эта программа – готовое решение Яндекса на основе API Яндекс.Директа. Как её применять, смотрите руководство по старой и новой версиям.
Приложения, созданные по API Яндекс.Директа, рассчитаны на пользователей, у которых есть аккаунт в Директе. Это прямые рекламодатели, агентства и их клиенты с доступом только на чтение (могут только получать и просматривать данные) или на редактирование (они получают в API все те же самые функции, что в интерфейсе).
Структура API
По сути API Директа – это набор сервисов, каждый из которых привязан к конкретному классу объектов и имеет отдельный URL. Объекты API взаимосвязаны между собой, как показано на скриншоте:

Изображение из руководства Яндекса для разработчиков
Сервисы верхнего уровня – Campaign и AdGroup. Первый содержит настройки рекламной кампании, второй нужен для работы с группами объявлений.
На следующем уровне – сервисы Ad (параметры объявления), Keyword (ключевые фразы), Audience Target (условия нацеливания на аудиторию) и DynamicTextAdTarget (условия нацеливания для динамических объявлений).
Далее идут сервисы для работы с элементами объявления: AdImage (изображениями), VCard (виртуальной визиткой), SitelinksSet (блоком быстрых ссылок), AdExtension (расширением к объявлению).
Для управления условиями ретаргетинга и подбора аудитории есть специальный сервис – RetargetingList.
У каждого сервиса свой набор методов для выполнения операций с его объектами. Основные методы, которые доступны для всех объектов – это добавление (add), изменение параметров (update), удаление (delete) и получение параметров (get).
Есть также специфические методы, которые поддерживают определенные объекты. Например, отправление объявлений на модерацию (moderate) – метод для сервиса Ads. Весь список доступных методов по областям применения смотрите в документации API.
Итак, с чего начать, чтобы разработать собственное приложение для работы с контекстной рекламой в Яндекс.Директе? Во-первых, нужен доступ к API. Далее рассмотрим пошагово, как его получить.
Шаг 1: создание и регистрация приложения на Яндекс.OAuth
Авторизуйтесь в Яндекс.Директе. Используйте для этого аккаунт разработчика – именно от этого имени ваше приложение будет выполнять запросы и управлять данными.
Перейдите по ссылке oauth.yandex.ru. Нажмите кнопку «Зарегистрировать новое приложение»:

В правой части страницы – ссылки на справочные материалы для разработчиков.
Далее вы попадаете на форму «Создание приложения», где нужно указать все его необходимые параметры:

Обязательные опции помечены звездочкой, это «Название» и «Доступы». Но чем больше информации о приложении вы укажете, тем более прозрачно оно будет для пользователей. Они будут знать, какой именно программе разрешают доступ к своему аккаунту.
В блоке «Платформы» отметьте галочкой «Веб-сервисы»:

Появится поле адреса. В нем вы указываете, куда направлять пользователя после того, как он разрешил или отказал приложению в доступе. Адресов Callback URI может быть несколько, например, для тестового и боевого режима.
На этапе создания приложения нажмите ссылку «Подставить URL для разработки».

В поле появится тестовый адрес, который позволит получать отладочные токены вручную. Они нужны для проверки работы приложения, подробнее об этом далее в статье.
В блоке «Доступы» выберите «Яндекс.Директ» и отметьте «Использование API Яндекс.Директа»:

Завершите создание приложения:

На этом регистрация закончена. При этом OAuth-сервер Яндекса сразу же генерирует и показывает на странице идентификатор и пароль приложения.

Они понадобятся вам далее.
Шаг 2: создание заявки на доступ
В аккаунте Яндекс.Директа долистайте до нижнего меню и перейдите по ссылке «API»:

Далее нажмите «Получить доступ к API»:

Вы попадете на страницу настроек API. Чтобы она была доступна, нужно выполнить формальное требование: в интерфейсе Яндекс.Директа должна быть минимум одна рекламная кампания с одним объявлением и одной ключевой фразой.
При первом входе нужно принять пользовательское соглашение:

На странице «Настройки API» перейдите на вкладку «Мои заявки», чтобы создать и отправить заявку на доступ к API. Нажмите кнопку «Новая заявка» и выберите её тип.

Тестовый доступ – это ограниченный доступ к API, то есть только к Песочнице – тестовой среде для отладки приложений. Она имитирует работающие рекламные кампании, их достаточно для того, чтобы протестировать и отладить приложение. Полный доступ (боевой) дает возможность управлять реальными рекламными кампаниями клиентов.
Так как приложение еще не разработано, создайте заявку на тестовый доступ. Для этого:
1) Из выпадающего списка выберите идентификатор, который получили после регистрации приложения на OAuth-сервере:

2) Укажите email для связи со службой поддержки;
3) Заполните остальные данные о приложении по максимуму – укажите, для чего оно предназначено, его основные функции и возможности и т.д.:

4) Подтвердите согласие с пользовательским соглашением и отправьте заявку.

Статус заявки отслеживайте здесь же – на вкладке «Мои заявки» в настройках. Дождитесь её одобрения – это может занять до 7 дней. Только после этого можно начинать разрабатывать приложение. В случае отклонения – узнайте причины и исправьте ошибки.
На стадии рассмотрения можно преобразовывать заявку на ограниченный доступ в заявку на полный доступ. После внесения любых изменений она автоматически отправляется на повторное рассмотрение.
На вкладке «Мои приложения» можно увидеть, какие приложения уже имеют доступ к аккаунту Яндекс.Директ через API. В том числе, если вы использовали Директ.Коммандер, он появится в этом списке:

Шаг 3: создание тестового пользователя и тестовых данных для него
1) Зарегистрируйте аккаунт тестового пользователя в Яндекс.Директе;
2) Создайте от его имени рекламную кампанию в интерфейсе Яндекс.Директа – достаточно одного объявления с одним ключевиком, чтобы получить доступ к API;
3) В разделе API интерфейса Директа нажмите ссылку «Получить доступ к API» и примите пользовательское соглашение;
4) Включите песочницу – среду для отладки приложения, где можно управлять тестовыми кампаниями без реальных показов и внесения средств.
Для этого откройте вкладку «Песочница» на странице настроек API и начните ею пользоваться:

В следующем окне задайте параметры песочницы:

Поставьте галочку «Создать тестовые кампании». Если вы выбрали роль «Клиент» создаются три кампании. Для роли «Агентство» – 3 клиента с 3 кампаниями, их логины формируются автоматически. На одну кампанию каждого клиента зачисляется некоторая сумма.
Включение флажка «Общий счет» создает клиента с подключенным общим счетом. Для агентства опция недоступна.
Нажмите «Продолжить», чтобы начать управлять песочницей.
Внимание! Если сменить параметры, все данные удаляются. Нужно создавать песочницу заново.
5) От имени тестового пользователя получите отладочный токен. С помощью него можно проверять работу приложений.
Когда пользователь авторизуется в Яндекс.Директе и нажимает кнопку «Подтвердить», то есть дает доступ к своим данным приложения, сервер Яндекса генерирует токен и передает его приложению.
Как всё происходит:
- Приложение направляет пользователя на страницу Яндекс.OAuth;
- На этой странице пользователь разрешает доступ к своим данным приложению;
- Яндекс.OAuth перенаправляет пользователя на адрес, указанный в поле Callback URL. Код подтверждения или описание ошибки передается в параметре URL перенаправления;
- Приложение получает адрес перенаправления и извлекает код подтверждения;
- Приложение отправляет POST-запрос с этим кодом;
- Яндекс.OAuth возвращает токен в теле ответа.
Если объяснять с технической стороны, запрос к API выполняется по протоколу HTTPS методом POST (отправление данных). В этом запросе содержится HTTP-заголовок с токеном пользователя, от имени которого осуществляется запрос. Ответ содержит заголовок RequestId – это уникальный идентификатор запроса.
Некоторые приложения (например, консольные или установленные на телевизорах Smart TV) не могут получить код подтверждения из URL. В этом случае пользователь самостоятельно его получает от Яндекс.OAuth и вводит в приложении или на странице авторизации.
Полученный токен используется для запросов к API до истечения времени его жизни. Он должен быть доступен только вашему приложению, поэтому лучше не сохранять его в куках браузера.
Далее вы выполняйте запросы к песочнице. Вот пример запроса:

Практика использования API Яндекс.Директ
В инструменте API множество методов для разных объектов, многие из них дорабатываются и улучшаются со временем. Рассмотрим подробно, как их применять на практике.
Для примера возьмем создание отчета по поисковым запросам, прогноз бюджета и ретаргетинг. Этому действию соответствует метод CreateNewWordstatReport. Он запускает на сервере формирование отчета о статистике поисковых запросов. Это занимает не больше минуты.
Отчет содержит ту же статистику, которая доступна в сервисе Яндекс Wordstat за прошедший месяц.
Ограничения:
- За сутки можно получить статистику для тысячи фраз;
- На сервере хранится максимум 5 отчетов по всем кампаниям;
- Отчеты хранятся на сервере в течение 5 часов, а затем автоматически удаляются.
Так выглядит структура входных данных в формате JSON:
{
«method»: «CreateNewWordstatReport»,
«param»: {
/* NewWordstatReportInfo */
«Phrases«: [
(string)
…
],
«GeoID«: [
(int)
…
]
}
}
Phrases – это массив ключевых фраз, по которым нужно получить статистику поисковых запросов (добавить можно не более 10). минус-фразы из нескольких слов пишите в скобках, например: холодильник -морозильник -(морозильная камера) -ремонт.
GeoID – идентификаторы регионов, по которым нужно получить статистику поисковых запросов. Можно исключить регион, поставив минус. Если вы не указали этот параметр, либо указали только минус-регионы, либо минус-регионы совпадают c плюс-регионами, статистика выдается по всем регионам.
Вообще в API Яндекс.Директа можно решать самые разнообразные задачи, например:
— Интегрировать функции Яндекс.Директ и данные из собственной базы.
Примеры применения: автоматическое добавление в ключевые фразы названий брендов или моделей товаров, остановка / возобновление показов объявлений в зависимости от наличия товаров на складе, обновление текстов объявлений при изменении прайс-листа. И многое другое, в зависимости от данных, которые у вас есть;
— A/B-тестирование объявлений.
Принцип тот же, что в интерфейсе: в самом начале все варианты из группы объявлений показываются равномерно. По мере накопления статистики система выбирает объявление с самым высоким CTR (самое привлекательное по мнению целевой аудитории) и показывает его чаще;
— Мониторинг и анализ эффективности рекламных кампаний.
Можно настроить автоматическое получение сводной и детальной статистики по показам, кликам, конверсиям и другим показателям и выгрузку её в сторонние программы (системы поддержки принятия решений, системы финансового учета и т.д.)
Все примеры использования API смотрите в меню «Практика использования» по ссылке.
Важное преимущество программы на основе API – при просмотре и редактировании кампаний, рекламных групп, объявлений и ключевых фраз не нужно ждать загрузки страниц, как в интерфейсе Яндекс.Директа. И конечно, это экономит время специалистов по настройке контекстной рекламы.
Хотите тоже написать статью для читателей Yagla? Если вам есть что рассказать про маркетинг, аналитику, бизнес, управление, карьеру для новичков, маркетологов и предпринимателей. Тогда заведите себе блог на Yagla прямо сейчас и пишите статьи. Это бесплатно и просто
Здесь приведено решение наиболее часто встречающихся ошибок в работе программы.
Не получается войти в программу
1) Повторите попытку в другом браузере (Opera, Firefox, Chome).
2) Наберите в браузере http://_адрес_программы/company/
если страница не существует (ошибка 404 Not Found), то
а) Проверьте наличие файла .htaccess в директории программы. Если его нет то залейте его из архива программы.
б) Для того чтобы файлы .htaccess можно было использовать, необходимы соответствующие настройки главного конфигурационного файла httpd.conf, где должны быть прописаны директивы, которые разрешат файлу .htaccess переопределять конфигурацию Web-сервера в каталоге. Список этих директив задается директивой AllowOverride. AllowOverride должен быть установлен в All.
если отобразиться форма для входа в программу, то
а) Проверьте наличие всех файлов программы, и в частности файла /js/general.js
б) Проверьте в каком регистре записан каталог и файл /js/JsHttpRequest/JsHttpRequest.js Вполне возможно что на хостинг он скопирован в нижнем регистре и возникает ошибка при его подключении. Если это так то перезалейте полностью каталог /js/JsHttpRequest с сохранением регистра в названии.
в) Проверьте указаны ли в файле /config.php данные для подключения к базе данных.
г) Проверьте работает ли сервер базы данных MySQL.
д) Проверьте задана ли в PHP директория на сервере для хранения сессии, параметр session.save_path. На эту директорию необходимо установить права 0777, если ее нет то нужно создать эту директориию. Если параметр session.save_path пустой то необходимо его прописать в конфигурационном файле PHP php.ini.
Не загружается сертификат
1) Повторите попытку в другом браузере (Opera, Firefox, Chome).
2) Установите права 0777 на директорию /cert и повторите попытку.
3) Проверьте чтобы архив с сертификатом открывался на компьютере обычным архиватором, если не открывается то пересоздайте сертификат заново.
4) Проверьте чтобы на сервере были установлены библиотеки PHP: zip, zlib, cURL и json. После устранения, необходимо повторить загрузку сертификата.
5) Установите параметр в php.ini mbstring.func_overload = 0 и повторите загрузку сертификата.
6) Проверьте что бы в PHP была указана директория для загружаемых файлов upload_tmp_dir, проверьте существует ли она физически, выставьте на нее права 0777.
0 баллов при загрузке сертификата
1) Установите права 0777 на директорию /cert и повторите попытку.
2) Проверьте чтобы архив с сертификатом открывался на компьютере обычным архиватором, если не открывается то пересоздайте сертификат заново.
3) Проверьте что бы сертификат был активным (не отозванным и не истёкшим) https://direct.yandex.ru/registered/main.pl?cmd=certList
4) Проверьте чтобы на сервере были установлены библиотеки PHP: zip, zlib, cURL и json. После устранения, необходимо повторить загрузку сертификата.
5) Доступ к API закрыт для пользователей «Легкого» интерфейса. Таким пользователям необходимо перейти на «Профессиональный» интерфейс. Доступ не предоставляется клиентам рекламных агентств: от их лица действуют агентства.
6) Если ничего из предложеного не помогло, то вероятно для данного пользователя доступ к API закрыт (ошибка API 510 Доступ заблокирован). В этом случае необходимо написать в службу поддержки API Яндекс Директ с просьбой открыть доступ к API на e-mail api@direct.yandex.ru
0 баллов при добавлении (обновлении) токена
1) Повторите попытку в другом браузере (Opera, Firefox, Chome).
2) Вы должны быть авторизованы в Яндекс под пользователем которого хотите добавить.
3) Проверьте чтобы на сервере были установлены библиотеки PHP: cURL и json.
4) Доступ к API закрыт для пользователей «Легкого» интерфейса. Таким пользователям необходимо перейти на «Профессиональный» интерфейс. Доступ не предоставляется клиентам рекламных агентств: от их лица действуют агентства.
6) Если ничего из предложеного не помогло, то вероятно для данного пользователя доступ к API закрыт (ошибка API 510 Доступ заблокирован). В этом случае необходимо написать в службу поддержки API Яндекс Директ с просьбой открыть доступ к API на e-mail api@direct.yandex.ru
Не происходит обновление ставок
1) Проверьте что бы кампания была активна и шли фактические показы объявлений. Для кампаний остановленных, с нулевым балансом, остановленным по временному таргетингу программа не корректирует цены.
2) Проверьте что бы в Директе была выставлена стратегия «Наивысшая доступная позиция».
3) Проверьте что бы в программе на кампании был указан основной режим. Если его нет программа не корректирует ставки.
4) Проверьте что бы было корректно установлено задание крона на выполнение скрипта cron.php с интервалом каждые 10 минут.
5) Уберите ограничения для параметров max_execution_time и memory_limit, выставив в php.ini значения max_execution_time = 0 и memory_limit = -1.
6) Посмотрите на возможные ошибки, запустив файл cron.php через консоль ssh (Предварительно выставьте в настройках программы интервал обновления 1 минута). После выполнения должно появиться сообщение TIME START = .. ::TIME END = .. ::PRICES UPDATED::OK и произойти обновление ставок.
Установленная цена не соответствует стратегии в программе
1) Посмотрите что бы в программе была статистика изменения ставок, если ее нет то см. пункт «Не происходит обновление ставок».
2) Проверьте что бы в Директе была выставлена стратегия «Наивысшая доступная позиция».
3) Проверьте что бы баланс кампании позволял нахождение объявления на выбранной позиции. При цене клика превышающей баланс, объявление будет размещаться по доступной цене.
4) Проверьте, возможно на объявлениях и фразах указаны режимы отличные от режимов кампании
5) Попробуйте отключить автоброкер в Директе для этой кампании.
6) «Вылет» объявления на 10-20 минут возможен при увеличении цены, т.к. программа корректирует ставки каждые 10 минут, и Директ учитывает новые цены с задержкой. Попробуйте сменить режимы с +0.01 на +5% либо +10%.
Перерасход. Не работает ограничение дневного бюджета
1) Проверьте что бы было корректно установлено задание крона на выполнение скрипта cron.php с интервалом каждые 10 минут.
2) Программа отключает кампанию когда израсходовано >90% дневного бюджета. Остановка кампании мгновенно невозможна, кампания может находиться в статусе остановки 10-30 минут, пока не будет остановлена фактически. Это может вызвать перерасход средств. Укажите меньший дневной бюджет, с учетом перерасхода.
Не загружается ни одна кампания
1) Попробуйте обновить токен пользователя.
2) Проверьте чтобы на сервере были установлены библиотеки PHP: cURL и json.
3) Доступ к API закрыт для пользователей «Легкого» интерфейса. Таким пользователям необходимо перейти на «Профессиональный» интерфейс. Доступ не предоставляется клиентам рекламных агентств: от их лица действуют агентства.
Загружаются не все объявления (кампании, ключевые фразы)
1) Проверьте что бы было корректно установлено задание крона на выполнение скрипта cron.php с интервалом каждые 10 минут.
2) Вероятно не хватает памяти либо ограничено время выполнения скрипта. Уберите ограничения для параметров max_execution_time и memory_limit, выставив в php.ini значения max_execution_time = 0 и memory_limit = -1.
3) Посмотрите на возможные ошибки, запустив файл cron.php через консоль ssh (Предварительно выставьте в настройках программы интервал обновления 1 минута). После выполнения должно появиться сообщение TIME START = .. ::TIME END = .. ::PRICES UPDATED::OK и произойти обновление ставок.
При нажатии на кнопку «Обновить», состояние «Идет обновление» подвисает
Ошибка не критическая. Вероятно что служба Nginx прерывает соединение спустя какое-то время (секунд 60 обычно) после отправления запроса, это и вызывает подвисание. Это не сказывается на работе программы. Вся информация по кампаниям обновляетя автоматически с интервалом указанным в настройках программы.
Ошибка Notice: Undefined index: .. in /var/www/… on line XX
Измените в php.ini параметр error_reporting = E_ALL & ~E_NOTICE (после внесения изменений необходимо перегрузить apache).
Ошибка Zend Optimizer not installed
На хостинге отсутствует Zend Optimizer. Если Вы используете VDS то установите самостоятельно Zend Optimizer или обратитесь к хостеру.
Ошибка Fatal error: Unable to read XXX bytes in /var/www/… on line 0
1) Перезалейте файлы программы через ФТП-клиент в бинарном режиме (двоичный, bin, binary).
2) Память выделеная под PHP меньше 32M, увеличить ее можно изменив в php.ini параметр memory_limit (рекомендуется указывать не менее 256M)
Ошибка Fatal error: Incompatible file format: The encoded file has format major ID…
Используется версия программы не предназначеная для работы на данной версии PHP. Это случается, если программу расчитанную для работы на PHP 5.2 (Zend Optimizer) установить на PHP 5.3 (Zend Guard Loader). Архив программы для PHP 5.3 доступен по ссылке http://ваша_ссылка_на_архив/php53
Ошибка ERROR: Table ‘./direct/company’ is marked as crashed and should be repaired
Ошибка свидетельствует о том что таблица `company` повреждена. Для ее востановления необходимо выполнить следующий SQL-запрос: REPAIR TABLE `company` (Запрос выполняется через phpMyAdmin). Могут быть повреждены и другие таблицы, восстанавливаются аналогично: REPAIR TABLE `имя_таблицы`.